...
- Set the job attribute stop_on_error to the value
no
(a checkbox right above in the job main formular in JOE) - Add Pre-/Post-processing and insert the following Javascript lines.
- You will find the API documentation at http://www.sos-berlin.com/doc/en/scheduler.doc/api/api.xml.
- Consider the use of scripting languages in the below examples. The use of
<script language="java:javascript">
allows most compatible use of Javascript across 32 bit and 64 bit environments with Java versions up to 1.7 (scripting engine: Rhino) and later (scripting engine: Nashorn). For details see What are the differences between the SpiderMonkey, Rhino and Nashorn scripting engines?
Code Block | ||||
---|---|---|---|---|
| ||||
function spooler_task_after() | ||||
Code Block | ||||
| ||||
function spooler_task_after() { spooler_job.clear_delay_after_error(); var rc = spooler_task.exit_code(); switch(rc) { case 0 : spooler_log.info("Script ended with exit code " + rc); break; case 1 : spooler_log.error("Script ended with exit code " + rc); spooler_log.error("Job will stop"); spooler_job.set_delay_after_error(1, "stop"); break; case 5 : spooler_log.error("Script ended with exit code " + rc); spooler_log.info("Job restarts in 1 hour"); spooler_job.set_state_text( = "Job restarts in 1 hour" ); spooler_job.set_delay_after_error( 1, "01:00:00" ); break; default : spooler_log.warn("Script ended with exit code " + rc); spooler_log.info("Exit code changed to 0"); spooler_task.set_exit_code( = 0 ); break; } } |
The above example is added to a job definition like this:
...
Code Block | ||||
---|---|---|---|---|
| ||||
<job stop_on_error="no"> <script language="shell"><![CDATA[ ./config/live/test/test.sh ]]></script> <monitor name="exit_code_handler" ordering="0"> <script language="java:javascript"><![CDATA[ function spooler_task_after() { spooler_job.clear_delay_after_error(); var rc = spooler_task.exit_code(); switch(rc) { case 0 : spooler_log.info("Script ended with exit code " + rc); break; case 1 : spooler_log.error("Script ended with exit code " + rc); spooler_log.info("Job will stop"); spooler_job.set_state_text( = "Job will stop" ); spooler_job.set_delay_after_error( 1, "stop" ); break; case 5 : spooler_log.error("Script ended with exit code " + rc); spooler_log.info("Job restarts in 1 hour"); spooler_job.set_state_text( = "Job restarts in 1 hour" ); spooler_job.set_delay_after_error( 1, "01:00:00" ); break; default : spooler_log.warn("Job ended with exit code " + rc); spooler_log.info("Exit code changed to 0"); spooler_task.set_exit_code( = 0 ); break; } } ]]> </script> </monitor> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/run_time.xml run_time]> <period single_start="12:00"/> <period begin="00:00:01" end="24:00"/> </run_time> </job> |
...
- Set the job attribute stop_on_error to the value
no
(a checkbox right above in the job main form in JOE) - Add Pre-/Post-processing and insert the below Javascript lines
You will find the API documentation at http://www.sos-berlin.com/doc/en/scheduler.doc/api/api.xml.
...
language | js |
---|---|
collapse | true |
...
The above example is added to a job definition like this:
Code Block | ||||
---|---|---|---|---|
| ||||
<job order="yes" stop_on_error="no"> <script language="shell"><![CDATA[ ./config/live/test/test.sh ]]></script> <monitor name="exit_code_handler" ordering="0"> <script language="javascript"><![CDATA[ function spooler_task_after() { spooler_job.clear_delay_after_error(); var rc = spooler_task.exit_code; switch( rc ); { switch( rc ) { case 0 : spooler_log.info("Script ended with exit code " + rc); break; case 1 : " + rc); break; case 1 : spooler_log.error("Script ended with exit code " + rc); spooler_log.error("suspend order"); spooler_task.order().set_suspended( = true ); spooler_task.order().set_state( = spooler_task.order().state() ); break; ; break; case 5 : spooler_log.error("Script ended with exit code " + rc); spooler_log.info("Order restarts job in 1 hour"); spooler_job.set_state_text( = "Order restarts job in 1 hour" ); spooler_job.set_delay_order_after_setback( 1, "01:00" ); spooler_job.set_max_order_setbacks( = 1 ); spooler_log.error("setback order"); spooler_task.order().setback(); break; default : spooler_log.warn("Script ended with exit code " + rc); spooler_log.info("Exit code changed to 0"); spooler_task.exit_code = 0; var next_state = spooler_task.order().job_chain_node().next_state(); spooler_log.info("order state changed to " + next_state); spooler_task.order.set_state( = next_state ); break; } } ]]></script> </monitor> </job> |