Skip to content

Workflow patterns

balis edited this page Feb 10, 2014 · 27 revisions

##Evaluation of HyperFlow with respect to workflow pattern support (http://www.workflowpatterns.com/)##

###Data patterns###

  1. Task Data
  2. Block Data
  3. Scope Data
  4. Multiple Instance Data
  5. Case Data
  6. Folder Data
  7. Workflow Data
  8. Environment Data
  9. Data Interaction - Task to Task
  10. Data Interaction - Block Task to Sub-Workflow Decomposition
  11. Data Interaction - Sub-Workflow Decomposition to Block Task
  12. Data Interaction - to Multiple Instance Task
  13. Data Interaction - from Multiple Instance Task
  14. Data Interaction - Case to Case
  15. Data Interaction - Task to Environment - Push-Oriented
  16. Data Interaction - Environment to Task - Pull-Oriented
  17. Data Interaction - Environment to Task - Push-Oriented
  18. Data Interaction - Task to Environment - Pull-Oriented
  19. Data Interaction - Case to Environment - Push-Oriented
  20. Data Interaction - Environment to Case - Pull-Oriented
  21. Data Interaction - Environment to Case - Push-Oriented
  22. Data Interaction - Case to Environment - Pull-Oriented
  23. Data Interaction - Workflow to Environment - Push-Oriented
  24. Data Interaction - Environment to Workflow - Pull-Oriented
  25. Data Interaction - Environment to Workflow - Push-Oriented
  26. Data Interaction - Workflow to Environment - Pull-Oriented
  27. Data Transfer by Value - Incoming. Yes: by receiving a signal with a data value.
  28. Data Transfer by Value - Outgoing. Yes: by sending a signal with a data value.
  29. Data Transfer - Copy In/Copy Out
  30. Data Transfer by Reference - Unlocked. Yes: data references can be passed in signals instead of actual values.
  31. 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.
  32. Data Transformation - Input. Yes: data can be transformed in the process function, before the actual processing.
  33. Data Transformation - Output. Yes: data can be transformed in the process function, after the actual processing and right before invoking the callback.
  34. Task Precondition - Data Existence
  35. Task Precondition - Data Value
  36. Task Postcondition - Data Existence
  37. Task Postcondition - Data Value
  38. Event-based Task Trigger
  39. Data-based Task Trigger
  40. Data-based Routing. Yes: this pattern can be implemented with a choice process whose function evaluates a condition based e.g. on input signals and sets the condition flag for output signals accordingly. Example: Streaming Map/Reduce workflow.

###Control patterns###

  1. Sequence. Yes: a signal exchanged between two processes automatically establishes a sequence.

  2. Parallel Split. Yes: several output ports of a process connected to multiple other processes automatically split the execution into parallel branches.

  3. Synchronization. Yes: a dataflow process synchronizes all branches of execution associated with its input ports.

  4. Exclusive Choice. Yes: this pattern is enabled by a choice process whose function evaluates the condition and sets the condition flag for one of the output signals.

  5. 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).

  6. Multi-Choice. Yes: the choice process type enables this pattern.

  7. Structured Synchronizing Merge

  8. 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.

  9. Structured Discriminator

  10. Blocking Discriminator

  11. Cancelling Discriminator

  12. Structured Partial Join

  13. Blocking Partial Join

  14. Cancelling Partial Join

  15. 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.

  16. Local Synchronizing Merge

  17. General Synchronizing Merge. Not supported

  18. Thread Merge. Yes: this pattern can be implemented using a choice process, as in the AppEngine image gallery workflow where we need to wait for all image processing 'threads' to finish before we can generate the HTML file. To this end, the MergePaths process gets a count of items to be collected (pathCnt) and for every thumbPath received, it adds it to a collection, decreases the value of the pathCnt emits it to itself. When pathCnt reaches 0, the process emits the other signal (thumbPathList) signal, concluding the merge.

  19. Thread Split. Yes: the parlevel property of a process enables this pattern, as in the AppEngine image gallery workflow.

  20. Multiple Instances without Synchronization

  21. Multiple Instances with a Priori Design-Time Knowledge

  22. Multiple Instances with a Priori Run-Time Knowledge

  23. Multiple Instances without a Priori Run-Time Knowledge

  24. Static Partial Join for Multiple Instances

  25. Cancelling Partial Join for Multiple Instances

  26. Dynamic Partial Join for Multiple Instances

  27. Deferred Choice

  28. Interleaved Parallel Routing

  29. Milestone

  30. Critical Section

  31. Interleaved Routing

  32. Cancel Task

  33. Cancel Case

  34. Cancel Region

  35. Cancel Multiple Instance Activity

  36. Complete Multiple Instance Activity

  37. Arbitrary Cycles

  38. Structured Loop

  39. Recursion

  40. Implicit Termination

  41. Explicit Termination

  42. Transient Trigger

  43. Persistent Trigger

Clone this wiki locally