Pattern 36 (Dynamic Partial Join for Multiple Instances)

FLASH animation of Dynamic Partial Join for Multiple Instances pattern

Description

Within a given process instance, multiple concurrent instances of a task can be created. The required number of instances may depend on a number of runtime factors, including state data, resource availability and inter-process communications and is not known until the final instance has completed. At any time, whilst instances are running, it is possible for additional instances to be initiated providing the ability to do so had not been disabled. A completion condition is specified which is evaluated each time an instance of the task completes. Once the completion condition evaluates to true, the next task in the process is triggered. Subsequent completions of the remaining task instances are inconsequential and no new instances can be created.

Examples

The despatch of an oil rig from factory to site involves numerous transport shipment tasks. These occur concurrently and although sufficient tasks are started to cover initial estimates of the required transport volumes, it is always possible for additional tasks to be initiated if there is a shortfall in transportation requirements. Once 90% of the transport shipment tasks are complete, the next task (invoice transport costs) can commence. The remaining transport shipment tasks continue until the whole rig has been transported.

Motivation

This pattern is a variant of the Multiple Instances without a priori Runtime Knowledge pattern that provides the ability to trigger the next task once a nominated completion condition is satisfied.

Overview

Figure 54 illustrates the operation of this pattern. The multiple instance task is illustrated by transition A. At commencement, the number of instances initially required is indicated by variable m. Additional instances may be added to this at any time via the start instance transition. At commencement, the pattern is in the active state. Once enough instances of task A have completed and the join transition has fired, the next task is enabled (illustrated via a token being placed in the output place o1) and the remaining instances of task A run to completion before the complete transition is enabled. No new instances can be created at this time. Finally when all instances of A have completed, the pattern resets and can be re-enabled. An important feature of the pattern is the ability to disable further creation of task instances at any time after the first instances has been created.

Figure 54: Dynamic Partial Join implementation for multiple instances

Context

This pattern has two context conditions: (1) the number of concurrent task instances to be started initially (denoted by variable m in Figure 52) is known prior to task commencement and (2) it must be possible to access any data elements or other necessary resources required to evaluate the completion condition at the conclusion of each task instance.

Implementation

Of the offerings identified, only FLOWer provides support for the dynamic creation of multiple instance tasks (via dynamic subplans), however it requires all of them to be completed before any completion conditions associated with a dynamic subplan (e.g. partial joins) can be evaluated and subsequent tasks can be triggered. This is not considered to constitute support for this pattern.

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 assumptions. It achieves partial support if the creation of task instances cannot be disabled once the first task instance has commenced.

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 - Not supported.
Websphere MQ 3.4 - Not supported. There is no direct support for multiple instance activities.
FLOWer 3.51 - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
COSA 5.1 - Multiple instance activities are not supported.
iPlanet 3.0 - No support for multiple instance activities.
SAP Workflow 4.6c - Not supported. Note that "dynamic processing with a multi-line container element" does not allow for dynamic changes of the number of instances.
FileNet 3.5 - Not supported.
BPEL 1.1 - No support for multiple activity instances.
Websphere Integration Developer 6.0 - No support for multiple activity instances.
Oracle BPEL 10.1.2 - No support for multiple activity instances.
BPMN 1.0 - There is no ability to dynamically add instances to an multiple instance activity.
XPDL 2.0 - Not supported. There is no means of adding further instances to a multi-instance task once started.
UML ADs 2.0 - Not supported. A MI activity can only complete when all N instances specified in the ExpansionRegion have completed.
EPC (implemented by ARIS toolset 6.2) - Not supported.
jBPM 3.1.4 - jBPM does not support this pattern, which is a variant of the Multiple Instances without a priori run-time Knowledge pattern.
OpenWFE 1.7.3 - OpenWFE does not support this pattern.
Enhydra Shark 2 - Enhydra Shark does not support this pattern.