Versions Compared

Key

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

...

  1. Set the job attribute stop_on_error to the value no (a checkbox right above in the job main formular in JOE)
  2. Add Pre-/Post-processing and insert the following Javascript lines. 
Code Block
languagejs
collapsetrue
function spooler_task_after() 
Code Block
languagejs
collapsetrue
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
languagexml
collapsetrue
<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>

...

  1. Set the job attribute stop_on_error to the value no (a checkbox right above in the job main form in JOE)
  2. 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.
     

...

languagejs
collapsetrue

...

  1. api/api.xml.

  1.  

The above example is added to a job definition like this:

 

Code Block
languagexml
collapsetrue
<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>