Versions Compared

Key

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

Table of Contents

Scope

  • Describe program flow and decisions that are made during dependency handling

Predecessor Handling

Diagram

Flowchart
  "Start of Program" [shape="oval",label="Start of Program",fillcolor="cornflowerblue"]
 "Get Current Order History" [shape="box",fillcolor="gold",label="Get Order History\nGet last successful execution date\nfor current order"] 
 "Get Predecessor Job Chains" [shape="box",fillcolor="gold",label="Loop Prececessors\nFor each predecessor job chain\nperform the following operations"]

 "Predecessor Job Chain active?" [shape="diamond",fillcolor="limegreen",label="Predecessor Job Chain active?"]
 "Predecessor Job Chain active" [shape="box",fillcolor="palegreen",label="Yes"] 
 "Predecessor Job Chain inactive" [shape="box",fillcolor="palegreen",label="No"]
 "Get Predecessor Job Chain History" [shape="box",fillcolor="gold",label="Get Predecessor Order History\nGet execution history\nfor predecessor orders"]
 "Predecessor Order successfully executed?" [shape="diamond",fillcolor="limegreen",label="Predecessor Order successfully\nexecuted or in synchronisation?"]
 "Predecessor Order successfully executed" [shape="box",fillcolor="palegreen",label="Yes"]
 "Predecessor Order unsuccessfully executed" [shape="box",fillcolor="palegreen",label="No"]
 
 "Predecessor Order end time" [shape="diamond",fillcolor="limegreen",label="Predecessor Order End Time\nearlier than start time of last\nsuccessful execution date\nfor current order?"]
 "Predecessor Order end time earlier" [shape="box",fillcolor="palegreen",label="Yes"]
 "Predecessor Order end time not earlier" [shape="box",fillcolor="palegreen",label="No"]

 "Predecessor Order end time in period?" [shape="diamond",fillcolor="limegreen",label="Predecessor Order End Time\nin period of current order?"]
 "Predecessor Order end time in period" [shape="box",fillcolor="palegreen",label="Yes"]
 "Predecessor Order end time not in period" [shape="box",fillcolor="palegreen",label="No"]

 "Predecessor Job Chain has Running Orders?" [shape="diamond",fillcolor="limegreen",label="Predecessor Job Chain\nhas Running Orders?"]
 "Predecessor Job Chain has Running Orders" [shape="box",fillcolor="palegreen",label="Yes"]
 "Predecessor Job Chain has no Running Orders" [shape="box",fillcolor="palegreen",label="No"]
 
 "Predecessor Order enqueued for period?" [shape="diamond",fillcolor="limegreen",label="Predecessor Order\nenqueued for start time\nperiod of current order?"]
 "Predecessor Order enqueued for period" [shape="box",fillcolor="palegreen",label="Yes"]
 "Predecessor Order not enqueued for period" [shape="box",fillcolor="palegreen",label="No"]

 "Execute Order" [shape="oval",fillcolor="cornflowerblue",label="Execute Order\nProcess order starting with\nthe next job chain node"]
 "Skip Order" [shape="ellipse",fillcolor="cornflowerblue",label="Skip Order\nMove order to the skip node\nstate of the job chain"]

 
 "Start of Program" -> "Get Current Order History"
 "Get Current Order History" -> "Get Predecessor Job Chains"
 "Get Predecessor Job Chains" -> "Predecessor Job Chain active?"
 "Predecessor Job Chain active?" -> "Predecessor Job Chain active"
 "Predecessor Job Chain active?" -> "Predecessor Job Chain inactive"
 "Predecessor Job Chain inactive" -> "Execute Order"
 "Predecessor Job Chain active" -> "Get Predecessor Job Chain History"
 
 "Get Predecessor Job Chain History" -> "Predecessor Order successfully executed?"
 "Predecessor Order successfully executed?" -> "Predecessor Order successfully executed"
 "Predecessor Order successfully executed?" -> "Predecessor Order unsuccessfully executed"

 "Predecessor Order successfully executed" -> "Predecessor Order end time" 
 "Predecessor Order unsuccessfully executed" ->  "Predecessor Job Chain has Running Orders?" 
 
 "Predecessor Order end time" -> "Predecessor Order end time earlier"
 "Predecessor Order end time" -> "Predecessor Order end time not earlier"
 "Predecessor Order end time earlier" -> "Skip Order"
 "Predecessor Order end time not earlier" -> "Predecessor Order end time in period?"
 "Predecessor Order end time in period?" -> "Predecessor Order end time in period"
 "Predecessor Order end time in period?" -> "Predecessor Order end time not in period"
 "Predecessor Order end time in period" -> "Predecessor Job Chain has Running Orders?"
 "Predecessor Order end time not in period" -> "Skip Order"

 "Predecessor Job Chain has Running Orders?" -> "Predecessor Job Chain has Running Orders" 
 "Predecessor Job Chain has Running Orders?" -> "Predecessor Job Chain has no Running Orders" 
 "Predecessor Job Chain has Running Orders" -> "Skip Order"
 "Predecessor Job Chain has no Running Orders" -> "Predecessor Order enqueued for period?"

 "Predecessor Order enqueued for period?" -> "Predecessor Order enqueued for period"
 "Predecessor Order enqueued for period?" -> "Predecessor Order not enqueued for period"
 "Predecessor Order enqueued for period" -> "Skip Order"
 "Predecessor Order not enqueued for period" -> "Execute Order"

