XPDL Evaluation Results
Evaluation results for XPDL version 2.0 against the workflow control-flow patterns
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. |
+ | 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. |
+ | 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. |
Evaluation results for XPDL version 1.0 against the workflow data patterns
Pattern |
Rating |
Motivation |
Task Data | - | Only workflow processes can have data elements. |
Block Data | + | Supported through the block activity construct |
Scope Data | - | Not supported |
Multiple Instance Data | + | Support for distinct data elements in tasks with shared sub-workflow decompositions. |
Case Data | + | A workflow process can have "data elements". In case of nesting the scope is not 100% clear. |
Folder Data | - | Not supported |
Workflow Data | +/- | It appears that the "data fields" of a package can be used for this. Its not clear how the values can be modified. |
Environment Data | - | No explicit support |
Task to Task | + | All tasks refer to the same data |
Block Task to SubWorkflow Decomposition | + | The element "subflow" provides actual parameters which should be matched by the formal parameters of the corresponding workflow process. This is not defined out in detail, but the intension is clear. |
SubWorkflow Decomposition to Block Task | + | As for Pattern 10 |
To Multiple Instance Task | - | No support for multiple instances |
From Multiple Instance Task | - | No support for multiple instances |
Case to Case | +/- | Indirectly achievable via coordinated web services operations in sending and receiving cases. |
Task to Environment - Push-Oriented | + | Data elements can be passed to other web services |
Environment to Task - Pull-Oriented | + | Data can be synchronously required from other web services |
Environment to Task - Push-Oriented | - | Not reported |
Task to Environment - Pull-Oriented | - | Not reported |
Case to Environment - Push-Oriented | - | Not reported |
Environment to Case - Pull-Oriented | - | Not reported |
Environment to Case - Push-Oriented | - | Not reported |
Case to Environment - Pull-Oriented | - | Not reported |
- | Not reported | |
Environment to Workflow - Pull-Oriented | - | Not reported |
Environment to Workflow - Push-Oriented | - | Not reported |
Workflow to Environment - Pull-Oriented | - | Not reported |
Data Transfer by Value - Incoming | +/- | Although call by value is the standard mechanism (see Section 7.1.2.0), there is not explicit data passing between activities. However, the element "subflow" provides actual parameters which should be matched by the formal parameters of the corresponding workflow process. |
Data Transfer by Value - Outgoing | +/- | As for Pattern 27 |
Data Transfer - Copy In/Copy Out | +/- | As for Pattern 27 |
Data Transfer by Reference - Unlocked | + | Directly supported where data is passed implicitly by shared variables |
Data Transfer by Reference - With Lock | - | No support, see Section 7.1.2.1 of WFMC-TC-1025 (Oct. 2002). |
Data Transformation - Input | - | Not mentioned |
Data Transformation - Output | - | Not mentioned |
Task Precondition - Data Existence | - | Not supported |
Task Precondition - Data Value | + | Inclusion of additional edge around task with transition condition that is the negation of required data values allows task to be skipped when values not met. |
Task Postcondition - Data Existence | - | Not supported |
Task Postconditon - Data Value | - | Not supported |
Event-Based Task Trigger | - | Not mentioned |
Data-Based Task Trigger | - | Not supported |
Data-Based Routing | + | Through transition conditions and transition restrictions. Both exclusive choice and multi-choice supported. |
Evaluation results for XPDL version 2.0 against the workflow exception handling patterns
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. |