001// license-header java merge-point 002// 003// Attention: generated code (by Metafacade.vsl) - do not modify! 004// 005package org.andromda.metafacades.uml; 006 007import java.util.Collection; 008 009/** 010 * State machines can be used to express the behavior of part of a system. Behavior is modeled as a 011 * traversal of a graph of state nodes interconnected by one or more joined transition arcs that are 012 * triggered by the dispatching of series of (event) occurrences. During this traversal, the state 013 * machine executes a series of activities associated with various elements of the state machine. 014 * 015 * Metafacade interface to be used by AndroMDA cartridges. 016 */ 017public interface StateMachineFacade 018 extends ModelElementFacade 019{ 020 /** 021 * Indicates the metafacade type (used for metafacade mappings). 022 * 023 * @return boolean always <code>true</code> 024 */ 025 public boolean isStateMachineFacadeMetaType(); 026 027 /** 028 * Represents a model element. It may be an Element or NamedElement. A named element is an 029 * element in a 030 * model that may have a name. An element is a constituent of a model. As such, it has the 031 * capability 032 * of owning other elements. 033 * @return ModelElementFacade 034 */ 035 public ModelElementFacade getContextElement(); 036 037 /** 038 * A special kind of state signifying that the enclosing region is completed. If the enclosing 039 * region 040 * is directly contained in a state machine and all other regions in the state machine also are 041 * completed, then it means that the entire state machine is completed. 042 * @return Collection<FinalStateFacade> 043 */ 044 public Collection<FinalStateFacade> getFinalStates(); 045 046 /** 047 * The first initial state (if any) found in this activity graph. Although technically many 048 * initial states per graph are allowed, it makes sense to have only one, for this reason we 049 * provide this property. 050 * @return PseudostateFacade 051 */ 052 public PseudostateFacade getInitialState(); 053 054 /** 055 * An abstraction that encompasses different types of transient vertices in the state machine 056 * graph. 057 * @return Collection<PseudostateFacade> 058 */ 059 public Collection<PseudostateFacade> getInitialStates(); 060 061 /** 062 * The first transition on the first initial state found for this activity graph. 063 * @return TransitionFacade 064 */ 065 public TransitionFacade getInitialTransition(); 066 067 /** 068 * An abstraction that encompasses different types of transient vertices in the state machine 069 * graph. 070 * @return Collection<PseudostateFacade> 071 */ 072 public Collection<PseudostateFacade> getPseudostates(); 073 074 /** 075 * Models a situation during which some (usually implicit) invariant condition holds. The states 076 * of 077 * protocol state machines are exposed to the users of their context classifiers. A protocol 078 * state 079 * represents an exposed stable situation of its context classifier: when an instance of the 080 * classifier 081 * is not processing any operation, users of this instance can always know its state 082 * configuration. 083 * @return Collection<StateFacade> 084 */ 085 public Collection<StateFacade> getStates(); 086 087 /** 088 * A directed relationship between a source vertex and a target vertex. It may be part of a 089 * compound 090 * transition, which takes the state machine from one state configuration to another, 091 * representing the 092 * complete response of the state machine to an occurrence of an event of a particular type. 093 * @return Collection<TransitionFacade> 094 */ 095 public Collection<TransitionFacade> getTransitions(); 096}