Introduction
JS7 offers a number of strategies for error handling that are explained in the matrix below.
- Steps for error handling include:
- JS7 - How to detect job errors and warnings
- JS7 - How to handle job errors:
- deciding if a job error can be handled automatically by making:
- an order continue in the workflow,
- an order leave the workflow.
- deciding if a job error requires user intervention.
- deciding if a job error can be handled automatically by making:
- JS7 - How to handle job warnings
- A JS7 - Notifications will be created in the event of job errors and warnings.
The following matrix shows possible combinations for the handling of job errors and warnings:
Use Case | Job | Order | Order History | Notification | User Intervention | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
No. | On Error | On Warning | Stopped | Continued | Finished | Successful | Failed | Optional | Resume Order | Suspend Order | Cancel Order |
Use Case 1 | yes | no | yes | no | no | - | - | yes | yes | yes | yes |
Use Case 2 | yes | no | no | yes | no | - | - | yes | - | - | - |
Use Case 3 | yes | no | no | no | yes | no | yes | yes | - | - | - |
Use Case 4 | yes | no | no | no | yes | yes | no | yes | - | - | - |
Use Case 5 | no | yes | no | yes | no | - | - | yes | - | - | - |
Use Cases
More explanations about workflow instructions used for error handling can be found in the JS7 - How to catch job errors article.
Use Case 1: Job error makes order stop
In this scenario an order stops after a job error. The order is put in the failed state. This is the default behavior if no workflow instructions for error handling are used.
- The History outcome is not determined as the order remains in the workflow. The History outcome will be determined by subsequent User Intervention.
- Notifications are created.
- User Interventions include the following operations:
- Resume Order: The order will be continued at the same, at a previous or at a later workflow instruction.
- Child orders in Fork-Join and ForkList-Join instructions can be resumed within their branch.
- Suspend Order: The order will be suspended and will be resumed or cancelled later on.
- Cancel Order: The order will be cancelled and the History will indicate the failed outcome of order execution.
- Child orders in Fork-Join and ForkList-Join instructions leave their branch with a failed outcome that is adopted by the parent order.
- Resume Order: The order will be continued at the same, at a previous or at a later workflow instruction.
Explanation:
- If any of
job1
,job2
orjob3
raises an error then the order stops and is put in the failed state. - User Intervention is required to resume, to suspend or to cancel the order.
Use Case 2: Job error lets order continue
In this scenario a job error is caught and is handled in a way that lets the order continue in the workflow:
- The History outcome is not determined as the order continues in the workflow. The History outcome will be determined by subsequent workflow instructions.
- Notifications are created.
- User Intervention is not applicable.
Explanation:
- if any of
job1
orjob2
in the Try block raises an error then the empty Catch block will let the order continue. - Leaving the Catch block. the order will continue with
job3
.
Feature Status:
FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.0
- JS-2005Getting issue details... STATUS
For earlier JS7 releases a dummy job has to be added to the Catch block to force a successful outcome for the order.
Explanation:
- if any of
job1
orjob2
in the Try block raises an error then the order will enter the Catch block. - In the Catch block
job2a
is executed.- If
job2a
completes successfully then the order will leave the Catch block and will continue withjob3
. - If
job2a
fails then the order will be put in the failed state, will be stopped and will remain in the Catch block waiting for User Intervention. - Note that Try-Catch instructions can be nested, i.e. in a Catch block another Try-Catch instruction can be used for error handling.
- If
Use Case 3: Job error makes order leave the workflow with failed history outcome
In this scenario a job error is caught and is handled in a way that makes the order leave the workflow:
- The History outcome is specified to be failed as a Fail instruction is used.
- Notifications are created.
- User Intervention is not applicable.
Explanation:
- if any of
job1
orjob2
in the Try block raises an error then the order enters the Catch block. - In the Catch block the Finish instruction makes the order leave the workflow. The Finish instruction is parameterized to create a successful or unsuccessful History outcome when the order leaves the workflow.
- If the above example is applied to child orders, for example in branches of Fork-Join and ForkList-Join instructions then the Fail instruction will make the child order leave the branch.
- An order that enters the Catch block will not execute
job3
.
Feature Status:
FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.0
- JS-2014Getting issue details... STATUS
Use Case 4: Job error makes order leave workflow with successful history outcome
Similar to use case 3 in this scenario a job error is caught and is handled in a way that makes the order leave the workflow:
- The History outcome is specified to be successful as a Try-Catch instruction is used to handle errors.
- Notifications are created.
- User Intervention is not applicable.
Explanation:
- if any of
job1
orjob2
in the Try block raises an error then the order enters the Catch block. - In the Catch block the Finish instruction makes the order leave the workflow.
- If the above example is applied to child orders, for example in branches of Fork-Join and ForkList-Join instructions then the Finish instruction will make the child order leave the branch.
- An order that enters the Catch block will not execute
job3
.
Feature Status:
FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.0
- JS-2005Getting issue details... STATUS
For earlier JS7 releases users have to add a dummy job before the Finish instruction that guarantees successful execution in order to force a successful History outcome.
Use Case 5: Job warning lets order continue
In this scenario job errors are considered warnings based on a selection of job return codes. Such warnings do not require specific error handling, instead the order will continue in the workflow.
- The History outcome is not determined as the order continues in the workflow. The History outcome will be determined from later workflow instructions.
- Notifications are created.
- User Intervention is not applicable.
Explanation:
- If any of
job1
,job2
orjob3
completes with return code 1 this is considered a warning. Any other non-zero return codes are considered errors. - In the event of job warnings the order continues with the next instruction in the workflow.
Feature Status:
FEATURE AVAILABILITY STARTING FROM RELEASE 2.4.1
- JOC-1350Getting issue details... STATUS
For earlier JS7 releases Notifications are not sent in the event of of job warnings.
Notification
A JS7 - Notifications is created for all of the above use cases.
- Notifications are visible from the JOC Cockpit user interface in the Monitor->Notifications view.
- Notifications can be configured to be forwarded:
- by e-mail,
- by writing to a log file,
- by integration with a System Monitor or Message Queue (JMS).
The Monitor->Notifications view displays errors and warnings like this:
Jobs can be exempted from Notifications and they can modify notification settings:
- The Notifications tab in the properties editor of a job allows events to be overruled when notifications are sent by mail:
- Mail on: Users can select one or more of the events ERROR, WARNING, SUCCESS.
- Mail To, Mail Cc, Mail Bcc: Users can specify recipients of e-mail notifications. An empty specification will prevent an e-mail from being sent.
- The settings take precedence over general settings specified for JS7 - Notifications.
Resources
- JS7 - How to detect job errors and warnings
- JS7 - How to handle job errors
- JS7 - How to handle job warnings