Pattern 2 (Parallel Split)

FLASH animation of Parallel Split pattern


The divergence of a branch into two or more parallel branches each of which execute concurrently.


AND-split, parallel routing, parallel split, fork.


After completion of the capture enrolment task, run the create student profile and issue enrolment confirmation tasks simultaneously.

When an intrusion alarm is received, trigger the despatch patrol task and the inform police task immediately.

Once the customer has paid for the goods, pack them and issue a receipt.


The Parallel Split pattern allows a single thread of execution to be split into two or more branches which can execute tasks concurrently. These branches may or may not be re-synchronized at some future time.


Figure 2 illustrates the implementation of the Parallel Split. After task A has completed, two distinct threads of execution are initiated and tasks B and C can proceed concurrently.

Figure 2: Parallel split pattern


There are no specific context conditions for this pattern.


The Parallel Split pattern is implemented by all of the offerings examined. It may be depicted either explicitly or implicitly in process models. Where it is represented explicitly, a specific construct exists for the Parallel Split with one incoming edge and two or more outgoing edges. Where it is represented implicitly, this can be done in one of two ways: either (1) the edge representing control-flow can split into two (or more) distinct branches or (2) the task after which the Parallel Split occurs has multiple outgoing edges which do not have any conditions associated with them or where it does these conditions always evaluate to true.

Of the offerings examined, Staffware, WebSphere MQ, FLOWer, COSA and iPlanet represent the pattern implicitly. SAP Workflow, EPCs and BPEL do so with explicit branching constructs. UML 2.0 ADs, BPMN and XPDL allow it to be represented in both ways.


None identified.



Evaluation Criteria

Full support for this pattern is demonstrated by the provision of a construct (either implicit or explicit) that allows the thread of control at a given point in a process to be split into two or more concurrent branches.

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.





Staffware 10 + Supported through a step construct that has multiple outgoing arcs.
Websphere MQ 3.4 + Supported through multiple outgoing arcs from an activity.
FLOWer 3.51 + Nodes in static, dynamic and sequential subplans have an AND-split semantics.
COSA 5.1 + Supported by multiple outgoing arcs from an activity. None of the arcs have transition conditions specified.
iPlanet 3.0 + Supported by multiple outgoing routers from an activity
SAP Workflow 4.6c + Directly supported. SAP allows for structured parallel processes, using the fork construct one can create multiple parallel branches. Since there has to be a one-to-one correspondence between splits and joins, some parallel processes need to be modified to make them structured.
FileNet 3.5 + Directly supported by a step where all outgoing routes are unconditional.
BPEL 1.1 + Supported by <flow> construct.
Websphere Integration Developer 6.0 + Supported by the <flow> activity.
Oracle BPEL 10.1.2 + Supported by the <flow> construct.
BPMN 1.0 + Supported by AND-split gateway
XPDL 2.0 + Supported by the AND-split construct
UML ADs 2.0 + Supported by the ForkNode construct. It may also be represented implicitly by joining an action or activity to several subsequent actions or activities.
EPC (implemented by ARIS toolset 6.2) + Supported by the AND-split connector.
jBPM 3.1.4 +

jBPM supports parallel split through:
i) the Fork Node construct, which splits a tread to multiple treads running in parallel
ii) by defining the tasks to be run in parallel within the same Task Node.

OpenWFE 1.7.3 + OpenWFE implements parallel split through the construct <concurrence>
Enhydra Shark 2 +

Enhydra Shark supports parallel split through
i) an activity node with a transition restriction <Split Type = "AND"> specifying the transitions of the parallel split. (Shark, Wil)
ii) a routing activity node with a transition restriction <Split Type = "AND"> specifying the transitions of the parallel split. In contrast to an activity, a routing activity does not implement any actions.