Class UML 2.4.1::StateMachine
Description:
State machines can be used to express the behavior of part of a system.
Behavior is modeled as a traversal of a graph of state nodes interconnected
by one or more joined transition arcs that are triggered by the dispatching
of series of (event) occurrences. During this traversal, the state machine
executes a series of activities associated with various elements of the
state machine.
Direct Superclasses: BehaviorDirect Subclasses: ProtocolStateMachineClass Precedence List: StateMachine,
Behavior,
Class,
EncapsulatedClassifier,
StructuredClassifier,
BehavioredClassifier,
Classifier,
Namespace,
Type,
PackageableElement,
ParameterableElement,
RedefinableElement,
NamedElement,
TemplateableElement,
ElementProperties:
![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
connectionPoint :
Pseudostate (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
extendedStateMachine :
StateMachine (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
region :
Region (1 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
submachineState :
State (0 *); -- source
StateMachine![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
context :
BehavioredClassifier (0 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
isReentrant : Boolean (1 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedParameter :
Parameter (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedParameterSet :
ParameterSet (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
postcondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
precondition :
Constraint (0 *); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
specification :
BehavioralFeature (0 1); -- source
Behavior![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
extension :
Extension (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
isAbstract : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
isActive : Boolean (1 1); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
nestedClassifier :
Classifier (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedAttribute :
Property (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedOperation :
Operation (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedReception :
Reception (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
superClass :
Class (0 *); -- source
Class![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedConnector :
Connector (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
part :
Property (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
role :
ConnectableElement (0 *); -- source
StructuredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=34622%3A77543039946E6BA2283394F04060C077)
owner :
Element (0 1); -- source
ElementConstraints:
Signature: method() : Boolean;
Description: A state machine as the method for a behavioral feature cannot have entry/exit
connection points.
Expression: specification->notEmpty() implies connectionPoint->isEmpty()
Signature: context_classifier() : Boolean;
Description: The context classifier of the method state machine of a behavioral feature
must be the classifier that owns the behavioral feature.
Expression: specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))
Signature: connection_points() : Boolean;
Description: The connection points of a state machine are pseudostates of kind entry
point or exit point.
The OCL used here is not normative.Editor's notes: connectionPoint not conectionPoint
Expression: connectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)
Original: conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)
Signature: classifier_context() : Boolean;
Description: The classifier context of a state machine cannot be an interface.
Expression: context->notEmpty() implies not context.oclIsKindOf(Interface)
Operations:
Signature: isRedefinitionContextValid(redefined : StateMachine; ) : Boolean;
Description: The query isRedefinitionContextValid() specifies whether the redefinition
contexts of a statemachine are properly related to the redefinition contexts
of the specified statemachine to allow this element to redefine the other.
The containing classifier of a redefining statemachine must redefine the
containing classifier of the redefined statemachine.
Expression: result = true
Signature: isConsistentWith(redefinee : RedefinableElement; ) : Boolean;
Description: The query isConsistentWith() specifies that a redefining state machine
is consistent with a redefined state machine provided that the redefining
state machine is an extension of the redefined state machine: Regions are
inherited and regions can be added, inherited regions can be redefined.
In case of multiple redefining state machines, extension implies that the
redefining state machine gets orthogonal regions for each of the redefined
state machines.
Expression: result = true
Signature: ancestor(s1 : State; s2 : State; ) : Boolean;
Description: The query ancestor(s1, s2) checks whether s1 is an ancestor state of state
s2.
Expression: result = if (s2 = s1) then true else if (s2.container->isEmpty() or not s2.container.owner.oclIsKindOf(State)) then false else ancestor(s1, s2.container.owner.oclAsType(State)) endif endif
Send questions or comments to
[email protected].