このサンプルでは1列のjob chain(chain1)が完了した後に2つのJob(testjob1,testjob2)が並列実行され、再度1列のjob chain(chain2)を実行します。
※SOS社のhow toから抜粋
使い方
・添付ファイル「parallel」をダウンロードし、インストールしたJobSchedulerの{SCHEDULER_HOME}/config/live以下に解凍します。
・(オプション)サンプルJob(jobA11, jobB1, testjob1, testjob2, jobC1)のスクリプトを好きなようにカスタマイズします。
・解凍したJobを実行するために、該当JobScheudlerのJOCにアクセスします。(http://scheduler_host:scheduler_port)
・JOCのJOB CHAINSタブを開き、"Show orders"を有効にする為にチェックボックスにチェックします。
・parallel/parallel/chain1 を探します。
・右クリックメニューで"Add order"を選択します。
・デフォルトのまま、submitボタンをクリックします。
このサンプルではchain1に対してorderが発行します。すると、まずjobA11が稼動し、次にjobB1が稼動します。chain1(=jobB1)が完了すると後続Jobとしてtestjob1とtestjob2が稼動します。これら2jobが双方とも終了するとjobC1が最後に稼動します。
仕組み
JobChainは単体だとJobの並列実行がサポートされていません。この例ではjobB1が正常終了した際に後続Jobを稼動させるXMLコマンド(<order>)を発行するように設定し、Jobの並列実行を実装しています。
(jobB1の例)
<job order="yes" stop_on_error="no"> <script language="shell"> <![CDATA[echo %SCHEDULER_JOB_NAME%
]]> </script> <run_time /> <commands on_exit_code="success"> <order job_chain="parallel/original/testjob1_chain" replace="yes" id="1" at="now"/> <order job_chain="parallel/original/testjob2_chain" replace="yes" id="2" at="now"/> </commands></job>Jobの並列実行が完了した後の待ち合わせにはJobSchedulerSynchronizeJobChainsを使用しています。指定されたJobSchedulerSynchronizeJobChainsが全て実行されるまで、その他のJobSchedulerSynchronizeJobChainsはsuspendして待ちます。
(JobSchedulerSynchronizeJobChainsの例)
<job order="yes"> <description > <include file="jobs/JobSchedulerSynchronizeJobChains.xml"/> </description> <script language="java" java_class_path="" java_class="sos.scheduler.job.JobSchedulerSynchronizeJobChains"/> <run_time /></job>