ジョブのリトライ、サスペンドとレジューム

ジョブの異常終了時の制御

JobSchedulerでは、ジョブが異常終了した場合(原則は戻り値が0以外)のリトライのことをSetBack(セットバック)と呼びます。
また、一旦サスペンドさせて、後でレジュームすることも可能です。

セットバック(リトライ)

セットバックはジョブのSetBackタブで設定します。

joe_job_setback_01

Set Back Count
何回目の実行かを指定します。
Is Maximum
YesにするとそのSet Back Countを最後にリトライを終了します。
Delay
そのSet Back Countでのリトライを実行するまでの待ち時間を指定します。

上図の例では、このように動作します。

10:00(Run Timeに沿った通常の実行)
失敗
10:03(1回目のリトライ)
失敗
10:06(2回目のリトライ)
失敗
10:16(3回目のリトライ)
失敗 →最終的にそのジョブは失敗(ジョブチェーンの場合はエラー時のステートに遷移)

ジョブチェーンでのセットバックの有効化

セットバックを指定したジョブがジョブチェーンに組み込まれている場合、そのままではセットバックは動作しません。

joe_jobchain_setback_01

上図のように、ジョブチェーンノードのOn Errorで、setbackと指定します。

サスペンドとレジューム

ジョブチェーンノードでのOn Errorの設定には、suspend(サスペンド)もあります。

joe_jobchain_suspend_01

サスペンドを指定した場合、ジョブの実行が失敗すると、そのジョブチェーンのオーダーはサスペンド状態に入って動作を停止します。(同じジョブチェーンの他のオーダーには影響を与えません。)

joc_suspend_resume_01

このように、JOCで見てみると、サスペンドに入ったことが分かります。
このオーダーの実行を再開(レジューム)する場合もJOCから操作します。

joc_suspend_resume_02

サスペンドに入ったオーダーを右クリックし、コンテキストメニューからResume orderをクリックします。

ジョブのStop On Errorに注意!

JOEでのジョブの設定で、OptionsタブにあるStop On Errorに注意してください。

joe_stoponerror_01

デフォルトではチェックが入っているのですが、Stop On Errorが有効な場合、ジョブの戻り値が0以外の場合、そこでそのジョブの実行が完全に停止してしまいます。ジョブチェーンに組み込まれている場合、他のオーダーもそのジョブを実行できません。

サスペンドとの違いは下記のとおりです。

suspend
そのオーダーでのみ、そのジョブの実行が停止する(正確には、オーダーの実行が停止する)
Stop On Error
すべてのオーダーで、そのジョブの実行が停止する(ジョブそのものの実行が停止する)