Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Introduction

  • The Fork Instruction is offered to fork and to join orders allows orders to be forked and joined to enable parallel processing in a workflow.
  • The Fork Instruction allows to create creation of a number of parallel branches that process any further instructions and jobs.
    • Branches can include any number of instructions and jobs.
    • The max. number of parallel branches is limited to 15.
  • When an order enters a Fork Instruction then a child order is created for each branch. Each child order will pass the nodes in its branch independently of parallel child orders.
  • Child orders can return results to parent orders by passing variables.
  • While child orders are running, the parent order waits for its child orders to be completed, i.e. to arrive at the Join Instruction. The parent order therefore is assigned the WAITING state, see JS7 - Order State Transitions.
  • Consider Note that child orders can take the role of parent orders in nested Fork Instructions.

...

  • The Fork Instruction is used for two parallel branches, the names of the branches can be specified.
  • After the child orders for both branches have arrived with the Join Instruction then the parent order will continue with the next node.
  • The Join If Failed property determines the behavior in case the event of failed child orders:
    • If checked then failed child orders terminate immediately and cause the parent order to adopt the FAILED state.
    • If not checked then failed child orders will be halted and allow user intervention to resume execution from an node of the child order's branch.

...

In addition, the Fork Instruction allows to specify which the specification of the child order variables should which are to be passed to the parent order.

...

  • Each branch of a Fork Instruction allows to specify a pair of names and values for variables that are passed to the parent order to be specified:
    • For the parent order a variable with the given name and value is created.
    • Variable names have to be unique across branches, i.e. no two branches can return the same variable names.
    • Users are free to choose variable names for the parent order and to assign variable values of the child order or constant values.
  • The Join Instruction adds any variables declared with branches to the parent order.

Error Handling

Consider Note that child orders can take the role of parent orders in nested Fork Instructions.

...

  • Child orders can be resumed from the current node.
  • Child orders can be resumed from any previous or later node within their branch.
    • For example, the child order can dragged & dropped to one of the nodes within its branch:

       

    • Child orders cannot be resumed from nodes in nested instructions configured with the branch and they cannot be resumed to a node outside of the branch.
    • Child orders can be resumed to the end of the branch, indicating that no further instructions and jobs in the branch should be executed.
      • For example, the child order can be dragged & dropped to the Join node of the Fork Instruction.



      • In this situation the child order is assigned its previous execution state of being successful or failed.
      • For example, a FAILED child order that is resumed from the end of its branch remains in this state and forwards the FAILED state to its parent order.
      • Users who want to force successful execution of a failed child order should resume the child order from a job node that is has been executed successfully.