Pattern 42 (Thread Split)
At a given point in a process, a nominated number of execution threads can be initiated in a single branch of the same process instance.
At the completion of the confirm paper receival task, initiate three instances of the subsequent independent peer review task.
This pattern provides a means of triggering multiple execution threads along a branch within a given process instance. It is a counterpart to the Thread Merge pattern which merges multiple execution threads along the same branch. Unless used in conjunction with the Thread Merge pattern, the execution threads will run independently to the end of the process.
The operation of this pattern is illustrated in Figure 60. Note that numinsts indicates the number of threads to be created.
Figure 60: Thread Split Pattern
There is one context consideration for this pattern: the number of threads needing to be created (i.e. numinsts) must be known at design-time.
As with the Thread Merge pattern, implementation of this pattern implies that an offering is able to support the execution of processes in a non-safe context. This rules out the majority of the offerings examined from providing any tractable forms of implmentation. BPMN and XPDL provide direct support for the pattern by allowing the Quantity of tokens flowing down the outgoing sequence flow from a task at its conclusion to be specified. UML 2.0 ADs allow a similar behaviour to be achieved through the use of multiple outgoing edges from a task to a MergeNode which then directs the various initiated threads of control down the same branch. BPEL indirectly allows the same effect to be achieved via the <invoke> action in conjunction with suitably specified correlation sets.
Full support for this pattern is demonstrated by any offering which provides a construct which satisfies the description when used in a context satisfying the context assumption. If any degree of programmatic extension is required to achieve the same behaviour, then the partial support rating applies.
To achieve a + rating (direct support) or a +/- rating (partial support) the product should satisfy the corresponding evaluation criterion of the pattern. Otherwise a - rating (no support) is assigned.
|Staffware||10||-||No support for user-specified thread merging. The system automatically merges distinct control threads which reach the same step in a process instance.|
|Websphere MQ||3.4||-||No support. Process models are block structured and safe.|
|FLOWer||3.51||-||Not supported. The case metaphor prevents any possibility of multiple threads of execution.|
|COSA||5.1||-||No ability to merge threads as the process in inherently safe.|
|iPlanet||3.0||-||No ability to coalesce threads of control from independent sub-process activities.|
|Not supported because of the structured/safe nature of SAP workflow.|
|BPEL||1.1||+/-||Achievable through the use of the <invoke> construct in conjunction with the correlation facility but programmatic extensions are necessary if subsequent thread merges are required.|
|Websphere Integration Developer||6.0||+/-||Achievable through the use of the <invoke> construct in conjunction with the correlation facility but programmatic extensions are necessary if subsequent thread merges are required.|
|Oracle BPEL||10.1.2||+/-||Achievable through the use of the <invoke> construct in conjunction with the correlation facility but programmatic extensions are necessary if subsequent thread merges are required.|
|BPMN||1.0||+||Directly supported by setting the Quantity attribute on the outgoing sequence flow from an activity.|
|XPDL||2.0||+||Directly supported by setting the Quantity attribute on the outgoing sequence flow from an activity.|
|UML ADs||2.0||+||Supported by including a weighted edge after the MI activity to any subsequent activity.|
|EPC (implemented by ARIS toolset 6.2)||-||Not supported. It is impossible to merge a specified number of threads into one.|
|jBPM||3.1.4||+/-||In jBPM the behavior of this pattern can be achieved through programmatic extensions by defining a new Node behavior. (According to the evaluation criteria of the pattern, this gives a +/- ranking).|
|OpenWFE||1.7.3||-||OpenWFE does not support this pattern.|
|Enhydra Shark||2||-||Enhydra Shark does not support this pattern. The attribute Quantity present in XPDL for a transition is not implemented in Enhydra Shark.|