Class UML 2.3::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,
TemplateableElement,
Type,
PackageableElement,
ParameterableElement,
Namespace,
RedefinableElement,
NamedElement,
ElementProperties:

connectionPoint :
Pseudostate (0 *); -- source
StateMachine
extendedStateMachine :
StateMachine (0 *); -- source
StateMachine
region :
Region (1 *); -- source
StateMachine
submachineState :
State (0 *); -- source
StateMachine
context :
BehavioredClassifier (0 1); -- source
Behavior
isReentrant : Boolean (1 1); -- source
Behavior
ownedParameter :
Parameter (0 *); -- source
Behavior
ownedParameterSet :
ParameterSet (0 *); -- source
Behavior
postcondition :
Constraint (0 *); -- source
Behavior
precondition :
Constraint (0 *); -- source
Behavior
redefinedBehavior :
Behavior (0 *); -- source
Behavior
specification :
BehavioralFeature (0 1); -- source
Behavior
extension :
Extension (0 *); -- source
Class
isAbstract : Boolean (1 1); -- source
Class
isActive : Boolean (1 1); -- source
Class
nestedClassifier :
Classifier (0 *); -- source
Class
ownedAttribute :
Property (0 *); -- source
Class
ownedOperation :
Operation (0 *); -- source
Class
ownedReception :
Reception (0 *); -- source
Class
superClass :
Class (0 *); -- source
Class
ownedPort :
Port (0 *); -- source
EncapsulatedClassifier
ownedConnector :
Connector (0 *); -- source
StructuredClassifier
part :
Property (0 *); -- source
StructuredClassifier
role :
ConnectableElement (0 *); -- source
StructuredClassifier
classifierBehavior :
Behavior (0 1); -- source
BehavioredClassifier
interfaceRealization :
InterfaceRealization (0 *); -- source
BehavioredClassifier
ownedBehavior :
Behavior (0 *); -- source
BehavioredClassifier
ownedTrigger :
Trigger (0 *); -- source
BehavioredClassifier
attribute :
Property (0 *); -- source
Classifier
collaborationUse :
CollaborationUse (0 *); -- source
Classifier
feature :
Feature (0 *); -- source
Classifier
generalization :
Generalization (0 *); -- source
Classifier
inheritedMember :
NamedElement (0 *); -- source
Classifier
isFinalSpecialization : Boolean (1 1); -- source
Classifier
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier
ownedUseCase :
UseCase (0 *); -- source
Classifier
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier
redefinedClassifier :
Classifier (0 *); -- source
Classifier
representation :
CollaborationUse (0 1); -- source
Classifier
substitution :
Substitution (0 *); -- source
Classifier
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier
useCase :
UseCase (0 *); -- source
Classifier
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement
package :
Package (0 1); -- source
Type
visibility :
VisibilityKind (1 1); -- source
PackageableElement
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement
elementImport :
ElementImport (0 *); -- source
Namespace
importedMember :
PackageableElement (0 *); -- source
Namespace
member :
NamedElement (0 *); -- source
Namespace
ownedMember :
NamedElement (0 *); -- source
Namespace
ownedRule :
Constraint (0 *); -- source
Namespace
packageImport :
PackageImport (0 *); -- source
Namespace
isLeaf : Boolean (1 1); -- source
RedefinableElement
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement
clientDependency :
Dependency (0 *); -- source
NamedElement
name : String (0 1); -- source
NamedElement
nameExpression :
StringExpression (0 1); -- source
NamedElement
namespace :
Namespace (0 1); -- source
NamedElement
qualifiedName : String (0 1); -- source
NamedElement
ownedComment :
Comment (0 *); -- source
Element
ownedElement :
Element (0 *); -- source
Element
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
Signature: LCA(s1 : State; s2 : State; ) : Namespace;
Description: The operation LCA(s1,s2) returns an orthogonal state or region which is the least common ancestor of states s1 and s2, based on the statemachine containment hierarchy.
Expression: true
Send questions or comments to
[email protected].