Pattern |
Rating |
Motivation |
Sequence |
+ |
Supported by the transition construct. |
Parallel Split |
+ |
Supported by the AND-split construct |
Synchronization |
+ |
Supported by the AND-join construct. |
Exclusive Choice |
+ |
Supported by the XOR-split construct. |
Simple Merge |
+ |
Supported by the XOR-join construct. |
Multi-Choice |
+ |
Supported by the AND-split construct together with conditions on the outgoing transitions. |
Structured Synchronizing Merge |
+ |
Supported by the OR-join construct. |
Multi-Merge |
+ |
Supported by the XOR-join construct. |
Structured Discriminator |
+/- |
Although the COMPLEX-join gateway appears to offer support for this pattern, it is unclear how the IncomingCondition expression is specified. |
Arbitrary Cycles |
+ |
Unstructured repetition can be directly supported. |
Implicit Termination |
+ |
Supported by ending every thread with an End Event. When the last token generated by the Start Event is comsumed, the process instance terminates. |
Multiple Instances without Synchronization |
+ |
Supported by spawning off activity instances in a loop. |
Multiple Instances with a Priori Design-Time Knowledge |
+ |
Supported by the multi-instance loop construct. |
Multiple Instances with a Priori Run-Time Knowledge |
+ |
Supported by the multi-instance loop construct where MI_Ordering = parallel. |
Multiple Instances without a Priori Run-Time Knowledge |
- |
Not supported. There is no means of adding further instances to a multi-instance loop once started. |
Deferred Choice |
+ |
Supported by the XOREVENT-split construct. |
Interleaved Parallel Routing |
- |
Supported for single activities (but not sequences) by grouping them using the ActivitySet construct with the AdHoc attribute set. |
Milestone |
- |
Not supported. No concept of state. |
Cancel Activity |
+ |
Supported via an error type trigger attached to the boundary of the activity to be cancelled. |
Cancel Case |
+ |
Directly supported by including the entire process in a transaction. Triggering the cancel end event associated with the transaction will effectively terminate all activities associated with a process instance. |
Structured Loop |
+ |
Both while and repeat loops are supported for individual activities and sub-processes. |
Recursion |
- |
Not supported. No means of specifying recursive composition with a process model. |
Transient Trigger |
- |
Not supported. Triggers are supported through durable message events. |
Persistent Trigger |
+ |
Supported via message events. |
Cancel Region |
+/- |
Partially supported by denoting the cancellation region as an activity set in a block activity and associating an error event with the block activity to enable cancellation, however the cancellation region is restricted to a connected subgraph of the overall process model. |
Cancel Multiple Instance Activity |
+ |
Achievable via a MI task which has an error type intermediate event trigger at the boundary. When the MI activity is to be withdrawn, a cancel event is triggered to terminate any remaining MI activities. |
Complete Multiple Instance Activity |
- |
Not supported. No means of cancelling remaining MI activity instances. |
Blocking Discriminator |
+/- |
Although the COMPLEX-join gateway appears to offer support for this pattern, it is unclear how the IncomingCondition expression is specified. |
Cancelling Discriminator |
+ |
Supported by including the incoming branches and the OR-join in a subprocess that passes control to the following activity once the first branch has completed as well as cancelling the remaining activities in the sub-process using an error event. |
Structured N-out-of-M Join |
+/- |
Although the COMPLEX-join gateway appears to offer support for this pattern, it is unclear how the IncomingCondition expression is specified. |
Blocking N-out-of-M Join |
+/- |
Although the COMPLEX-join gateway appears to offer support for this pattern, it is unclear how the IncomingCondition expression is specified. |
Cancelling N-out-of-M Join |
+/- |
Although the COMPLEX-join gateway appears to offer support for this pattern, it is unclear how the IncomingCondition expression is specified. |
Generalised AND-Join |
+ |
Supported by the AND-join construct. |
Static Partial Join for Multiple Instances |
+/- |
Notionally supported via the multi-instance construct where MI Flow_Condition attribute is set to complex and ComplexMI_FlowCondition is an expression that evaluates to true when exactly M instances have completed and passes on a single token to the following activity. However it is unclear how the ComplexMI_FlowCondition is actually specified. |
Cancelling Partial Join for Multiple Instances |
+/- |
Notionally achievable via a MI task which has an error type intermediate event trigger at the boundary. Immediately after the MI activity is an activity that issues a cancel event to terminate any remaining MI activities. However as for WCP34, it is unclear how the ComplexMI_FlowCondition is actually specified. |
Dynamic Partial Join for Multiple Instances |
- |
Not supported. There is no means of adding further instances to a multi-instance task once started. |
Acyclic Synchronizing Merge |
- |
The OR-join gateway assumes it will be used in a structured context. |
General Synchronizing Merge |
- |
Not supported. No means of assessing whether an OR-join gateway should fire based on a complete state analysis of the process instance. |
Critical Section |
- |
Not supported. No means of limiting concurrent execution of a set of activities. |
Interleaved Routing |
+/- |
Indirectly supported via an AdHoc process containing all of the activities to be interleaved with AdHocOrdering set to sequential however it is unclear what the required AdHocCompletionCondition should be to ensure each activity is executed precisely once. |
Thread Merge |
+ |
Directly supported by setting the StartQuantity attribute on activities immediately following the MI activity. |
Thread Split |
+ |
Directly supported by setting the Quantity attribute on the outgoing sequence flow from an activity. |
Explicit Termination |
+ |
Supported via a terminate end event. |
Pattern |
Explanation |
Work Item Failure |
SFF-CWC-COM |
An activity can have Error, Cancel and Compensation triggers defined for it enabling it to respond to errors, cancellation and compensation requests which occur during execution. Once one of these is detected, the thread of control can be passed to an alternative compensation activity (or sequence of activities). The thread of control can be returned to the normal execution sequence at a later stage in the process once the required compensation activity has been completed. |
SFF-CWC-NIL |
An activity can have an empty set of compensation activities. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the compensation activity (or sequence of activities) is concluded with an end event node thus cancelling any other activity in the process that may currently be executing. |
SFF-RCC-NIL |
As for SFF-CWC-NIL except that the compensation is simply an end event node thus cancelling any other activity in the process that may currently be executing without undertaking any form of compensation. |
Work Item Deadline |
SCE-CWC-COM |
An activity can have a Deadline associated with it that specifies an alternative activity (or set of activities) that should be undertaken if a deadline is reached before the activity has completed. The ASYNCHR node results in the activity being continued and the alternative (deadline) activity sequence also being initiated. |
SCE-CWC-NIL |
The alternative activity sequence can be empty. |
SFF-CWC-COM |
As for SCE-CWC-COM except the SYNCHR node is specified resulting in the activity on which the deadline is specified being terminated and the alternative activity sequence being initiated. |
SFF-CWC-NIL |
As for SCE-CWC-NIL except the SYNCHR node. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the alternative activity sequence is concluded with an end event node thus cancelling any other activities in the process that may currently be executing. |
SFF-RCC-NIL |
As for SFF-CWC-NIL expect that the compensation is simply an end event node thus cancelling any other activity in the process that may currently be executing without undertaking any form of compensation. |
External Trigger |
SFF-CWC-COM |
Message events can be specified for an activity which, when the required message is received, result in the activity being terminated and an alternative sequence of activities being initiated. |
SFF-CWC-NIL |
The alternative activity sequence for a message event can be empty. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the alternative activity sequence is concluded with an end event node thus cancelling any other activities in the process that may currently be executing. |
SFF-RCC-NIL |
As for SFF-CWC-NIL except that the compensation is simply an end event node thus cancelling any other activity in the process that may currently be executing without undertaking any form of compensation. |
Constraint Violation |
SFF-CWC-COM |
Trigger rules can be specified for an activity which, when the specified trigger rule evaluates to true, result in the activity being terminated and an alterative sequence of activities being initiated. |
SFF-CWC-NIL |
The alternative activity sequence for a trigger rule can be empty. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the alternative activity sequence is concluded with an end event node thus cancelling any other activities in the process that may currently be executing. |
SFF-RCC-NIL |
As for SFF-CWC-NIL except that the compensation is simply an end event node thus cancelling any other activity in the process that may currently be executing without undertaking any form of compensation. |