Software Disclaimer

Class UML 2.5::Region


A Region is a top-level part of a StateMachine or a composite State, that serves as a container for the Vertices and Transitions of the StateMachine. A StateMachine or composite State may contain multiple Regions representing behaviors that may occur in parallel.

Direct Superclasses: Namespace, RedefinableElement

Direct Subclasses:

Class Precedence List: Region, Namespace, RedefinableElement, NamedElement, Element


extendedRegion : Region (0 1); -- source Region
redefinitionContext : Classifier (1 1); -- source Region
state : State (0 1); -- source Region
stateMachine : StateMachine (0 1); -- source Region

The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.
Subsets: NamedElement.namespace
Opposite: StateMachine.region

subvertex : Vertex (0 *); -- source Region
transition : Transition (0 *); -- source Region
elementImport : ElementImport (0 *); -- source Namespace
importedMember : PackageableElement (0 *); -- source Namespace
member : NamedElement (0 *); -- source Namespace
ownedMember : NamedElement (0 *); -- source Namespace

A collection of NamedElements owned by the Namespace.
{composite, readonly}
Derived union with sources: (ownedRule, transition, subvertex)
Subsets: Element.ownedElement, Namespace.member
Opposite: NamedElement.namespace

ownedRule : Constraint (0 *); -- source Namespace
packageImport : PackageImport (0 *); -- source Namespace

References the PackageImports owned by the Namespace.
Subsets: Element.ownedElement
Opposite: PackageImport.importingNamespace

isLeaf : Boolean (1 1); -- source RedefinableElement
redefinedElement : RedefinableElement (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
visibility : VisibilityKind (0 1); -- source NamedElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element


No additional constraints.


Signature: redefinitionContext.1() : Classifier;
Description: The redefinition context of a Region 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: isRedefinitionContextValid(redefinedElement : RedefinableElement; ) : Boolean;
Description: The query isRedefinitionContextValid() specifies whether the redefinition contexts of a Region are properly related to the redefinition contexts of the specified Region to allow this element to redefine the other. The containing StateMachine or State of a redefining Region must Redefine the containing StateMachine or State of the redefined Region.
Expression: result = (if redefinedElement.oclIsKindOf(Region) then let redefinedRegion : Region = redefinedElement.oclAsType(Region) in if stateMachine->isEmpty() then -- the Region is owned by a State (state.redefinedState->notEmpty() and state.redefinedState.region->includes(redefinedRegion)) else -- the region is owned by a StateMachine (stateMachine.extendedStateMachine->notEmpty() and stateMachine.extendedStateMachine->exists(sm : StateMachine | sm.region->includes(redefinedRegion))) endif else false endif)

Signature: isConsistentWith(redefiningElement : RedefinableElement; ) : Boolean;
Description: The query isConsistentWith() specifies that a redefining Region is consistent with a redefined Region provided that the redefining Region is an extension of the Redefined region, i.e., its Vertices and Transitions conform to one of the following: (1) they are equal to corresponding elements of the redefined Region or, (2) they consistently redefine a State or Transition of the redefined region, or (3) they add new States or Transitions.
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: containingStateMachine() : StateMachine;
Description: The operation containingStateMachine() returns the StateMachine in which this Region is defined.
Expression: result = (if stateMachine = null then state.containingStateMachine() else stateMachine endif)

Signature: belongsToPSM() : Boolean;
Description: The operation belongsToPSM () checks if the Region belongs to a ProtocolStateMachine.
Expression: result = (if stateMachine <> null then stateMachine.oclIsKindOf(ProtocolStateMachine) else state <> null implies state.container.belongsToPSM() endif )

Send questions or comments to