Pattern 36 (Dynamic Partial Join for Multiple Instances)
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.
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.
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
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.
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.
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.
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.
|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.|
|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.|