job_chain

石曼迪發表於2014-09-30

JOB鏈:JOB之間的相互觸發操作。

實驗意圖:有些JOB具有先後呼叫次序,比如先做一件事情,這件事情做完才能繼續下一件事情,而第一個JOB如果自己掛掉的話,第二個JOB需要正常執行(預設是終止),這時就需要配置JOB鏈,在錯誤的情況下不終止。

實驗步驟:建立2個JOB,test1和test2,第一個需要出異常,第二個正常。

第一個JOB(test1.job.xml)配置如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<job stop_on_error="no" title="Test1." order="yes">
  <script language="shell"><![CDATA[
Call D:\Application\EnterpriseShare.Core\ETL\Runtime\bin\Test1_run.bat
        ]]></script>
</job>

第一個JOB(test2.job.xml)配置如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<job stop_on_error="no" title="Test2" order="yes">
  <script language="shell"><![CDATA[
Call D:\Application\EnterpriseShare.Core\ETL\Runtime\bin\Test2_run.bat
        ]]></script>
</job>

JOB鏈配置(Test.job_chain.xml)如下:

<?xml version="1.0" encoding="ISO-8859-1"?>


<job_chain  orders_recoverable="yes" visible="yes" title="ESD_Cost_Schedule">
    <job_chain_node  state="1" job="/test/test1" next_state="2" error_state="2"/>

    <job_chain_node  state="2" job="/test/test2" next_state="end"/>

    <job_chain_node  state="end"/>
</job_chain>

JOB Order配置(Test,Test.order.xml)如下:

<?xml version="1.0" encoding="ISO-8859-1"?>


<order >
    <params />

    <run_time  let_run="yes" once="yes">
        <period  let_run="yes" repeat="00:03" begin="00:00" end="24:00" when_holiday="ignore_holiday"/>

        <holidays />
    </run_time>
</order>

三分鐘跑一次。

結果:

當第一個job出現異常時,第二個還能繼續執行。