Pattern |
Rating |
Motivation |
| Sequence |
+ |
Directly supported by arcs connecting process, program and block activities. |
| Parallel Split |
+ |
Supported through multiple outgoing arcs from an activity. |
| Synchronization |
+ |
Supported by specifying start conditions on an activity. |
| Exclusive Choice |
+ |
Supported through the use of exclusive conditions on transitions. |
Simple Merge |
+ |
Supported by specifying start conditions on an activity. |
| Multi-Choice |
+ |
Supported through the use of (non-exclusive) conditions on transitions. |
| Structured Synchronizing Merge |
+ |
Supported by specifying start conditions on an activity. |
| Multi-Merge |
- |
Not supported. An activity can only be triggered once, either when one or all of the incoming connectors evaluate to true. |
| Structured Discriminator |
- |
Not supported. The evaluation of start conditions for an activity only occurs when all preceding activities have completed. |
| Arbitrary Cycles |
- |
Not supported. Process models are block-structured. |
| Implicit Termination |
+ |
Directly supported. |
| Multiple Instances without Synchronization |
- |
Although it is possible to to replicate an activity by including it in a block activity with an exit condition that is satisfied when all instances have completed, it is not possible for these instances to run concurrently. |
| Multiple Instances with a Priori Design-Time Knowledge |
- |
Not supported. No construct for of designating multiple instances of an activity in the design-time model. |
| Multiple Instances with a Priori Run-Time Knowledge |
- |
Not supported. No means of facilitating multiple instances of an activity at runtime. |
| Multiple Instances without a Priori Run-Time Knowledge |
- |
Not supported. No means of facilitating multiple instances of an activity at runtime. |
| Deferred Choice |
- |
Not supported. There is no means of selecting that one out of a set of possible activities by executed (and the other activities be withdrawn). |
| Interleaved Parallel Routing |
- |
Not supported. There is no way to interleave activities without specifying an order. |
| Milestone |
- |
Not supported. There is no inherent notion of state. |
| Cancel Activity |
- |
Not supported. There is no means of denoting activity cancellation with a process model. |
| Cancel Case |
- |
Not supported. There is no means of cancelling an entire process instance. |
| Structured Loop |
+ |
Post-tested loops are supported by the block construct. |
| Recursion |
+ |
Directly supported. Recursive definition of process and block activities is possible. |
| Transient Trigger |
- |
Not supported. There is no means of triggering an activity from outside the process instance. |
Persistent Trigger |
- |
Not supported. There is no means of triggering an activity from outside the process instance. |
| Cancel Region |
- |
Not supported. A set of activities cannot be cancelled. |
| Cancel Multiple Instance Activity |
- |
Not supported. There is no direct support for multiple instance activities. |
| Complete Multiple Instance Activity |
- |
Not supported. There is no direct support for multiple instance activities. |
| Blocking Discriminator |
- |
Not supported. The evaluation of start conditions for an activity only occurs when all preceding activities have completed. |
| Cancelling Discriminator |
- |
Not supported. There is no support for the discriminator pattern or any ability to cancel a set of (preceding) activities. |
| Structured N-out-of-M Join |
- |
Not supported. There is no direct support for multiple instance activities. |
| Blocking N-out-of-M Join |
- |
Not supported. There is no direct support for multiple instance activities. |
| Cancelling N-out-of-M Join |
- |
Not supported. There is no direct support for multiple instance activities. |
| Generalised AND-Join |
- |
Not supported. Process models are inherently block structured and an activity cannot receive multiple threads of control from the same incoming branch. |
| Static Partial Join for Multiple Instances |
- |
Not supported. There is no direct support for multiple instance activities. |
| Cancelling Partial Join for Multiple Instances |
- |
Not supported. There is no direct support for multiple instance activities. |
| Dynamic Partial Join for Multiple Instances |
- |
Not supported. There is no direct support for multiple instance activities. |
| Acyclic Synchronizing Merge |
+ |
Supported through the use of dead path elimination where "true" and "false" tokens are passed down branches that are and are not enabled respectively. This allow the OR-join to determine when it should fire. |
| General Synchronizing Merge |
- |
Not supported. No ability to determine when an OR-join should fire based on an overall assessment of the state of a process instance. |
| Critical Section |
- |
Not supported. Subsequent activities are scheduled immediately thus removing any potential for restricting concurrent execution of activities. |
| Interleaved Routing |
- |
Not supported. There is no way to interleave activities without actually enumerating all possible execution sequences within the process model and selecting one of them at runtime. |
| Thread Merge |
- |
No support. Process models are block structured and safe. |
| Thread Split |
- |
No support. Process models are block structured and safe. |
| Explicit Termination |
- |
Not supported. Process instances terminate when there is no remaining work. |