FLOWer Evaluation Results

Evaluation results for FLOWer version 3.51 against the workflow control-flow patterns

Pattern

Rating

Motivation

Sequence + Supported through arcs connecting plan elements.
Parallel Split + Nodes in static, dynamic and sequential subplans have an AND-split semantics.
Synchronization + Nodes in static, dynamic and sequential subplans have an AND-join semantics.
Exclusive Choice + Supported through the plan type system decision (based on data) and the plan type user decision (based on a user selection on the wavefront). Moreover, it is possible to specify guards on the arcs in the static, dynamic and sequential subplans. When a guard evaluates to true the subsequent activity is enabled otherwise it is skipped (status "refused").

Simple Merge

+ Supported by the end nodes of the plan type system decision and the plan type user decision. Multiple incoming arcs in static, dynamic and sequential subplans can be used to merge flows.
Multi-Choice + Supported by guards on arcs in static, dynamic and sequential subplans.
Structured Synchronizing Merge + Supported inside static, dynamic and sequential subplans. Each plan model is directed acyclic graph of nodes representing various plan elements and actions. Nodes with multiple incoming arcs wait for their predecessors to be completed or skipped (called "refused"). If all preceding nodes are skipped or all incoming arcs have a guard evaluating to false, a node is skipped. Otherwise normal processing is resumed. Note that the approach is similar to passing true and false tokens. True tokens correspond to arcs that evaluate to true and get triggered by completed nodes. False tokens correspond to arcs that evaluate to false or arcs that are skipped (i.e., the preceding node is "refused"). The join semantics is that if a node has at least one true token as input it becomes enabled. If all input tokens are false it is skipped (i.e., labeled as "refused").
Multi-Merge +/- It is possible to have multiple concurrent threads using dynamic subplans. Therefore, there is partial support for the pattern. However, since plans are highly structured, it is not possible to have an AND-split/XOR-join type of situation, i.e., the models are essentially "safe" (1-bounded).
Structured Discriminator - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Arbitrary Cycles - Not supported. In fact there are no loops and the language is block structured. Each plan model is directed acyclic graph of nodes representing various plan elements and actions. Iteration is achieved through the sequential subplan and the redo role.
Implicit Termination + Supported, plans can have multiple end nodes. Only if all are completed (or refused), the plan is completed.
Multiple Instances without Synchronization + Directly supported through dynamic subplans. the dynamic subplan can be put into another plan such that subsequent plan elements do not have to wait for the completion of the plan.
Multiple Instances with a Priori Design-Time Knowledge + Directly supported through dynamic subplans. For a dynamic plan, the minimum and maximum number of instances can be selected and the actual number of instances may be based on some expression. This expression can be a constant, thus realizing the pattern. Multiple instance data can be passed and accessed through a so-called dynamic array.
Multiple Instances with a Priori Run-Time Knowledge + Directly supported through dynamic subplans. One can specify a variable number of instances.
Multiple Instances without a Priori Run-Time Knowledge + Directly supported through dynamic subplans. It is possible to create new instances during execution. There is a setting "User may create instances".
Deferred Choice + Although there is no explict notion of state, there are different ways of realizing this pattern: (1) The plan type user decision (based on user selection on the wavefront) can make the implicit choice in some cases. (2) The plan type system decision can make the implicit choice in other cases. Note that a system decision blocks until at least one of its conditions is true. As a consequence, race conditions based on time or external triggers are possible. In the latter case, triggering is handled through data-dependencies rather than explicit control-flow dependencies. (3) Yet another way to use a specific type of deferred choice is by using guards on arcs in a plan model (i.e., inside a static, dynamic or sequential plan) that evaluate to NIL. In this case processing stops until the guard evaluates to true or false. A guard evaluates to NIL if e.g. it contains an undefined variable. Moreover, using the operator "HasValue" this can be exploited. This way a deferred choice may be implemented via data. Note that data can be set from outside the process (e.g., based on a trigger).
Interleaved Parallel Routing +/- Due to the case metaphor there is only one actor working on the case. Therefore, there is no true concurrency and any parallel routing is interleaved. Since true concurrency is not possible, a partial support rating is given.
Milestone +/- There is no direct support for milestones since there is no notion of state. However, in all situations, data dependencies can be used to emaulate the construct. Simply introduce a data element (i.e., place in Petri net terms) for each state for which a milestone needs to be specified.
Cancel Activity +/- It is possible to skip or redo activities. However, it is not possible to withdraw an activity in one branch triggered by an activity in another branch. Skip and redo are explicit user actions. Therefore, they provide only partial support.
Cancel Case +/- It is possible to skip or redo an entire plan. However, skip and redo actions are always explicit user actions. Therefore, they provide only partial support. Note that by defining a data element named cancel and using this data element as a precondition for every activity in the flow it is possible to block a case. Although this is an elegant solution, it is still considered to be indirect.
Structured Loop + Iteration can be achieved through the use of the sequential plan construct
Recursion - Not supported.
Transient Trigger - Triggers can be modeled by setting data elements. There are various ways to wait for data, e.g., using guards on arcs or mandatory data elements of a milestone. The data elements can be considered as persistent. To model transient triggers one needs to reset the data value shortly after it has been set.

