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