...
- The first job
split1
sets a number of parameters by use of a pre-processing Monitor for later control of successful completion of jobs. For each job to be controlled a pair of parameters is used.:- The first parameter of the pair is a flag which is used for later checking if the dependent job is successfully completed.
- The value of this parameter is initialised with "0" and is modified by the dependent jobs to "1".
In the above example the following parameters are used:
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 to which job chains the information about successful completion is broadcasted.
- The example specifies the job chains for which a suspended order is continued if the current job completes successfully.
- The current job chain (here
JobChain1
) always is always the first in the list. - The job chains can be specified by an absolute path or by a relative path to the current job chain.
In the above example these the following values are used:
job4_commits_completion_to="/controlParallelExecutionOfJobChainsExample/JobChain1;JobChain4;JobChain5"
job6_commits_completion_to="/controlParallelExecutionOfJobChainsExample/JobChain1;JobChain5"
job12_commits_completion_to="/controlParallelExecutionOfJobChainsExample/JobChain1;JobChain4;JobChain6"
- The first parameter of the pair is a flag which is used for later checking if the dependent job is successfully completed.
- The dependent jobs (here
Job4
,
andJob6
) use a post-processing monitor that implements commands to resume the ordersJob12
- in all job chains which are specified by the
commits_completion_to
parameter - where the value of the
successfully_completed
parameter is set to "1".
- in all job chains which are specified by the
- The jobs that wait for dependent jobs make use of a pre-processing monitor that checks the corresponding
successfully_completed
parameters.- These jobs use a task parameter
dependent_jobs
that specifies a list of dependent jobs. - In above example these are
Job8 : dependent_jobs="Job4"
Job11: dependent_jobs="Job4;Job6"
Job13: dependent_jobs="Job12"
- These jobs use a task parameter
The above described pre- and post-processing monitors include the attached
control_parallel_execution_of_job_chains.js
JavaScript like this:Code Block title pre-processing of split1 collapse true <monitor name="set_params_for_check_jobs" ordering="1"> <script language="java:javascript"> <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"] ); 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="java:javascript"> <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="java:javascript"> <include live_file="control_parallel_execution_of_job_chains.js"/> <![CDATA[ function spooler_process_before() { return check_dependent_jobs(); } ]]> </script> </monitor>
...