Repository navigation
Workflow patterns
balis edited this page Feb 9, 2014
·
27 revisions
##Evaluation of HyperFlow with respect to workflow pattern support (http://www.workflowpatterns.com/)##
###Data patterns###
- Task Data
- Block Data
- Scope Data
- Multiple Instance Data
- Case Data
- Folder Data
- Workflow Data
- Environment Data
- Data Interaction - Task to Task
- Data Interaction - Block Task to Sub-Workflow Decomposition
- Data Interaction - Sub-Workflow Decomposition to Block Task
- Data Interaction - to Multiple Instance Task
- Data Interaction - from Multiple Instance Task
- Data Interaction - Case to Case
- Data Interaction - Task to Environment - Push-Oriented
- Data Interaction - Environment to Task - Pull-Oriented
- Data Interaction - Environment to Task - Push-Oriented
- Data Interaction - Task to Environment - Pull-Oriented
- Data Interaction - Case to Environment - Push-Oriented
- Data Interaction - Environment to Case - Pull-Oriented
- Data Interaction - Environment to Case - Push-Oriented
- Data Interaction - Case to Environment - Pull-Oriented
- Data Interaction - Workflow to Environment - Push-Oriented
- Data Interaction - Environment to Workflow - Pull-Oriented
- Data Interaction - Environment to Workflow - Push-Oriented
- Data Interaction - Workflow to Environment - Pull-Oriented
- Data Transfer by Value - Incoming. Yes: by receiving a signal with a data value.
- Data Transfer by Value - Outgoing. Yes: by sending a signal with a data value.
- Data Transfer - Copy In/Copy Out
- Data Transfer by Reference - Unlocked. Yes: data references can be passed in signals instead of actual values.
- Data Transfer by Reference - With Lock. Yes, indirectly. Support of a mutually accessible data store is considered a separate concern, out of scope of the workflow engine. However, functions can use an external store with a lock mechanism in which workflow processes can share data.
- Data Transformation - Input. Yes: data can be transformed in the process function, before the actual processing.
- Data Transformation - Output. Yes: data can be transformed in the process function, after the actual processing and right before invoking the callback.
- Task Precondition - Data Existence
- Task Precondition - Data Value
- Task Postcondition - Data Existence
- Task Postcondition - Data Value
- Event-based Task Trigger
- Data-based Task Trigger
- Data-based Routing. Yes: this pattern can be implemented with a
choiceprocess whose function evaluates a condition based e.g. on input signals and sets theconditionflag for output signals accordingly. Example: Streaming Map/Reduce workflow.
###Control patterns###
- Sequence. Yes: a signal exchanged between two processes automatically establishes a sequence.
- Parallel Split. Yes: several output ports of a process connected to multiple other processes automatically split the execution into parallel branches.
- Synchronization. Yes: a
dataflowprocess synchronizes all branches of execution associated with its input ports. - Exclusive Choice. Yes: this pattern is enabled by a
choiceprocess whose function evaluates the condition and sets theconditionflag for one of the output signals. - Simple Merge. Yes: both simple and multi-merge can be implemented by having multiple processes produce the same signal to another process (see Multi-Merge pattern below for illustration).
- Multi-Choice. Yes: the
choiceprocess type enables this pattern. - Structured Synchronizing Merge
- Multi-Merge. Yes: both simple and multi-merge can be implemented by having multiple processes produce the same signal to another process, as illustrated below.
- Structured Discriminator
- Blocking Discriminator
- Cancelling Discriminator
- Structured Partial Join
- Blocking Partial Join
- Cancelling Partial Join
- Generalised AND-Join. Yes: Dataflow process type naturally fulfills this pattern owing to the mechanism of queuing signals built into the HyperFlow model of computation.
- Local Synchronizing Merge
- General Synchronizing Merge
- Thread Merge
- Thread Split
- Multiple Instances without Synchronization
- Multiple Instances with a Priori Design-Time Knowledge
- Multiple Instances with a Priori Run-Time Knowledge
- Multiple Instances without a Priori Run-Time Knowledge
- Static Partial Join for Multiple Instances
- Cancelling Partial Join for Multiple Instances
- Dynamic Partial Join for Multiple Instances
- Deferred Choice
- Interleaved Parallel Routing
- Milestone
- Critical Section
- Interleaved Routing
- Cancel Task
- Cancel Case
- Cancel Region
- Cancel Multiple Instance Activity
- Complete Multiple Instance Activity
- Arbitrary Cycles
- Structured Loop
- Recursion
- Implicit Termination
- Explicit Termination
- Transient Trigger
- Persistent Trigger