2.4 さまざまなジョブネット定義
2.4.3 先行ジョブの結果でそのあとの処理を動的に変える(判定ジョブを使っ たジョブネットの定義例)
先行ジョブの終了結果,ファイルの有無,先行ジョブの引き継ぎ情報で,あとの処理内容が動的に変わる ようなジョブネットの定義には,判定ジョブを使用します。
(1) 判定ジョブの使用例
JP1/AJS3 には,前に実行された処理の終了結果によって次に実行する処理の振り分けができる判定ジョ ブというジョブがあります。この判定ジョブには,次に示す二つの判定パターンがあります。
• リターンコードによる判定
• ファイルの有無による判定
ここでは,この二つの判定パターンによる判定ジョブの使用例について説明します。
また,判定ジョブに関連づけられている従属ユニットが異常終了した場合の再実行方法についても説明し ます。
(a) リターンコードによる判定
リターンコードによる判定ジョブの使用例を次の図に示します。
「在庫チェックジョブの実行結果を判定して,在庫数が不足気味の場合は発注伝票を作成し,在庫数に問題 がなければ受注伝票を作成する。」というジョブネットを定義する例で説明します。
図 2‒59 リターンコードによる判定ジョブの使用例
「在庫チェック」は,在庫数が十分である場合は戻り値 3 以下,在庫数が不足気味の場合は戻り値 4,在庫 数が不足している場合は戻り値 5 以上を返すものとします。
上記の図のように処理フローを作成することで,次に示す処理が実行されます。
• 在庫数が十分な場合
リターンコードが「3」以下であるため,「発注伝票作成」をスキップして「受注伝票作成」を実行しま す。
• 在庫数が十分ではない場合
リターンコードが「4」であるため,「発注伝票作成」を実行してから「受注伝票作成」を実行します。
(b) ファイルの有無による判定
ファイルの有無による判定ジョブの使用例を次の図に示します。
図 2‒60 ファイルの有無による判定ジョブの使用例
上記の図のように処理フローを作成することで,「lenchk」という実行ファイル内で実行される,ほかの 処理(命令)での異常も検知して,従属ジョブ「dataput」を実行できます。
なお,ファイルの有無による判定は,業務管理ホスト(JP1/AJS3 - Manager)がインストールされてい るホストのファイルを判定します。ただし,環境設定によっては他ホストのファイルの有無をチェックす ることもできますが,通信障害などによって正しく判定できないおそれがあります。ファイルの有無によっ て判定する場合は,マネージャーホスト上のファイルを指定することを推奨します。詳細については,マ ニュアル「JP1/Automatic Job Management System 3 導入ガイド 3.1.1(1)(c) 判定ジョブ」を参照し てください。
(c) 従属ユニットの再実行方法
従属ユニットの再実行方法は,通常のユニットの再実行方法とは異なります。再実行方法の注意事項は,
マニュアル「JP1/Automatic Job Management System 3 導入ガイド 4.5.11 実行が終了したジョブ ネットやジョブを再実行する」を参照してください。
(2) 判定ジョブを使ったジョブネットの定義例
「在庫チェックジョブの実行結果を判定して,在庫数がやや不足気味の場合は発注伝票を作成し,在庫数に 問題がなければ受注伝票を作成する。在庫数が完全に不足している場合,在庫チェックジョブは異常終了 し,リカバリージョブを実行する。」というジョブネットを,判定ジョブを使って定義する例を次の図に示 します。なお,リカバリージョブについては,「2.4.6 ジョブが異常終了したときに特定の処理を実行する
(リカバリーユニットを使ったジョブネットの定義例)」を参照してください。
図 2‒61 判定ジョブを使ったジョブネットの定義例
この例では,先行ジョブの戻り値で判定しています。「在庫チェック」は,在庫数が十分の場合は戻り値 3 以下,在庫数がやや不足気味の場合は戻り値 4,在庫数が不足している場合は戻り値 5 以上を返すものと します。
まず,「在庫チェック」の[終了判定]を[しきい値による判定]と設定し,[警告しきい値]を「3」,[異 常しきい値]を「4」とします。このように設定することで,「在庫チェック」は実行後に戻り値によって 判定され,次の状態に遷移します。
• 戻り値が 3 以下:「正常終了」状態
• 戻り値が 4:「警告終了」状態
• 戻り値が 5 以上:「異常終了」状態
判定ジョブの判定条件には,[終了コードが判定値と等しい]と設定し,[判定値]を「4」とします。
これによって,「在庫チェック」を実行すると,以降のジョブは次のように実行されます。
•「在庫チェック」の戻り値が 3 以下の場合
判定ジョブでは,判定値 4 と「在庫チェック」の終了コードが合致しないため,従属ジョブの「発注伝 票作成」は実行されないで「受注伝票作成」が実行されます。
•「在庫チェック」の戻り値が 4 であった場合
判定ジョブの判定条件に合致するため,従属ジョブである「発注伝票作成」を実行します。「発注伝票 作成」が正常終了したら「受注伝票作成」を実行します。
•「在庫チェック」の戻り値が 5 以上の場合
リカバリージョブが実行されます。異常終了の場合,後続ジョブは実行されないため,リカバリージョ ブの実行後に「受注伝票作成」は実行されません。
なお,判定ジョブを連続して定義すると,先行ジョブの終了結果に対して,判定ジョブの数だけ処理を定 義できます。判定ジョブを連続して定義した場合について,次に説明します。
(3) 判定ジョブを連続して定義した例
判定ジョブは連続して定義することもできます。
終了コード(戻り値)による判定条件を設定した判定ジョブを連続して定義した場合,2 番目以降の判定 ジョブの判定対象となるのは,始めに定義した判定ジョブの先行ジョブに設定された終了コードです。従 属ユニットの終了コードではありません。
一方,ファイルの有無を判定条件として設定した判定ジョブを連続して定義した場合,2 番目以降の判定 ジョブの判定対象となるのは,始めに定義した判定ジョブが条件判定した時点でのファイル情報ではなく,
自判定ジョブが条件判定する時点でのファイル情報です。
判定ジョブを連続して定義した場合の例を,次の図に示します。
図 2‒62 判定ジョブを連続して定義した例
各ユニットは次のように定義されているものとします。
• 標準ジョブ A:[終了判定]は[しきい値による判定],[警告しきい値]は「5」
• 判定ジョブ B:判定条件は[終了コードが判定値と等しい],[判定値]は「0」
• 判定ジョブ C:判定条件は[終了コードが判定値と等しい],[判定値]は「4」
このジョブネットを実行した場合,標準ジョブ A の戻り値によって,以降のジョブは次のように実行され ます。
• 標準ジョブ A の戻り値が 0 の場合
判定ジョブ B の判定条件に合致するため,判定ジョブ B の従属ジョブである標準ジョブ B'が実行され ます。続いて判定ジョブ C で判定されます。判定ジョブ C の判定条件には合致しないため,判定ジョ ブ C の従属ジョブである標準ジョブ C'は実行されないで標準ジョブ D が実行されます。
• 標準ジョブ A の戻り値が 4 の場合
判定ジョブ B の判定条件には合致しないため,判定ジョブ B の従属ジョブである標準ジョブ B'は実行 されません。続いて判定ジョブ C で判定されます。判定ジョブ C の判定条件に合致するため,判定ジョ ブ C の従属ジョブである標準ジョブ C'が実行されたあと,標準ジョブ D が実行されます。
• 標準ジョブ A の戻り値が 0 と 4 以外の場合
判定ジョブ B の判定条件にも判定ジョブ C の判定条件にも合致しないため,従属ジョブである標準ジョ ブ B',標準ジョブ C'は実行されません。この場合,標準ジョブ D だけが実行されます。
(4) 判定ジョブを並列に定義した例
判定ジョブは並列に定義することもできます。
判定ジョブを並列に定義した場合の例を,次の図に示します。
図 2‒63 判定ジョブを並列に定義した例
各ユニットは次のように定義されているものとします。
標準ジョブ A
[終了判定]:[しきい値による判定]
[警告しきい値]:30 判定ジョブ X
判定条件:終了コードが判定値の範囲内
[下限値]:1 以上
[上限値]:9 以下 判定ジョブ Y
判定条件:終了コードが判定値の範囲内
[下限値]:10 以上
[上限値]:19 以下 判定ジョブ Z
判定条件:終了コードが判定値の範囲外
[下限値]:1 以上
[上限値]:19 以下
それぞれの判定ジョブの判定値の範囲は,次のようになります。
図 2‒64 判定値の範囲
このジョブネットを実行した場合,標準ジョブ A の終了コードによって,以降のジョブは次のように実行 されます。
• 標準ジョブ A の終了コードが 1 以上 9 以下の場合
判定ジョブ X の判定条件に合致するため,判定ジョブ X の従属ジョブである標準ジョブ B が実行され ます。
• 標準ジョブ A の終了コードが 10 以上 19 以下の場合
判定ジョブ Y の判定条件に合致するため,判定ジョブ Y の従属ジョブである標準ジョブ C が実行され ます。
• 標準ジョブ A の終了コードが 1 より小さい,または 19 より大きい場合
判定ジョブ Z の判定条件に合致するため,判定ジョブ Z の従属ジョブである標準ジョブ D が実行され ます。
(5) 注意事項
判定ジョブの結果でルートジョブネットや先行ユニットを再実行する場合は,次の図に示すように再実行 するジョブを従属ジョブとして定義してください。