Class UML 2.3::JoinNode
Description:
Join nodes have a Boolean value specification using the names of the incoming
edges to specify the conditions under which the join will emit a token.
Direct Superclasses: ControlNodeDirect Subclasses: Class Precedence List: JoinNode,
ControlNode,
ActivityNode,
RedefinableElement,
NamedElement,
ElementProperties:
isCombineDuplicate : Boolean (1 1); -- source
JoinNode joinSpec :
ValueSpecification (0 1); -- source
JoinNode activity :
Activity (0 1); -- source
ActivityNode inGroup :
ActivityGroup (0 *); -- source
ActivityNode inInterruptibleRegion :
InterruptibleActivityRegion (0 *); -- source
ActivityNode inPartition :
ActivityPartition (0 *); -- source
ActivityNode inStructuredNode :
StructuredActivityNode (0 1); -- source
ActivityNode incoming :
ActivityEdge (0 *); -- source
ActivityNode outgoing :
ActivityEdge (0 *); -- source
ActivityNode redefinedNode :
ActivityNode (0 *); -- source
ActivityNode 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 visibility :
VisibilityKind (0 1); -- source
NamedElement ownedComment :
Comment (0 *); -- source
Element ownedElement :
Element (0 *); -- source
Element owner :
Element (0 1); -- source
ElementConstraints:
Signature: one_outgoing_edge() : Boolean;
Description: A join node has one outgoing edge.
Expression: self.outgoing->size() = 1
Signature: incoming_object_flow() : Boolean;
Description: If a join node has an incoming object flow, it must have an outgoing object
flow, otherwise, it must have an outgoing control flow.
The OCL used here is not normative.Editor's notes: oclIsTypeOf not isTypeOf, isEmpty not empty, missing )
but I am uncertain what this is trying to do.
Expression: true
Original: (self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies
self.outgoing.isTypeOf(ObjectFlow)) and
(self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies
self.outgoing.isTypeOf(ControlFlow))
Operations:
No additional operations.
Send questions or comments to
[email protected].