Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 設計ガイド(業務設計編)


2.4.3 先行ジョブの結果でそのあとの処理を動的に変える(判定ジョブを使ったジョブネットの定義例)

先行ジョブの終了結果,ファイルの有無,先行ジョブの引き継ぎ情報で,あとの処理内容が動的に変わるようなジョブネットの定義には,判定ジョブを使用します。

〈この項の構成〉

(1) 判定ジョブの使用例

JP1/AJS3には,前に実行された処理の終了結果によって次に実行する処理の振り分けができる判定ジョブというジョブがあります。この判定ジョブには,次に示す二つの判定パターンがあります。

ここでは,この二つの判定パターンによる判定ジョブの使用例について説明します。

また,判定ジョブに関連づけられている従属ユニットが異常終了した場合の再実行方法についても説明します。

(a) リターンコードによる判定

リターンコードによる判定ジョブの使用例を次の図に示します。

「在庫チェックジョブの実行結果を判定して,在庫数が不足気味の場合は発注伝票を作成し,在庫数に問題がなければ受注伝票を作成する。」というジョブネットを定義する例で説明します。

図2‒67 リターンコードによる判定ジョブの使用例

[図データ]

「在庫チェック」は,在庫数が十分である場合は戻り値3以下,在庫数が不足気味の場合は戻り値4,在庫数が不足している場合は戻り値5以上を返すものとします。

上記の図のように処理フローを作成することで,次に示す処理が実行されます。

  • 在庫数が十分な場合

    リターンコードが「3」以下であるため,「発注伝票作成」をスキップして「受注伝票作成」を実行します。

  • 在庫数が十分ではない場合

    リターンコードが「4」であるため,「発注伝票作成」を実行してから「受注伝票作成」を実行します。

(b) ファイルの有無による判定

ファイルの有無による判定ジョブの使用例を次の図に示します。

図2‒68 ファイルの有無による判定ジョブの使用例

[図データ]

上記の図のように処理フローを作成することで,「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‒69 判定ジョブを使ったジョブネットの定義例

[図データ]

この例では,先行ジョブの戻り値で判定しています。「在庫チェック」は,在庫数が十分の場合は戻り値3以下,在庫数がやや不足気味の場合は戻り値4,在庫数が不足している場合は戻り値5以上を返すものとします。

まず,「在庫チェック」の[終了判定]を[しきい値による判定]と設定し,[警告しきい値]を「3」,[異常しきい値]を「4」とします。このように設定することで,「在庫チェック」は実行後に戻り値によって判定され,次の状態に遷移します。

判定ジョブの判定条件には,[終了コードが判定値と等しい]と設定し,[判定値]を「4」とします。

これによって,「在庫チェック」を実行すると,以降のジョブは次のように実行されます。

なお,判定ジョブを連続して定義すると,先行ジョブの終了結果に対して,判定ジョブの数だけ処理を定義できます。判定ジョブを連続して定義した場合について,次に説明します。

(3) 判定ジョブを連続して定義した例

判定ジョブは連続して定義することもできます。

終了コード(戻り値)による判定条件を設定した判定ジョブを連続して定義した場合,2番目以降の判定ジョブの判定対象となるのは,始めに定義した判定ジョブの先行ジョブに設定された終了コードです。従属ユニットの終了コードではありません。

一方,ファイルの有無を判定条件として設定した判定ジョブを連続して定義した場合,2番目以降の判定ジョブの判定対象となるのは,始めに定義した判定ジョブが条件判定した時点でのファイル情報ではなく,自判定ジョブが条件判定する時点でのファイル情報です。

判定ジョブを連続して定義した場合の例を,次の図に示します。

図2‒70 判定ジョブを連続して定義した例

[図データ]

各ユニットは次のように定義されているものとします。

このジョブネットを実行した場合,標準ジョブAの戻り値によって,以降のジョブは次のように実行されます。

(4) 判定ジョブを並列に定義した例

判定ジョブは並列に定義することもできます。

判定ジョブを並列に定義した場合の例を,次の図に示します。

図2‒71 判定ジョブを並列に定義した例

[図データ]

各ユニットは次のように定義されているものとします。

標準ジョブA

[終了判定]:[しきい値による判定]

[警告しきい値]:30

判定ジョブX

判定条件:終了コードが判定値の範囲内

[下限値]:1以上

[上限値]:9以下

判定ジョブY

判定条件:終了コードが判定値の範囲内

[下限値]:10以上

[上限値]:19以下

判定ジョブZ

判定条件:終了コードが判定値の範囲外

[下限値]:1以上

[上限値]:19以下

それぞれの判定ジョブの判定値の範囲は,次のようになります。

図2‒72 判定値の範囲

[図データ]

このジョブネットを実行した場合,標準ジョブAの終了コードによって,以降のジョブは次のように実行されます。

(5) 注意事項

判定ジョブの結果でルートジョブネットや先行ユニットを再実行する場合は,次の図に示すように再実行するジョブを従属ジョブとして定義してください。

図2‒73 判定ジョブの結果でルートジョブネットを再実行する例

[図データ]

再実行するジョブを従属ジョブネット配下に定義した場合,再実行されたジョブが終了するタイミングによっては,従属ジョブネットが再び実行されます。

このため,再実行する前にリカバリー処理などをする場合は,次の図の「■改善前の定義例」のように「リカバリー処理」と「再実行」を一つの従属ジョブネットの中に定義するのではなく,「■改善後の定義例」のように「リカバリー処理」を行う従属ジョブネットと「再実行」を行う従属ジョブとに分けて定義してください。

図2‒74 再実行前にリカバリー処理をする場合の定義例

[図データ]