ジョブの異常終了時の制御
JobSchedulerでは、ジョブが異常終了した場合(原則は戻り値が0以外)のリトライのことをSetBack(セットバック)と呼びます。
また、一旦サスペンドさせて、後でレジュームすることも可能です。
セットバック(リトライ)
セットバックはジョブのSetBackタブで設定します。
- 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回目のリトライ)
- 失敗 →最終的にそのジョブは失敗(ジョブチェーンの場合はエラー時のステートに遷移)
ジョブチェーンでのセットバックの有効化
セットバックを指定したジョブがジョブチェーンに組み込まれている場合、そのままではセットバックは動作しません。
上図のように、ジョブチェーンノードのOn Errorで、setbackと指定します。
サスペンドとレジューム
ジョブチェーンノードでのOn Errorの設定には、suspend(サスペンド)もあります。
サスペンドを指定した場合、ジョブの実行が失敗すると、そのジョブチェーンのオーダーはサスペンド状態に入って動作を停止します。(同じジョブチェーンの他のオーダーには影響を与えません。)
このように、JOCで見てみると、サスペンドに入ったことが分かります。
このオーダーの実行を再開(レジューム)する場合もJOCから操作します。
サスペンドに入ったオーダーを右クリックし、コンテキストメニューからResume orderをクリックします。
ジョブのStop On Errorに注意!
JOEでのジョブの設定で、OptionsタブにあるStop On Errorに注意してください。
デフォルトではチェックが入っているのですが、Stop On Errorが有効な場合、ジョブの戻り値が0以外の場合、そこでそのジョブの実行が完全に停止してしまいます。ジョブチェーンに組み込まれている場合、他のオーダーもそのジョブを実行できません。
サスペンドとの違いは下記のとおりです。
- suspend
- そのオーダーでのみ、そのジョブの実行が停止する(正確には、オーダーの実行が停止する)
- Stop On Error
- すべてのオーダーで、そのジョブの実行が停止する(ジョブそのものの実行が停止する)