Pattern 42 (Thread Split)

FLASH animation of Thread Split pattern

Description

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.

Examples

At the completion of the confirm paper receival task, initiate three instances of the subsequent independent peer review task.

Motivation

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.

Overview

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

Context

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.

Implementation

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.

Issues

None identified.

Solutions

N/A.

Evaluation Criteria

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.

Product Evaluation

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.

Product/Language

Version

Score

Motivation

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.
SAP Workflow 4.6c

-

Not supported because of the structured/safe nature of SAP workflow.
FileNet 3.5 - Not supported.
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.