Pattern |
Rating |
Motivation |
| Sequence |
+ |
Directly supported by arcs connecting activities. |
| Parallel Split |
+ |
Supported by multiple outgoing arcs from an activity. None of the arcs have transition conditions specified. |
| Synchronization |
+ |
Supported by multiple incoming arcs to an activity. None of the arcs have transition conditions specified. |
| Exclusive Choice |
+ |
Supported by multiple outgoing arcs from an activity. All of the arcs have disjoint transition conditions specified. |
Simple Merge |
+ |
Supported by multiple incoming arcs to a place. |
| Multi-Choice |
+ |
Supported by multiple outgoing arcs from an activity. The arcs may have (possibly overlapping) transition conditions specified. |
| Structured Synchronizing Merge |
- |
Processes are not inherently structured. |
| Multi-Merge |
+/- |
Only safe Petri net diagrams can be used. |
| Structured Discriminator |
- |
The discriminator can be modelled by using true conditions in input arcs and extending the network. Unfortunately, the resulting diagram is too complex. |
| Arbitrary Cycles |
+ |
Supported. Any graph structure is allowed. |
| Implicit Termination |
- |
Not supported, explicit termination is needed. |
| Multiple Instances without Synchronization |
+ |
COSA has a three level workflow model, i.e., workflow, flow, and activity. Flows (i.e., workflow instances) can be grouped in one workflow and share information. This combined with a trigger mechanism to create new flows is a possible solution where folders are used to facilitate shared access to common data. |
| Multiple Instances with a Priori Design-Time Knowledge |
- |
There is no means of denoting that an activity should be executed multiple times. |
| Multiple Instances with a Priori Run-Time Knowledge |
- |
There is no means of denoting that an activity should be executed multiple times. |
| Multiple Instances without a Priori Run-Time Knowledge |
- |
There is no means of denoting that an activity should be executed multiple times. |
| Deferred Choice |
+ |
Supported by multiple outgoing arcs from a place. |
| Interleaved Parallel Routing |
+ |
Directly supported through places and also an optional setting of the workflow engine. |
| Milestone |
+ |
Directly supported through places. |
| Cancel Activity |
+ |
Supported by removing tokens from input places. |
| Cancel Case |
- |
Only supported through an API call. |
| Structured Loop |
- |
There is no means of specifying repeated execution of an activity or set of activities. |
| Recursion |
+ |
Recursive definition of process models can be achieved using triggers or the activ_run tool agent. |
| Transient Trigger |
+ |
Supported through trigger construct in synchronous mode. |
Persistent Trigger |
+ |
Supported through trigger construct in asynchronous mode. |
| Cancel Region |
+/- |
Achievable by specifying a shadow cancellation activity for each activity in the cancellation region although the overall diagram is likely to be intractable for anything other than simple process models. |
| Cancel Multiple Instance Activity |
- |
Multiple instance activities are not supported. |
| Complete Multiple Instance Activity |
- |
Multiple instance activities are not supported. |
| Blocking Discriminator |
- |
There is no modelling construct that directly corresponds to this pattern and although the behaviour can be indirectly achieved, the process model required to do is too complex. |
| Cancelling Discriminator |
- |
Similar to WCP28, no direct support. |
| Structured N-out-of-M Join |
- |
There is no modelling construct that directly corresponds to this pattern and although the behaviour can be indirectly achieved, the process model required to do is too complex. |
| Blocking N-out-of-M Join |
- |
Similar to WCP30, no direct support. |
| Cancelling N-out-of-M Join |
- |
Similar to WCP30, no direct support. |
| Generalised AND-Join |
- |
Only safe Petri net diagrams can be used. |
| Static Partial Join for Multiple Instances |
- |
Multiple instance activities are not supported. |
| Cancelling Partial Join for Multiple Instances |
- |
Multiple instance activities are not supported. |
| Dynamic Partial Join for Multiple Instances |
- |
Multiple instance activities are not supported. |
| Acyclic Synchronizing Merge |
+ |
The condition on an input arc to an activity can specified such that it will not be considered when the join condition for the activity is evaluated if the branch to which it belongs is not live. |
| General Synchronizing Merge |
- |
No ability to determine when an OR-join should fire based on a complete evaluation of the overall state of the process instance. |
| Critical Section |
+ |
Supported through the use of a mutex place to prevent concurrent access to the critical section. |
| Interleaved Routing |
+ |
Supported through the use of a mutex place to prevent nominated activities from executing concurrently. |
| Thread Merge |
- |
No ability to merge threads as the process in inherently safe. |
| Thread Split |
- |
No ability to merge threads as the process in inherently safe. |
| Explicit Termination |
+ |
Directly supported, a process instance completes when an end activity is reached. |