Class UML 2.4.1::JoinNode
Description:
A join node is a control node that synchronizes multiple flows.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:
![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
isCombineDuplicate : Boolean (1 1); -- source
JoinNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
joinSpec :
ValueSpecification (1 1); -- source
JoinNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
activity :
Activity (0 1); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
inGroup :
ActivityGroup (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
inInterruptibleRegion :
InterruptibleActivityRegion (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
inPartition :
ActivityPartition (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
inStructuredNode :
StructuredActivityNode (0 1); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
incoming :
ActivityEdge (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
outgoing :
ActivityEdge (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
redefinedNode :
ActivityNode (0 *); -- source
ActivityNode![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
visibility :
VisibilityKind (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=18842%3AA4FE71CC3D68F888BAF08871C616C2B5)
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].