Versions Compared

Key

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

...

Code Block
languagexml
titleThe Split & Join Job Chain
collapsetrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<job_chain  title="Split &amp; Join Chain" name="job_chain">
        <job_chain_node  state="job1" job="job1" next_state="split" error_state="error" />
        <job_chain_node  state="split" job="split_job" next_state="join" error_state="error" />
        <job_chain_node  state="split:job3" job="job3" next_state="job3a" error_state="error" on_error="suspend" />
        <job_chain_node  state="job3a" job="job3a" next_state="join" error_state="error" on_error="suspend" />
        <job_chain_node  state="split:job4" job="job4" next_state="job4a" error_state="error" on_error="suspend" />
        <job_chain_node  state="job4a" job="job4a" next_state="join" error_state="error" on_error="suspend" />
        <job_chain_node  state="join" job="join_job" next_state="job6" error_state="error" />
        <job_chain_node  state="job6" job="job6" next_state="success" error_state="error" />
        <job_chain_node  state="success" />
        <job_chain_node  state="error" />
</job_chain>
Code Block
languagexml
titleThe Start Order for the Split & Join Job Chain
collapsetrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<order  title="Split &amp; Join Processing">
    <run_time />
</order>

...

  • Start the start Order in the JOC Cockpit using, for example, the Start Order Now option in the Job Chains Details tab.
  • The split Job will be processed after job1 has been completed and will generate Orders for the child Job Chain segments starting with job3 and job4 respectively.
  • The order for the main Job Chain will move to the join job where it will be suspended until the number of child Job Chain segment Orders required by the join Job has been completed.
  • The main order will then be de-suspended and processing of the main Job Chain will then proceed with job6.#

Anchor
error-handling
error-handling
Error Handling

To allow for efficient error handling the on_error="suspend" setting should be used for each Node in the child Job Chains as shown in the Job Chain code block above. This setting is made in JOE in the Nodes Tab for the Job Chain Steps/Nodes elements.

The following decision tree summarizes the procedure to be followed if a Job in a split child Job Chain is suspended:

Flowchart
1 [label="Order is suspended at a split node"]
1 -> 2
2 [shape="diamond", label="Can the error \n situation can be resolved?", fillcolor="lightblue"]
2 -> 10 [label="Yes"]
10 [shape="diamond", label="Is rerunning the job \n possible and necessary \n for the actual node?", fillcolor="lightblue"]
10 -> 100 [label="Yes"]
100 [label="Resume the Order"]
10 -> 101 [label="No"]
101 [label="Skip the node with the \n JOC set order state function"]
2 -> 20 [label="No"]
20 [shape="diamond", label="Is rerunning the job \n necessary?", fillcolor="lightblue"]
20 -> 200 [label="Yes"]
200 [label="Cancel the whole process"]
20 -> 201 [label="No"]
201 [label="Skip the node with the \n JOC set order state function"]

The error handling process requires some manual work. This is normally done using the Job Chains view of the JOC Cockpit interface.

  • To skip the error node, use the JOC Cockpit Set Order State function, which is available in the Order Additional Options menu. Then resume the Order using Resume Order.
  • To cancel the whole process delete all split suspended Orders with the JOC Cockpit Delete Order function. Then reset the main Order with the Reset Order function.
  • To add a dummy Order to the join node to satisfy the condition to proceed the main Order use the JOC Cockpit Add Order function.
    You can then either:
    • Add the parameter join_session_id=main_order_id where main_order_id is the order id of the main order.
    • Alternatively, you can:
      • Name the Order with the id main-order-id_any where main-order-id is the Order id of the main Order.
    • Set the start step and the end step to the join node.
    • Then delete the suspended Order if there is one.

Order IDs

The 'main' Order for the split & join download - that is the Order that proceeds job1 -> split -> join -> job6 - has the ID 'start'.

...