Persistent Trigger

+ Triggers can be modeled by setting data elements. There are various ways to wait for data, e.g., using guards on arcs or mandatory data elements of a milestone. This naturally corresponds to persistent triggers.
Cancel Region - Not supported. There is no integrated means of cancelling a group of plans or plan elements.
Cancel Multiple Instance Activity - No direct means of cancelling a dynamic subplan without triggering the next activity.
Complete Multiple Instance Activity +/- A dynamic subplan can have an auto-complete condition can be specified for the subplan based on a variety of conditions however it only completes when all instances have completed. The use of deadlines on a dynamic subplan results in both the remaining instances and all subsequent activities in the process instance being force completed when the deadline is reached.
Blocking Discriminator - Not supported. Note that the auto complete condition of a dynamic subplan cannot be used to continue processing at a higher level while blocking the dynamic subplan until all instances complete.
Cancelling Discriminator - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Structured N-out-of-M Join - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Blocking N-out-of-M Join - Not supported. The remaining subplan activities are forced to complete.
Cancelling N-out-of-M Join - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Generalised AND-Join - Not supported. Note that FLOWer models are "safe" (1-bounded).
Static Partial Join for Multiple Instances - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Cancelling Partial Join for Multiple Instances - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Dynamic Partial Join for Multiple Instances - Not supported. Dynamic subplans can have an auto complete condition however this is only evaluated when all subplans have completed.
Acyclic Synchronizing Merge + Supported inside the static, dynamic and sequential subplans. Each plan model is a directed acyclic graph of nodes representing various plan elements and actions. Nodes with multiple incoming arcs wait for the predecessors to be completed or skipped (called "refused"). If all preceding nodes are skipped or all incoming arcs have a guard evaluating to false, a node is skipped. Otherwise normal processing is resumed.
General Synchronizing Merge - Not supported because each plan model need to correspond to an acyclic graph.
Critical Section +/- Not directly supported. However, data elements can acts as semaphores. There are no concurrency problems because of the write-lock on cases.
Interleaved Routing +/- As for Interleaved Parallel Routing, the case metaphor allows a user to work on any of its constituent activities without regard to their overall sequence. A case is completed when all of its activities have been completed. Although there is no direct means of ensuring that activities are only undertaken one at a time, the fact that they are all undertaken by the same user obviates any potential for concurrency and ensures that they are interleaved.
Thread Merge - Not supported. The case metaphor prevents any possibility of multiple threads of execution.
Thread Split - Not supported. The case metaphor prevents any possibility of multiple threads of execution.
Explicit Termination - Not supported. Plans complete when all end nodes have completed.

Evaluation results for FLOWer version 3.0 against the workflow data patterns

Pattern

Rating

Motivation

Task Data +/- Use of restricted option allows update of data element to be limited to single step but other steps can view data value.
Block Data + Each plan can have its own data elements
Scope Data +/- Restricted data elements allow data update to be limited to defined activities
Multiple Instance Data + Fully supported through dynamic plans
Case Data + Default binding for a data element
Folder Data - Not supported
Workflow Data - Not supported
Environment Data + Supported via mappings, document types and actions
Task to Task + Supported by shared data elements
Block Task to SubWorkflow Decomposition +/- Supported via implicit data passing between shared data elements but no ability to restrict the range of data elements passed
SubWorkflow Decomposition to Block Task +/- As for Pattern 10
To Multiple Instance Task + Each instance of a dynamic plan can have discrete data elements which can be passed to/from it
From Multiple Instance Task + As for Pattern 12
Case to Case +/- Indirectly supported via external database
Task to Environment - Push-Oriented + Supported via the Action Operation and Mapping Object (using Out/Out&Insert type) constructs
Environment to Task - Pull-Oriented + Supported via the mapping construct using In type
Environment to Task - Push-Oriented +/- Values of data elements in forms associated with tasks can be updated via CHIP library API
Task to Environment - Pull-Oriented +/- Values of data elements in forms associated with tasks can be queried via CHIP library API
Case to Environment - Push-Oriented + Supported via the mapping construct using Out/Out&Insert type
Environment to Case - Pull-Oriented + Supported via the mapping construct using In type
Environment to Case - Push-Oriented + Supported via CHIP library API
Case to Environment - Pull-Oriented + Supported via CHIP library API

