Pattern 11 (Implicit Termination)
A given process (or sub-process) instance should terminate when there are no remaining work items that are able to be done either now or at any time in the future and the process instance is not in deadlock. There is an objective means of determining that the process instance has successully completed.
The rationale for this pattern is that it represents the most realistic approach to determining when a process instance can be designated as complete. This is when there is no remaining work to be completed as part of it and it is not possible that work items will arise at some future time.
There are no specific context considerations associated with this pattern.
Staffware, WebSphere MQ, FLOWer, FileNet, BPEL, BPMN, XPDL, UML 2.0 ADs and EPCs support this pattern. iPlanet requires processes to have a unique end node. COSA terminates a process instance when a specific type of end node is reached.
Where an offering does not directly support this pattern, the question arises as to whether it can implement a process model which has been developed based on the notion of Implicit Termination.
For simple process models, it may be possible to indirectly achieve the same effect by replacing all of the end nodes for a process with links to an OR-join which then links to a single final node. However, it is less clear for more complex process models involving multiple instance tasks whether they are always able to be converted to a model with a single terminating node. Potential solutions to this are discussed at length by Kiepuszewski et al. [KtHvdA03].
It is worthwhile noting that some languages do not offer this construct on purpose: the Implicit Termination pattern makes it difficult (or even impossible) to distinguish proper termination from deadlock. Often it is only through examination of the process log that it is possible to determin if a particular case has actually finished. Additionally, processes without explicit endpoints are more difficult to use in compositions.
An offering achieves full support if it is possible to have multiple final nodes and the behaviour of these nodes satisfies the description for the pattern.
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||+||Directly supported. A workflow case terminates if all of its branches have terminated. A stop symbol can be used to indicate the end of each branch.|
|Websphere MQ||3.4||+||Directly supported.|
|FLOWer||3.51||+||Supported, plans can have multiple end nodes. Only if all are completed (or refused), the plan is completed.|
|COSA||5.1||-||Not supported, explicit termination is needed.|
|iPlanet||3.0||-||There is a designated last activity which causes process termination.|
|SAP Workflow||4.6c||-||Not supported because processes are block structured with a single start and end node.|
|FileNet||3.5||+||Directly supported. Allows for multiple end-points, however workflow terminates after all steps have finished.|
|BPEL||1.1||+||Directly supported for the <flow> construct. For other construct, each branch must be ended with an end event node.|
|Websphere Integration Developer||6.0||+||Directly supported for the <flow> activity. For other constructs, each branch must be ended with a <terminate> activity.|
|Oracle BPEL||10.1.2||+||Directly supported for the <flow> construct. For other constructs, each branch must be ended with a <terminate> construct.|
|BPMN||1.0||+||Supported by ending every thread with an End Event. When the last token generated by the Start Event is consumed, the process instance terminates.|
|XPDL||2.0||+||Supported by ending every thread with an End Event. When the last token generated by the Start Event is comsumed, the process instance terminates.|
|UML ADs||2.0||+||Supported via the FlowFinalNode construct|
|EPC (implemented by ARIS toolset 6.2)||+||Directly supported. Note that there may be many end events and only if no element is enabled for a given instance does the instance terminate.|
|jBPM||3.1.4||+||jBPM supports Implicit Termination. A process may have multiple End States. A process instance completes when there is not any work item left to be done. jBPM notifies the user executing the last work item about the completion of a process.|
|OpenWFE||1.7.3||+||OpenWFE supports Implicit Termination. Currently, OpenWFE does not notify the user of a process instance completion but it only notes the completion of process instances in the log of execution history.|
|Enhydra Shark||2||+||Enhydra Shark supports Implicit Termination supports Implicit Termination. Enhydra Shark does not explicitly notify the user of process completion. The process instance is logged with the status closed.completed.|