...
You can download the files from: sample_errorhandling.zip
Code Block |
---|
<job <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job ]order="yes" stop_on_error="no" title="Just a Sample Job" name="job_sample"> <script language="shell"> <![[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script ]language="shell"> <![CDATA[ Echo here is a sample ]]> </script> <run_time<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/run_time.xml run_time]/> </job> |
The first sample
Code Block |
---|
<job order="yes" <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job ]order="yes" stop_on_error="no" name="job_with_exit_code"> <script language="shell"> <![CDATA[[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script ]language="shell"> <![CDATA[ rem this is a shell script ending with an exit code exit 0 ]]> </script> <monitor <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/monitor.xml monitor ]name="exitCodeDispatcher" ordering="0"> <script <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script ]language="javascript"> <![CDATA[ function spooler_task_after()\{ var exitCode = spooler_task.exit_code; var order = spooler_task.order; spooler_log.info ("Exit Code is: " + exitCode); result = true; switch (exitCode ) \{ case 0: //sample to proceed the job chain at another node spooler_log.info("proceeding with next step"); break; case 1: //sample to proceed the job chain at another node order.state="300" break; case 2: //sample to end with an end state order.state="success:2" break; default: //Other exit codes are handled as an error //spooler_log.info("Exit Code of " + order.job_chain + "/" + order.id + " in node " + order.job_chain_node.state + " was " + exitCode); result = false; break; \} //If you want to avoid messages like //2011-08-04 10:13:14.531 [ERROR] (Task sample/job_with_exit_code:1001447) SCHEDULER-280 Process terminated with exit code 1 (0x1) //spooler_task.exit_code = 0; return result; \} //This also could be done in a more generic way //See sample in Step job_with_exit_code_generic ]]> </script> </monitor> <run_time<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/run_time.xml run_time]/> </job> |
The second sample
Code Block |
---|
<job order="yes" <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job ]order="yes" stop_on_error="no" name="job_with_exit_code_generic"> <params/> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/params.xml params]/> <script <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script ]language="shell"> <![CDATA[ rem another sample exit 98 ]]> </script> <monitor name="exitCodeDispatcherGeneric" <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/monitor.xml monitor ]name="exitCodeDispatcherGeneric" ordering="0"> <script languageordering="javascript0"> <![CDATA[ function spooler_task_after()\{ //You define a node with exit.<exitCode> for each possible exitCode //If node is not defined, a default will be used var exitCode = spooler_task.exit_code; var order = spooler_task.order; if (exitCode != 0)\{ newState = "exit." + exitCode; try \{//Checking, wether node is defined in job chain configuration order.job_chain.node( newState ) \} catch (e) \{ order.state = "exit.default"; \} order.state = "exit." + exitCode \} return true; \} [http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script ]language="javascript"> <![CDATA[ function spooler_task_after()\{ //You define a node with exit.<exitCode> for each possible exitCode //If node is not defined, a default will be used var exitCode = spooler_task.exit_code; var order = spooler_task.order; if (exitCode != 0)\{ newState = "exit." + exitCode; try \{//Checking, wether node is defined in job chain configuration order.job_chain.node( newState ) \} catch (e) \{ order.state = "exit.default"; \} order.state = "exit." + exitCode \} return true; \} ]]> </script> </monitor> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/run_time.xml run_time]/> </job> </jobs> |
Here is the job chain
Code Block |
---|
<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain.xml job_chain] orders_recoverable="yes" visible="yes" ]]> title="Sample for a job chain with handling exit codes" </script> </monitor>name="job_chain_exit_code_dispatcher"> <run_time/> </job><[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="firstStep" </jobs> |
Here is the job chain
Code Block |
---|
<job_chain orders_recoverable="yes" visiblejob="yesjob_with_exit_code" titlenext_state="secondStep"Sample for a job chain with handling exit codes" nameerror_state="job_chain_exit_code_dispatcher">error"/> <job <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="firstStepsecondStep" job="job_with_exit_code" next_state="secondStep_generic" errornext_state="error200"/> <job_chain_node state="secondStep" error_state="error"/> job="job_with_exit_code_generic<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="200" nexterror_state="200error" error_state="error"/> <job_chain_node state="200"job="job_sample" errornext_state="error300"/> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="300" job="job_sample" error_state="error" next_state="300"/> <job_chain_node statejob="300job_sample" errornext_state="error400"/> job="job_sample<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="400" nexterror_state="400error"/> <job_chain_node state="400" job="job_sample" error_state="error" next_state="success"/> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml jobjob_chain_node] state="job_samplesuccess"/> next_<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="success:2"/> <job_chain_node state="success"/> <job<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="success:2error"/> <job_chain_node state="error"/> <job<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="exit.99"/> <job<[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="exit.default"/> </job_chain> |