Starting a job chain from within a running job chain and handing over parameters programmatically can be effected with the following steps.
FEATURE AVAILABILITY STARTING FROM RELEASE 1.7
Create a job CallJobChain
<job order="yes">
<params/>
<script language="javax.script:ecmascript"><![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>
Create a synchronization job with the name sync
<job title="Synchronize Job Chains"
order="yes">
<description>
<include file="jobs/JobSchedulerSynchronizeJobChains.xml"/>
</description>
<params/>
<script language="java"
java_class="sos.scheduler.job.JobSchedulerSynchronizeJobChains"
java_class_path=""/>
<run_time/>
</job>
Create a job chain JobchainSampleChainNext with some nodes and add a node with a synchronization job
<job_chain>
<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>
Create a job chain sampleNestedJobChain
One node is assigned to CallJobChain. This node sets the parameter execute_jobchain to the value JobchainSampleChainNext
. The synchronization job is the succesor of this node.
<job_chain>
<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>