Pattern |
Rating |
Motivation |
Sequence |
+ |
Directly supported by linking activities with sequence flow arcs. |
Parallel Split |
+ |
Supported by AND-split gateway |
Synchronization |
+ |
Supported by AND-join gateway. |
Exclusive Choice |
+ |
Supported by XOR-split gateway. |
Simple Merge |
+ |
Supported by XOR-join gateway. |
Multi-Choice |
+ |
Supported in three distinct ways: via an implicit split with conditions on the arcs, an OR-split or a complex gateway. |
Structured Synchronizing Merge |
+ |
Supported through the OR-join gateway. |
Multi-Merge |
+ |
Supported by XOR-join gateway. |
Structured Discriminator |
+/- |
Although support for this pattern is referred to in the BPMN 1.0 specification, it is unclear how the IncomingCondition expression on the COMPLEX-join gateway 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 consumed, the process instance terminates. |
Multiple Instances without Synchronization |
+ |
Supported via multiple instance task with MI Flow_Condition attribute set to none. |
Multiple Instances with a Priori Design-Time Knowledge |
+ |
Supported via multiple instance task with MI Flow_Condition attribute set to all. |
Multiple Instances with a Priori Run-Time Knowledge |
+ |
Supported via multiple instance task with MI_Condition attribute set at runtime to the actual number of instances required. |
Multiple Instances without a Priori Run-Time Knowledge |
- |
Not supported. There is no means of adding further instances to a multiple instance task once started. |
Deferred Choice |
+ |
Supported via an event-based exclusive gateway followed by either intermediate events using message-based triggers or receive tasks. |
Interleaved Parallel Routing |
- |
Supported for simple tasks via an ad-hoc process but no support for interleaving groups or sequences of tasks. |
Milestone |
- |
Not supported. No support for states. |
Cancel Activity |
+ |
Supported via an error type intermediate event 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 directly supported by activity looping. |
Recursion |
- |
Not supported. No means of specifying recursive composition with a process model. |
Transient Trigger |
- |
Not supported. Triggers are supported through durable messages. |
Persistent Trigger |
+ |
Supported through the use of message events. |
Cancel Region |
+/- |
Partially supported by enclosing the cancellation region in a sub-process and associating an error event with the sub-process to enable cancellation, however the cancellation region is restricted to a connected sub-graph 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 support for this pattern is referred to in the BPMN 1.0 specification, it is unclear how the IncomingCondition expression on the COMPLEX-join gateway 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 type intermediate event. |
Structured N-out-of-M Join |
+/- |
Although support for this pattern is referred to in the BPMN 1.0 specification, it is unclear how the IncomingCondition expression on the COMPLEX-join gateway is specified. |
Blocking N-out-of-M Join |
+/- |
Although support for this pattern is referred to in the BPMN 1.0 specification, it is unclear how the IncomingCondition expression on the COMPLEX-join gateway is specified. |
Cancelling N-out-of-M Join |
+/- |
Although support for this pattern is referred to in the BPMN 1.0 specification, it is unclear how the IncomingCondition expression on the COMPLEX-join gateway is specified. |
Generalised AND-Join |
+ |
Supported by the AND-join gateway. |
Static Partial Join for Multiple Instances |
+/- |
Notionally supported via multiple instance task with MI Flow_Condition attribute set to complex where 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 exactly how the ComplexMI_FlowCondition should be specified. |
Cancelling Partial Join for Multiple Instances |
+/- |
Notionally achievable via a MI task (as for WCP34) which has an error type intermediate event trigger at the boundary. Immediately after the MI task is an activity that issues a cancel event to terminate any remaining MI activities. However the same issue arises as for WCP34 in that it is unclear how the ComplexMI_FlowCondition should be specified. |
Dynamic Partial Join for Multiple Instances |
- |
There is no ability to dynamically add instances to an multiple instance activity. |
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 ad-hoc 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 |
Rating |
Motivation |
Task Data |
+ |
The smallest operational unit in a BPMN diagram is Task. Task data is defined through the attribute Properties of a Task. The Properties defined for a Task are local and can only be used within the Task. |
Block Data |
+ |
Through the attribute Properties of a Sub-Process. The Properties defined for a Sub-Process are local and accessible to all Sub-Process components. |
Scope Data |
- |
Not supported. The Group is a construct introduced purely for visualisation purposes and it does not provide any data handling for the objects it groups together. |
Multiple Instance Data |
+/- |
Two out of three possible scenarios are supported, namely: i) Where a task can be triggered multiple times, e.g., as part of a loop or as a task following a Multiple Merge construct. ii) Where two tasks share the same decomposition. This is supported through the notion of Independent Sub-Processes. iii) Where a task is specifically designated as havng multiple instances in the process model is not supported. The lack of any Properties attribute for the MI (in Table 18, MI Loop Activity Arributes),makes it impossible to handle any instance-specific data for the different instances of a task. |
Case Data |
+ |
Supported through the attribute Properties of a Process. |
Folder Data |
- |
Not supported |
Workflow Data |
- |
Not supported |
Environment Data |
- |
Not supported |
Task to Task |
+ |
i) Through integrated control and data channels. Supported through the notion of Data Objects associated to Sequence Flows. ii) Through distinct control and data channels. Supported through the notion of Data Objects with its Properties attribute. iii) Through global shared data. Global shared data is supported through the attribute Properties of a Process. |
Block Task to SubWorkflow Decomposition |
+ |
i) Implicit data passing through global shared data is applied when a decomposition is realised via an Embedded Sub-Process. ii) Explicit data passing via parameters is applied when a decomposition is realised through an Independent Sub-Process. In such a case the data-transfer is defined through the Input - and OutputPropertyMaps Expression for the Sub-Process. |
SubWorkflow Decomposition to Block Task |
+ |
i) Implicit data passing through global shared data is applied when a decomposition is realised via an Embedded Sub-Process. ii) Explicit data passing via parameters is applied when a decomposition is realised through an Independent Sub-Process. In such a case the data-transfer is defined through the Input - and OutputPropertyMaps Expression for the Sub-Process |
To Multiple Instance Task |
- |
Not supported |
From Multiple Instance Task |
- |
Not supported |
Case to Case |
- |
Not supported |
Task to Environment - Push-Oriented |
+ |
Captured through a message flow flowing from a Task to the boundary of a Pool representing the Environment |
Environment to Task - Pull-Oriented |
+ |
Captured through a message flow flowing from a Task to the boundary of a Pool representing the Environment, followed by a message flow from the Pool (representing the Environment) back to the task |
Environment to Task - Push-Oriented |
+ |
Captured through a message flow flowing from the boundary of a Pool representing the Environment to a Task |
Task to Environment - Pull-Oriented |
+ |
Captured through a message flow flowing from the boundary of a Pool representing the Environment to a Task followed by a message flow flowing from the same Task back to the Pool representing the Environment |
Case to Environment - Push-Oriented |
- |
Not supported. Message flows can indeed be drawn between the boundaries of two pools, one representing the Process the Case instantiates, and other one representing the Environment. However, the semantics of this construct does not capture data exchange at any moment during the execution of the case. |
Environment to Case - Pull-Oriented |
- |
Not supported. Message flows can indeed be drawn between the boundaries of two pools, one representing the Process the Case instantiates, and other one representing the Environment. However, the semantics of this construct does not capture data exchange at any moment during the execution of the case. |
Environment to Case - Push-Oriented |
- |
Not supported. Message flows can indeed be drawn between the boundaries of two pools, one representing the Process the Case instantiates, and other one representing the Environment. However, the semantics of this construct does not capture data exchange at any moment during the execution of the case. |
Case to Environment - Pull-Oriented |
- |
Not supported. Message flows can indeed be drawn between the boundaries of two pools, one representing the Process the Case instantiates, and other one representing the Environment. However, the semantics of this construct does not capture data exchange at any moment during the execution of the case. |
Workflow to Environment - Push-Oriented |
- |
As workflow data is not supported, any data interaction to and from a workflow is not applicable |
Environment to Workflow - Pull-Oriented |
- |
As workflow data is not supported, any data interaction to and from a workflow is not applicable |
Environment to Workflow - Push-Oriented |
- |
As workflow data is not supported, any data interaction to and from a workflow is not applicable |
Workflow to Environment - Pull-Oriented |
- |
As workflow data is not supported, any data interaction to and from a workflow is not applicable |
Data Transfer by Value - Incoming |
+ |
Supported through the notion of InputSets of Activities |
Data Transfer by Value - Outgoing |
+ |
Supported through the notion of OutputSets of Activities |
Data Transfer - Copy In/Copy Out |
+/- |
Partially supported. It occurs when decomposition is realised through Independent Sub-Process. The data attributes to be copied into/out of the Independent Sub-Process are specified through the Input- and OutputPropertyMaps attributes |
Data Transfer by Reference - Unlocked |
- |
Not supported |
Data Transfer by Reference - With Lock |
+ |
As BPMN adopts a token-oriented approach to data passing, the parameters - which typically relate to objects - are consumed (i.e. locked) at activity commencement. |
Data Transformation - Input |
+/- |
Partially supported. It occurs when decomposition is realised through Independent Sub-Process. As the Input- and OutputPropertyMaps are in form of Expressions, we assume that transformation function can be specified through them. |
Data Transformation - Output |
+/- |
Partially supported. It occurs when decomposition is realised through Independent Sub-Process. As the Input- and OutputPropertyMaps are in form of Expressions, we assume that transformation function can be specified through them |
Task Precondition - Data Existence |
+ |
In the cases data transfer is captured through Data Objects, the Boolean attribute RequiredForStart can capture a precondition for data existence. |
Task Precondition - Data Value |
- |
Not supported |
Task Postcondition - Data Existence |
+ |
In the cases data transfer is captured through Data Objects, the Boolean attribute ProducedAtCompletion can capture a postcondition for data existence. |
Task Postconditon - Data Value |
- |
Not supported |
Event-Based Task Trigger |
+ |
Supported through the Message, Timer, Error and Cancel Event constructs |
Data-Based Task Trigger |
+ |
Supported through the Rule Event construct |
Data-Based Routing |
+ |
Supported, as Condition Expressions are possible to specify for Sequence Flows |
Pattern |
Explanation |
Work Item Failure |
SFF-CWC-COM |
An activity can have an error, cancel or compensating event associated with it that terminates the activity and routes control to an exception flow of activities to resolve the issue detected. Other activities are unaffected by the event. |
SFF-CWC-NIL |
As for SFF-CWC-COM except that there are no compensating activities in the exception flow. |
SFC-CWC-COM |
As for SFF-CWC-COM except once the exception flow activities are completed, the thread of control is immediately routed to the activities immediately follwing the failed activity in the normal process flow. |
SFC-CWC-NIL |
As for SFC-CWC-NIL except that the exception flow does not contain any compensating activities. |
SRS-CWC-COM |
As for SFC-CWC-COM except that the exception flow routes the thread of control back to the beginning of the failed activity (i.e. it restarts it) once the compensating activities have been completed. |
SRS-CWC-NIL |
As for SRS-CWC-COM except that there are no compensating activities in the exception flow. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the last node in the exception flow is an end event thus terminating all other active activities in the process instance. |
SFF-RCC-NIL |
As for SFF-RCC-COM except that the only node in the exception flow is an end event. |
Work Item Deadline |
SFF-CWC-COM |
An activity can have a timer event associated with it that terminates the activity and routes control to an exception flow of activities to manage the implications of the deadline expiration. Other activities are unaffected by the event. |
SFF-CWC-NIL |
As for SFF-CWC-COM except that there are no compensating activities in the exception flow. |
SFC-CWC-COM |
As for SFF-CWC-COM except once the exception flow activities are completed, the thread of control is immediately routed to the activities immediately flowing the failed activity in the normal process flow. |
SFC-CWC-NIL |
As for SFC-CWC-NIL except that the exception flow does not contain any compensating activities. |
SRS-CWC-COM |
As for SFC-CWC-COM except that the exception flow routes the thread of control back to the beginning of the failed activity (i.e. it restarts it) once the compensating activities have been completed. |
SRS-CWC-NIL |
As for SRS-CWC-COM except there are no compensating activities in the exception flow. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the last node in the exception flow is an end event thus terminating all other active activities in the process instance. |
SFF-RCC-NIL |
As for SFF-RCC-COM except that the only node in the exception flow is an end event. |
External Trigger |
SFF-CWC-COM |
An activity can have a message event associated with it that triggers when a specific message type is received by the activity. When this occurs, the activity is terminated and control is routed to an exception flow of activities to manage the implications of the trigger received. Other activitiess are unaffected by the event. |
SFF-CWC-NIL |
As for SFF-CWC-COM except that there are no compensating activities in the exception flow. |
SFC-CWC-COM |
As for SFF-CWC-COM except once the exception flow activities are completed, the thread of control is immediately routed to the activities immediately flowing the failed activity in the normal process flow. |
SFC-CWC-NIL |
As for SFC-CWC-NIL except that the exception flow does not contain any compensating activities. |
SRS-CWC-COM |
As for SFC-CWC-COM except that the exception flow routes the thread of control back to the beginning of the failed activity (i.e. it restarts it) once the compensating activities have been completed. |
SRS-CWC-NIL |
As for SRS-CWC-COM except there are no compensating activities in the exception flow. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the last node in the exception flow is an end event thus terminating all other active activities in the process instance. |
SFF-RCC-NIL |
As for SFF-RCC-COM except that the only node in the exception flow is an end event. |
Contraint Violation |
SFF-CWC-COM |
An activity can have a rule event associated with it that triggers when a specific set of specified conditions based on process data elements evaluate to true. When this occurs, the activity is terminated and control is routed to an exception flow of activities to manage the implications of the constraint violation. Other activities are unaffected by the event. |
SFF-CWC-NIL |
As for SFF-CWC-COM except that there are no compensating activities in the exception flow. |
SFC-CWC-COM |
As for SFF-CWC-COM except once the exception flow activities are completed, the thread of control is immediately routed to the activities immediately flowing the failed activity in the normal process flow. |
SFC-CWC-NIL |
As for SFC-CWC-NIL except that the exception flow does not contain any compensating activities. |
SRS-CWC-COM |
As for SFC-CWC-COM except that the exception flow routes the thread of control back to the beginning of the failed activity (i.e. it restarts it) once the compensating activities have been completed. |
SRS-CWC-NIL |
As for SRS-CWC-COM except there are no compensating activities in the exception flow. |
SFF-RCC-COM |
As for SFF-CWC-COM except that the last node in the exception flow is an end event thus terminating all other active activities in the process instance. |
SFF-RCC-NIL |
As for SFF-RCC-COM except that the only node in the exception flow is an end event. |