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 }