Software Disclaimer

Class UML 2.5::State

Description:

A State models a situation during which some (usually implicit) invariant condition holds.

Direct Superclasses: RedefinableElement, Namespace, Vertex

Direct Subclasses: FinalState

Class Precedence List: State, RedefinableElement, Namespace, Vertex, NamedElement, Element

Properties:

connection : ConnectionPointReference (0 *); -- source State
connectionPoint : Pseudostate (0 *); -- source State
deferrableTrigger : Trigger (0 *); -- source State
doActivity : Behavior (0 1); -- source State
entry : Behavior (0 1); -- source State

An optional Behavior that is executed whenever this State is entered regardless of the Transition taken to reach the State. If defined, entry Behaviors are always executed to completion prior to any internal Behavior or Transitions performed within the State.
{composite}
Subsets: Element.ownedElement

exit : Behavior (0 1); -- source State
isComposite : Boolean (1 1); -- source State
isOrthogonal : Boolean (1 1); -- source State
isSimple : Boolean (1 1); -- source State
isSubmachineState : Boolean (1 1); -- source State
redefinedState : State (0 1); -- source State
redefinitionContext : Classifier (1 1); -- source State
region : Region (0 *); -- source State
stateInvariant : Constraint (0 1); -- source State
submachine : StateMachine (0 1); -- source State
isLeaf : Boolean (1 1); -- source RedefinableElement
redefinedElement : RedefinableElement (0 *); -- source RedefinableElement
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
container : Region (0 1); -- source Vertex
incoming : Transition (0 *); -- source Vertex
outgoing : Transition (0 *); -- source Vertex
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
visibility : VisibilityKind (0 1); -- source NamedElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

No additional constraints.

Operations:

Signature: redefinitionContext.1() : Classifier;
Description: The redefinition context of a State is the nearest containing StateMachine.
Expression: result = (let sm : StateMachine = containingStateMachine() in if sm._'context' = null or sm.general->notEmpty() then sm else sm._'context' endif)

Signature: isSubmachineState.1() : Boolean;
Description: Only submachine State references another StateMachine.
Expression: result = (submachine <> null)

Signature: isSimple.1() : Boolean;
Description: A simple State is a State without any regions.
Expression: result = ((region->isEmpty()) and not isSubmachineState())

Signature: isRedefinitionContextValid(redefinedElement : RedefinableElement; ) : Boolean;
Description: The query isRedefinitionContextValid() specifies whether the redefinition contexts of a State are properly related to the redefinition contexts of the specified State to allow this element to redefine the other. This means that the containing Region of a redefining State must redefine the containing Region of the redefined State.
Expression: result = (if redefinedElement.oclIsKindOf(State) then let redefinedState : State = redefinedElement.oclAsType(State) in container.redefinedElement.oclAsType(Region)->exists(r:Region | r.subvertex->includes(redefinedState)) else false endif)

Signature: isOrthogonal.1() : Boolean;
Description: An orthogonal State is a composite state with at least 2 regions.
Expression: result = (region->size () > 1)

Signature: isConsistentWith(redefiningElement : RedefinableElement; ) : Boolean;
Description: The query isConsistentWith() specifies that a redefining State is consistent with a redefined State provided that the redefining State is an extension of the redefined State A simple State can be redefined (extended) to become a composite State (by adding one or more Regions) and a composite State can be redefined (extended) by adding Regions and by adding Vertices, States, and Transitions to inherited Regions. All States may add or replace entry, exit, and 'doActivity' Behaviors.
Expression: result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles true)

Signature: isComposite.1() : Boolean;
Description: A composite State is a State with at least one Region.
Expression: result = (region->notEmpty())

Signature: containingStateMachine() : StateMachine;
Description: The query containingStateMachine() returns the StateMachine that contains the State either directly or transitively.
Expression: result = (container.containingStateMachine())



Send questions or comments to [email protected].