...
- The first job
split1
set some pairs of parameters in a pre-processing to control which job tells that it is successfully completed.- The first parameter of the pair is a flag which is used for a later check if the dependent jobs are successfully completed.
- The value of this parameter is initialised with "0" and will be modified by the dependent jobs with "1".
In above example these are
job4_successfully_completed=0
which will be checked byJob8
andJob11
job6_successfully_completed=0
which will be checked byJob11
job12_successfully_completed=0
which will be checked byJob13
- The second parameter of the pair describes which job commits which job chains that it has successfully completed.
- You need to specify all job chains, in which the order can be located with respect to the checking jobs
- The current job chain (here
JobChain1
) is always the first in the list. - The job chains can specify with its absolute path or relative to the current job chain.
In above example these are
job4_commits_completion_to="/parallelExecutionExamplecontrolParallelExecutionOfJobChainsExample/JobChain1;JobChain4;JobChain5"
job6_commits_completion_to="/parallelExecutionExamplecontrolParallelExecutionOfJobChainsExample/JobChain1;JobChain5"
job12_commits_completion_to="/parallelExecutionExamplecontrolParallelExecutionOfJobChainsExample/JobChain1;JobChain4;JobChain6"
- The first parameter of the pair is a flag which is used for a later check if the dependent jobs are successfully completed.
- The dependent jobs (here
Job4
,
andJob6
) have a post-processing where they resume the ordersJob12
- in all job chains which are specified in the "
commits_completion_to
" parameter - where the value of the "
successfully_completed
" parameter is set to "1"
- in all job chains which are specified in the "
- The jobs which wait of its dependent jobs have a pre-processing where they check the corresponding "
successfully_completed
" parameters- These jobs have a task parameter "
dependent_jobs
" where a list of its dependent jobs are specified. - In above example these are
Job8 : dependent_jobs="Job4"
Job11: dependent_jobs="Job4;Job6"
Job13: dependent_jobs="Job12"
- These jobs have a task parameter "
The above described pre- and post-processings include the attached
control_parallel_execution_of_job_chains.js
file so that you have following small configurationCode Block title pre-processing of split1 collapse true <monitor name="set_params_for_check_jobs" ordering="1"> <script language="javax.script:ecmascript"> <include live_file="control_parallel_execution_of_job_chains.js"/> <![CDATA[ function spooler_process_before(){ //Specify the list of job chains for which Job4 commits that it has run successfully //These job chains can specify relative to the current job chain setParams4CheckingJobs( "Job4", ["Chain4", "Chain5"] ); //Specify the list of job chains for which Job6 commits that it has run successfully //These job chains can specify relative to the current job chain setParams4CheckingJobs( "Job6", ["Chain5"] ); //Specify the list of job chains for which Job12 commits that it has run successfully //These job chains can specify relative to the current job chain setParams4CheckingJobs( "Job12", ["Chain4", "Chain6"] ); spooler_log.info(spooler_task.order().params().xml()); return true; } ]]> </script> </monitor>
Code Block title post-processing of Job4, Job6 and Job12 collapse true <monitor name="commit_successfully_run" ordering="0"> <script language="javax.script:ecmascript"> <include live_file="control_parallel_execution_of_job_chains.js"/> <![CDATA[ function spooler_process_after(spooler_process_result){ return commit_successful_run(spooler_process_result); } ]]> </script> </monitor>
Code Block title pre-processing of Job8, Job11 and Job13 collapse true <monitor name="check_dependent_jobs" ordering="0"> <script language="javax.script:ecmascript"> <include live_file="control_parallel_execution_of_job_chains.js"/> <![CDATA[ function spooler_process_before(){ return check_dependent_jobs(); } ]]> </script> </monitor>
...