Workflow to Environment - Push-Oriented

- 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 +/- Supported via InOut mapping construct
Data Transfer by Reference - Unlocked + Standard means of data passing
Data Transfer by Reference - With Lock +/- Limited concurrency support. Case can only be updated by one user at a time but others can still view case data
Data Transformation - Input +/- Indirectly supported via mapping and derived elements
Data Transformation - Output +/- Indirectly supported via mappings and derived elements
Task Precondition - Data Existence + Supported in various ways e.g. milestone defined for a mandatory data element can defer subsequent task initiation until required data element is available
Task Precondition - Data Value + Milestones can also have a condition delaying invocation of subsequent task until condition is met
Task Postcondition - Data Existence + Achieved by making a data element mandatory. Task will not complete until the data element had a defined value
Task Postconditon - Data Value + Modelling elements can have a postcondition. Task will not complete until the postcondition (which should be based on the required parameter value) is met
Event-Based Task Trigger + Milestones can wait for data element to have (specific) value set. External processes can directly update value of data elements via CHIP library and cause case execution to resume. CHIP library also provides facilities to create new cases and plans
Data-Based Task Trigger + Directly supported via inclusion of milestones with data-based conditions preceding tasks that are waiting on the data condition
Data-Based Routing +/- Choices can depend on data but only exclusive choice supported

Evaluation results for FLOWer version 3 against the workflow resource patterns

Pattern

Rating

Motivation

Direct Allocation + Where there is a 1-1 correspondence between a specific role and an actual resource
Role-Based Allocation + Organisational hierarchy is modelled in terms of roles
Deferred Allocation - Not supported
Authorisation + Use of execute roles allows authentication to be enforced

Seperation of Duties

+ Achieved by specifying additional execution constraints (not same user) on plan elements.
Case Handling + Achieved by specifying that all plan elements should have the same user.
Retain Familiar + Directly supported at plan element level
Capability Based Allocation + Cases can be assigned based on data or process elements
History Based Allocation - Not supported
Organisational Allocation +/- Role hierarchy provides limited support for specifying an organisational structure for use in work distribution.
Automatic Execution + Facilitated through the use of automatic actions.
Distribution by Offer - Single Resource - Not supported
Distribution by Offer - Multiple Resources + Default work allocation mechanism is to offer a work item to all participants in a role
Distribution by Allocation - Single Resource + Directly supported where a role corresponds to a specific resource
Random Allocation - Not supported
Round Robin Allocation - Not supported
Shortest Queue - Not supported
Early Distribution + Resources are able to view and execute tasks ahead of the wavefront
Distribution on Enablement + In general, resources are allocated and execute work items on the wave front (i.e. one that have been enabled)
Late Distribution - Not supported
Resource-Initiated Allocation + Directly supported
Resource-Initated Execution - Allocated Work Item + Directly supported
Resource-Initiated Execution - Offered Work Item - Not supported

System Determined Work Queue Content

+ The system presents work items in order of execution sequence
Resource-Determined Work Queue Content + Distinct work trays can be configured for users
Selection Autonomy + Users can execute any work item at, ahead or behind the wavefront
Delegation - Not supported
Escalation - Not supported
Deallocation - Not supported
Stateful Reallocation - Not supported
Stateless Reallocation - Not supported
Suspension/Resumption - Not supported
Skip + Directly supported via skip action
Redo + Users can redo a work item that has already been completed
Pre-Do + Users can undertake a work item ahead of the wavefront
Commencement on Creation - Not supported
Commencement on Allocation - Not supported
Piled Execution - Not supported
Chained Execution + Directly supprted by Open Action Mode setting
Configurable Unallocated Work Item Visibility - Not supported
Configurable Allocated Work Item Visibility + Supported through use of roles to limit visibility of case activities
Simultaneous Execution +/- Only for elements of a dynamic plan
Additional Resources - Not supported

Evaluation results for FLOWer version 3.1 against the workflow exception handling patterns

Pattern

Explanation

Work Item Deadline

AFC-CWC-NIL Allocated work items can be automatically completed once a deadline is reached.
SFC-CWC-NIL Work items in progress can be automatically completed once a deadline is reached.

Contraint Violation

AFC-CWC-NIL A sequential plan can be auto-completed when a specified condition evaluates to true.
SFC-CWC-NIL A sequential plan can be auto-completed when a specified condition evaluates to true.
AFC-CWC-COM A sequential plan can be auto-completed when a specified condition evaluates to true.
SFC-CWC-COM A sequential plan can be auto-completed when a specified condition evaluates to true.