It seems that I need to have a MergeNode with incoming ControlFlow and ObjectFlow while according to paragraph 15.3.3.5 Merge Nodes of OMG® Unified Modeling Language® (OMG UML®) Version 2.5.1
If the outgoing edge of a MergeNode is a ControlFlow, then all incoming edges must be ControlFlows, and, if the outgoing edge is an ObjectFlow, then all incoming edges must be ObjectFlows.
Here is the diagram:
The intent was to model a process which once started continuously receives and process Order Records and Trade Records. As soon as Stop Request received, the process stops.
The nodes A and B are ok since all flows are ObjectFlows. The nodes marked C and D are problematic since the flows from the InitialNodes are ControlFlows.
I need flows from the InitialNodes to initially enable Trade Record Received and Order Record Received nodes since according to paragraph 15.2.3.6 Activity Execution
When an Activity is first invoked, none of its nodes other than input ActivityParameterNodes will initially hold any tokens. However, nodes that do not have incoming edges and require no input data to execute are immediately enabled.
Thus Stop Request Received will be enabled when the activity is first invoked while Trade Record Received and Order Record Received will not be.
Is there a way to make this diagram conforming with UML specification?
If I set isControlType=true
for Trade Record, Stop Request and Order Record pins would it mean that all flows are now ControlFlows for according to paragraph 15.4.3.1 Object Nodes:
If
isControlType=true
for an ObjectNode, ControlFlows may be incoming to and outgoing from the ObjectNode, objects tokens can come into or go out of the ObjectNode along ControlFlows, and these tokens can flow along ControlFlows reached downstream of the ObjectNode. The values on such object tokens may be used to affect the control of ExecutableNodes that are the targets of such ControlFlows, though the specific meaning of such values is not defined in this specification