UML AD Evaluation Results
Evaluation results for UML Activity Diagrams version 2.0 against the workflow control-flow patterns
Pattern |
Rating |
Motivation |
Sequence | + | Directly supported by directed arcs between nodes. |
Parallel Split | + | Supported by the ForkNode construct. It may also be represented implicitly by joining an action or activity to several subsequent actions or activities. |
Synchronization | + | Supported by the JoinNode construct. It can also be implicitly represented. |
Exclusive Choice | + | Supported by the DecisionNode construct where the guard conditions on the outgoing edges are exclusive. |
+ | Supported by the MergeNode construct. | |
Multi-Choice | + | Supported by the ForkNode construct with guard conditions on the outgoing edges. |
Structured Synchronizing Merge | - | Not supported. The specific configuration of the Join-Spec condition to achieve this is unclear. |
Multi-Merge | + | Supported by the MergeNode construct. |
Structured Discriminator | +/- | The specific configuration of the Join-Spec condition to achieve this is unclear. |
Arbitrary Cycles | + | Unstructured cycles can be captured in UML 2.0 ADs. |
Implicit Termination | + | Supported via the FlowFinalNode construct |
Multiple Instances without Synchronization | + | Supported by spawning off new activity instances in a loop. |
Multiple Instances with a Priori Design-Time Knowledge | + | Supported through the use of the ExpansionRegion construct. |
Multiple Instances with a Priori Run-Time Knowledge | + | Supported through the use of the ExpansionRegion construct. |
Multiple Instances without a Priori Run-Time Knowledge | - | Not supported. No means of adding addtional activity instances after commencement. |
Deferred Choice | + | Supported through a ForkNode and a set of AcceptSignal actions, one preceding each action in the choice. |
Interleaved Parallel Routing | - | Not supported. No notion of state within UML 2.0 ADs. |
Milestone | - | Not supported. No notion of state within UML 2.0 ADs. |
Cancel Activity | + | Supported by incorporating the activity in an interruptible region triggered either by a signal or execution of another activity. |
Cancel Case | + | Supported by incorporating all of the activities in an interruptible region triggered either by a signal or execution of another activity. |
Structured Loop | + | Supported via the LoopNode construct. |
Recursion | - | Not supported. No means of specifying recursive composition with a process model. |
Transient Trigger | + | Supported using the AcceptEventAction construct for singal processing with explicit enablement. |
+ | Supported via signals. | |
Cancel Region | + | Supported by the InterruptibleActivityRegion construct. |
Cancel Multiple Instance Activity | + | Supported by including the activity in an interruptible region. |
Complete Multiple Instance Activity | - | No means of cancelling remaining activity instances once a multiple instance activity has commenced. |
Blocking Discriminator | +/- | The specific configuration of the JoinSpec condition to achieve this is unclear. |
Cancelling Discriminator | + | Supported by incorporating the incoming branches to the join in an interruptible region. The join has an outgoing weight of 1 from the interruptible region to the subsequent activity effectively cancelling all other branches when the first branch reaches the join. |
Structured N-out-of-M Join | +/- | The specific configuration of the JoinSpec condition to achieve this is unclear. |
Blocking N-out-of-M Join | +/- | The specific configuration of the JoinSpec condition to achieve this is unclear. |
Cancelling N-out-of-M Join | + | Supported by incorporating the incoming branches to the join in an interruptible region. The join has an outgoing weight of N from the interruptible region to the subsequent activity effectively cancelling all other branches when the Nth branch reaches the join. |
Generalised AND-Join | - | Not supported. JoinNode semantics prevent this situation from arising. |
Static Partial Join for Multiple Instances | - | Not supported. A MI activity can only complete when all N instances specified in the ExpansionRegion have completed. |
Cancelling Partial Join for Multiple Instances | - | Not supported. A MI activity can only complete when all N instances specified in the ExpansionRegion have completed. |
Dynamic Partial Join for Multiple Instances | - | Not supported. A MI activity can only complete when all N instances specified in the ExpansionRegion have completed. |
Acyclic Synchronizing Merge | +/- | The specific configuration of the JoinSpec condition to achieve this is unclear. |
General Synchronizing Merge | - | Not supported. No means of determining when a join should fire based on evaluation of the overall state of the process instance. |
Critical Section | - | Not supported. No means of preventing concurrent execution of a set of activities. |
Interleaved Routing | - | Not supported. No notion of state within UML 2.0 ADs. |
Thread Merge | + | Supported by including a weighted edge after the MI activity to any subsequent activity. |
Thread Split | + | Supported by linking multiple outgoing arcs from an activity (one for each execution thread required) to a MergeNode which then directs the various initiated threads of control down the same branch. |
Explicit Termination | + | Supported via the ActivityFinalNode construct. |
Evaluation results for UML Activity Diagrams version 2.0 against the workflow data patterns
Pattern |
Rating |
Motivation |
Task Data | +/- | Indirectly supported where a local action language is utilised which provides action-specific variables |
Block Data | + | Directly supported through parameters to activities which are accessible to all activity components. |
Scope Data | - | Not supported |
Multiple Instance Data | + | Directly supported through the Expansion Kind and data objects. |
Case Data | - | Not supported |
Folder Data | - | Not supported |
Workflow Data | + | Directly supported through Object-Nodes which are potentially accessible to all of the components in a UML 2.0 AD |
Environment Data | - | Not supported |
Task to Task | + | Directly supported by the ObjectNode construct. |
Block Task to SubWorkflow Decomposition | + | Supported by parameter passing between the block task and the decomposition. |
SubWorkflow Decomposition to Block Task | + | Directly supported by the ExpansionRegion construct (where the ExpansionKind mode is set to parallel) |
To Multiple Instance Task | + | Directly supported by the ExpansionRegion construct (where the ExpansionKind mode is set to parallel). |
From Multiple Instance Task | + | Directly supported by the ExpansionRegion construct (where the ExpansionKing mode is set to parallel) |
Case to Case | - | Not supported |
Task to Environment - Push-Oriented | - | Not supported |
Environment to Task - Pull-Oriented | - | Not supported |
Environment to Task - Push-Oriented | - | Not supported |
Task to Environment - Pull-Oriented | - | Not supported |
Case to Environment - Push-Oriented | - | Not supported |
Environment to Case - Pull-Oriented | - | Not supported |
Environment to Case - Push-Oriented | - | Not supported |
Case to Environment - Pull-Oriented | - | Not supported |
- | Not supported |
|
Environment to Workflow - Pull-Oriented | - | Not supported |
Environment to Workflow - Push-Oriented | - | Not supported |
Workflow to Environment - Pull-Oriented | - | Not supported |
Data Transfer by Value - Incoming | - | Not supported |
Data Transfer by Value - Outgoing | - | Not supported |
Data Transfer - Copy In/Copy Out | - | Not supported |
Data Transfer by Reference - Unlocked | - | Not supported |
Data Transfer by Reference - With Lock | + | Directly supported. The standard means of passing data elements to an activity is via parameters based on data tokens. |
Data Transformation - Input | + | Supported by the ObjectFlow transformation behaviour which allows transformation functions to be applied to data tokens as they are passed along connecting edges between activities. |
Data Transformation - Output | + | Supported by the ObjectFlow transformation behaviour which allows transformation functions to be applied to data tokens as they are passed along connecting edges between activities. |
Task Precondition - Data Existence | + | Directly supported. Both action and activity constructs include local preconditions based on logical expressions framed in OCL. |
Task Precondition - Data Value | + | Directly supported. Both action and activity constructs include local preconditions and postconditions based on logical expressions framed in OCL. |
Task Postcondition - Data Existence | + | Directly supported. Both action and activity constructs include local preconditions and postconditions based on logical expressions framed in OCL. |
Task Postconditon - Data Value | + | Directly supported. Both action and activity constructs include local preconditions and postconditions based on logical expressions framed in OCL. |
Event-Based Task Trigger | + | Supported by the AcceptEventAction construct. |
Data-Based Task Trigger | - | Not supported |
Data-Based Routing | + | Supported via the DecisionNode construct and guard conditions on ActivityEdges |
Evaluation results for UML Activity Diagrams version 2.0 against the workflow resource patterns
Pattern |
Rating |
Motivation |
Direct Allocation | + | Directly supported by basing a partition on a single object (resource) instance. |
Role-Based Allocation | + | Directly supported via classifiers on partitions. |
Deferred Allocation | - | Not supported |
Authorisation | - | Not supported |
- | Not supported | |
Case Handling | - | Not supported |
Retain Familiar | - | Not supported |
Capability Based Allocation | - | Not supported |
History Based Allocation | - | Not supported |
Organisational Allocation | - | Not supported |
Automatic Execution | + | Directly supported |
Distribution by Offer - Single Resource | - | Not supported |
Distribution by Offer - Multiple Resources | - | Not supported |
Distribution by Allocation - Single Resource | + | Resource allocation is immediate once an action is triggered. |
Random Allocation | - | Not supported |
Round Robin Allocation | - | Not supported |
Shortest Queue | - | Not supported |
Early Distribution | - | Not supported |
Distribution on Enablement | + | Directly supported. All actions in a partition are associated with the resource responsible for the partition when they are triggered. |
Late Distribution | - | Not supported |
Resource-Initiated Allocation | - | Not supported |
Resource-Initated Execution - Allocated Work Item | - | Not supported |
Resource-Initiated Execution - Offered Work Item | - | Not supported |
- | Not supported | |
Resource-Determined Work Queue Content | - | Not supported |
Selection Autonomy | - | Not supported |
Delegation | - | Not supported |
Escalation | - | Not supported |
Deallocation | - | Not supported |
Stateful Reallocation | - | Not supported |
Stateless Reallocation | - | Not supported |
Suspension/Resumption | - | Not supported |
Skip | - | Not supported |
Redo | - | Not supported |
Pre-Do | - | Not supported |
Commencement on Creation | + | Directly supported. An action is assumed to be live as soon as it receives a control-flow token |
Commencement on Allocation | - | Not supported |
Piled Execution | - | Not supported |
Chained Execution | + | Directly supported. Once an action is completed, subsequent actions receive a control-flow token and are triggered immediately. |
Configurable Unallocated Work Item Visibility | - | Not supported |
Configurable Allocated Work Item Visibility | - | Not supported |
Simultaneous Execution | + | Directly supported. |
Additional Resources | - | Not supported |