View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by Metafacade.vsl) - do not modify!
4   //
5   package org.andromda.metafacades.uml;
6   
7   import java.util.Collection;
8   
9   /**
10   * State machines can be used to express the behavior of part of a system. Behavior is modeled as a
11   * traversal of a graph of state nodes interconnected by one or more joined transition arcs that are
12   * triggered by the dispatching of series of (event) occurrences. During this traversal, the state
13   * machine executes a series of activities associated with various elements of the state machine.
14   *
15   * Metafacade interface to be used by AndroMDA cartridges.
16   */
17  public interface StateMachineFacade
18      extends ModelElementFacade
19  {
20      /**
21       * Indicates the metafacade type (used for metafacade mappings).
22       *
23       * @return boolean always <code>true</code>
24       */
25      public boolean isStateMachineFacadeMetaType();
26  
27      /**
28       * Represents a model element. It may be an Element or NamedElement. A named element is an
29       * element in a
30       * model that may have a name. An element is a constituent of a model. As such, it has the
31       * capability
32       * of owning other elements.
33       * @return ModelElementFacade
34       */
35      public ModelElementFacade getContextElement();
36  
37      /**
38       * A special kind of state signifying that the enclosing region is completed. If the enclosing
39       * region
40       * is directly contained in a state machine and all other regions in the state machine also are
41       * completed, then it means that the entire state machine is completed.
42       * @return Collection<FinalStateFacade>
43       */
44      public Collection<FinalStateFacade> getFinalStates();
45  
46      /**
47       * The first initial state (if any) found in this activity graph. Although technically many
48       * initial states per graph are allowed, it makes sense to have only one, for this reason we
49       * provide this property.
50       * @return PseudostateFacade
51       */
52      public PseudostateFacade getInitialState();
53  
54      /**
55       * An abstraction that encompasses different types of transient vertices in the state machine
56       * graph.
57       * @return Collection<PseudostateFacade>
58       */
59      public Collection<PseudostateFacade> getInitialStates();
60  
61      /**
62       * The first transition on the first initial state found for this activity graph.
63       * @return TransitionFacade
64       */
65      public TransitionFacade getInitialTransition();
66  
67      /**
68       * An abstraction that encompasses different types of transient vertices in the state machine
69       * graph.
70       * @return Collection<PseudostateFacade>
71       */
72      public Collection<PseudostateFacade> getPseudostates();
73  
74      /**
75       * Models a situation during which some (usually implicit) invariant condition holds. The states
76       * of
77       * protocol state machines are exposed to the users of their context classifiers. A protocol
78       * state
79       * represents an exposed stable situation of its context classifier: when an instance of the
80       * classifier
81       * is not processing any operation, users of this instance can always know its state
82       * configuration.
83       * @return Collection<StateFacade>
84       */
85      public Collection<StateFacade> getStates();
86  
87      /**
88       * A directed relationship between a source vertex and a target vertex. It may be part of a
89       * compound
90       * transition, which takes the state machine from one state configuration to another,
91       * representing the
92       * complete response of the state machine to an occurrence of an event of a particular type.
93       * @return Collection<TransitionFacade>
94       */
95      public Collection<TransitionFacade> getTransitions();
96  }