Successor Handling

Diagram

Flowchart
 "Start of Program" [shape="oval",fillcolor="cornflowerblue",label="Start of Program"]
 "Get Successor Job Chains" [shape="box",fillcolor="gold",label="Loop Successors\nFor each successor job chain\nperform the following operations"]

 "Successor Job Chain active?" [shape="diamond",fillcolor="limegreen",label="Successor Job Chain active?"]
 "Successor Job Chain active" [shape="box",fillcolor="palegreen",label="Yes"] 
 "Successor Job Chain inactive" [shape="box",fillcolor="palegreen",label="No"]

 "Successor Job Chain has Running Orders?" [shape="diamond",fillcolor="limegreen",label="Successor Job Chain\nhas Running Orders?"]
 "Successor Job Chain has Running Orders" [shape="box",fillcolor="palegreen",label="Yes"]
 "Successor Job Chain has no Running Orders" [shape="box",fillcolor="palegreen",label="No"]
 
 "Get Successor Order History" [shape="box",fillcolor="gold",label="Get Successor Order History\nGet execution history\nfor successor orders"]
 "Successor Order skipped or synchronized?" [shape="diamond",fillcolor="limegreen",label="Successor order previously\nskipped or in synchronisation?"]
 "Successor Order skipped or synchronized" [shape="box",fillcolor="palegreen",label="Yes"]
 "Successor Order not skipped or synchronized" [shape="box",fillcolor="palegreen",label="No"]

 "Successor Order enqueued for period?" [shape="diamond",fillcolor="limegreen",label="Successor Order\nenqueued for period?"]
 "Successor Order enqueued for period" [shape="box",fillcolor="palegreen",label="Yes"]
 "Successor Order not enqueued for period" [shape="box",fillcolor="palegreen",label="No"]

 "Start Successor Order" [shape="oval",label="Start Successor Order\nStart order of successor job chain",fillcolor="cornflowerblue"]
 "NOP" [shape="oval",label="No Operation\nNo operations are performed\non successor job chain",fillcolor="cornflowerblue"]

 
 "Start of Program" -> "Get Successor Job Chains"
 "Get Successor Job Chains" -> "Successor Job Chain active?"
 "Successor Job Chain active?" -> "Successor Job Chain active"
 "Successor Job Chain active?" -> "Successor Job Chain inactive"
 "Successor Job Chain inactive" -> "NOP"
 "Successor Job Chain active" -> "Successor Job Chain has Running Orders?"
 
 "Successor Job Chain has Running Orders?" -> "Successor Job Chain has Running Orders" 
 "Successor Job Chain has Running Orders?" -> "Successor Job Chain has no Running Orders" 
 "Successor Job Chain has Running Orders" -> "NOP"
 "Successor Job Chain has no Running Orders" -> "Successor Order enqueued for period?"

 "Successor Order enqueued for period?" -> "Successor Order enqueued for period"
 "Successor Order enqueued for period?" -> "Successor Order not enqueued for period"
 "Successor Order enqueued for period" -> "Start Successor Order"
 "Successor Order not enqueued for period" -> "Get Successor Order History"

 "Get Successor Order History" -> "Successor Order skipped or synchronized?"
 "Successor Order skipped or synchronized?" -> "Successor Order skipped or synchronized"
 "Successor Order skipped or synchronized?" -> "Successor Order not skipped or synchronized"

 "Successor Order skipped or synchronized" -> "Start Successor Order"
 "Successor Order not skipped or synchronized" -> "NOP"