2.4.6 ジョブが異常終了したときに特定の処理を実行する(リカバリーユニットを使ったジョブネットの定義例)
ジョブが異常終了したときにだけ処理を実行させるジョブネットの定義には,リカバリーユニットを使用します。
リカバリーユニットは,ジョブまたはジョブネットの属性定義で[種別]を[リカバリ]とすることで設定できます。また,リカバリー属性は,すべてのジョブおよびジョブネットに設定できます。
(1) リカバリージョブを使ったジョブネットの定義例
「在庫チェックを実行して,在庫数が十分であれば受注伝票を作成する。在庫数が不足している場合はジョブを異常終了して発注伝票を作成したあと,受注伝票を作成する」というジョブネットを,リカバリージョブ使って定義する例を次の図に示します。
この例では,「在庫チェック」は,実行の結果,在庫数が不足している場合は戻り値5以上を返すものとします。
まず,「在庫チェック」の終了判定を[しきい値による判定]とし,[異常しきい値]を4とします。つまり,戻り値が4以下ならば正常終了,戻り値が5以上ならば異常終了します。「在庫チェック」が正常終了した場合に次に実行する「受注伝票作成」は,[種別]は[通常](デフォルト)のままにします。異常終了した場合に実行される「発注伝票作成」は,属性定義の[種別]を[リカバリ]とします。さらに「発注伝票作成」のあとに実行される「受注伝票作成R」も同様に[リカバリ]を設定します。リカバリーユニットの後続ユニットには,リカバリーユニットしか定義できません。
これによって,「在庫チェック」の実行結果,以降のジョブは次のように実行されます。
-
戻り値が4以下の場合
在庫数が十分であるとして「在庫チェック」は正常終了し,後続ジョブの「受注伝票作成」が実行されます。
-
戻り値が5以上の場合
在庫数不足として「在庫チェック」は異常終了し,リカバリージョブの「発注伝票作成」が実行されます。さらに「発注伝票作成」が正常終了すると,リカバリージョブの後続ジョブである「受注伝票作成R」が実行されます。
なお,先行ジョブの異常終了によって実行されたリカバリーユニットが正常終了しても,それらが定義されたジョブネット自体は「異常終了」になります。また,リカバリーユニットに先行ジョブが定義されていない場合,それらが実行されることはなく,「未実行終了」となります。
- 補足事項
-
ORジョブをリカバリージョブとして定義する場合は,ORジョブの先行ジョブとなるイベントジョブも後続ジョブもリカバリージョブとして定義します。
(2) 一つのリカバリーユニットに複数の先行ジョブを定義した例
一つのリカバリーユニットに対して複数の先行ジョブを定義できます。この場合,複数ある先行ジョブのすべてが異常終了したときにだけリカバリーユニットが実行されます。一つのリカバリージョブに複数の先行ジョブを定義した例を次の図に示します。
この場合,リカバリージョブAは,標準ジョブA,標準ジョブB,および標準ジョブCすべてが異常終了した場合にだけ実行されます。また,リカバリージョブBはリカバリージョブAが正常終了したあとに実行されます。