Starting a job chain from a running job chain
1. create a job CallJobchain
<?xml version="1.0" encoding="ISO-8859-1"?>
<job order="yes" stop_on_error="no" enabled="yes" name="CallJobchain"> <settings> <log_level><![CDATA[debug9]]></log_level> </settings> <params/> <script language="javascript"> <![CDATA[ function spooler_process()\{ var thisOrder = spooler_task.order; var order = spooler.create_order(); var execute_jobchain = thisOrder.params.value("execute_jobchain"); order.id = thisOrder.id + "_next" ; order.params.merge(thisOrder.params); spooler.job_chain( execute_jobchain ).add_order( order ); return true; \} ]]> </script> <run_time/> </job>
2. create s sync job using job wizzard
<?xml version="1.0" encoding="ISO-8859-1"?>
<job title="Synchronize Job Chains" order="yes" tasks="1" enabled="yes" name="Sync"> <description> <include file="jobs/JobSchedulerSynchronizeJobChains.xml"/> </description> <params/> <script language="java" java_class="sos.scheduler.job.JobSchedulerSynchronizeJobChains" java_class_path=""/> <run_time/> </job>
3. Create a job chain JobchainSampleChainNext with n nodes and add a node with sync job.
<?xml version="1.0" encoding="ISO-8859-1"?>
<job_chain orders_recoverable="yes" visible="yes" name="JobchainSampleChainNext"> <job_chain_node state="100" job="job_sample_4" next_state="sync" error_state="error"/> <job_chain_node state="sync" job="Sync" next_state="success" error_state="error"/> <job_chain_node state="success"/> <job_chain_node state="error"/> </job_chain>
4. Create a job chain sampleNestedJobchain. One node is assigned to CallJobchain. This node sets the parameter execute_jobchain=JobchainSampleChainNext. The sync job is the succesor of this node.
<?xml version="1.0" encoding="ISO-8859-1"?>
<job_chain orders_recoverable="yes" visible="yes" name="sampleNestedChain"> <job_chain_node state="100" job="job_sample_1" next_state="200" error_state="error"/> <job_chain_node state="200" job="job_sample_2" next_state="callNext" error_state="error"/> <job_chain_node state="callNext" job="CallJobchain" next_state="sync" error_state="error"/> <job_chain_node state="sync" job="Sync" next_state="300" error_state="error"/> <job_chain_node state="300" job="job_sample_3" next_state="success" error_state="error"/> <job_chain_node state="success"/> <job_chain_node state="error"/> </job_chain>