ジョブの終了状態・終了値と後続ジョブ

                                                                             
作成日2023/12/12

はじめに

この記事ではジョブの終了状態・終了値と後続ジョブの動きについてご紹介いたします。

ジョブ管理を行っていると、ジョブフローの中で特定のジョブの実行をスキップしたり、先行ジョブの実行結果によって後続のジョブフローを変化させたりと高度な運用が必要になると思います。

その際に、終了状態、終了値を理解しているとジョブフローの設計がしやすくなります。

では、事例を通して理解を深めていきましょう。

 

1.ジョブの終了状態と終了値

まずは、それぞれの用語・概念を簡単にご紹介します。

・「終了状態」...ジョブの終了時のジョブの状態を表します。終了状態には「正常」、「警告」、「異常」の3つの状態があります。

・「終了値」...ジョブの終了時に処理結果の値(リターンコード)が設定されます。

 

2.運用の事例

Case1.ジョブフロー中のジョブにスキップを設定した場合

例えば、以下のような構成のジョブユニットがあり、
「job01だけ実行させず、job02,03は通常どおり実行したい」という運用要件があるとします。

 

 

 

運用要件を満たすため、下図のようにjob01に「スキップ」を設定します。

 

 

スキップの終了状態をデフォルトの「異常」として設定すると、後続のコマンドジョブ、ジョブユニット全体の終了状態、終了値はどうなるでしょうか?

後続ジョブは待ち条件が未達成となり、うまく動作しません。終了状態「異常」、終了値「-1」となりました。
ジョブユニット配下のコマンドジョブが異常終了したため、ジョブユニット全体も終了状態「異常」となります。

 

 

異常終了の原因は、スキップの設定値と後続ジョブの待ち条件に食い違いがあるためです。

先行ジョブにスキップを設定する時は、後続ジョブの待ち条件に設定した終了状態と終了値を考慮して設定しましょう。

今回の場合は、先行ジョブのスキップの設定は「終了状態:正常」、「終了値:0」にするとよいです。

 

 

以下の画面のように、job01をスキップした上で、job02,03が終了状態「正常」となりますね。
ジョブユニットも終了状態「正常」となりました。

 

 

Case2.ジョブフロー中のジョブに保留を設定した場合

Case1.と同じジョブ構成で、job01に「スキップ」ではなく「保留」を設定するケースを考えてみます。

 

 

 

 

「保留」にしたジョブは実行状態が「保留中」、保留中のジョブの終了状態を待ち条件にした後続ジョブは「待機」となっていますね。ジョブユニットも「実行中」のままで完了しません。
「保留中」も「待機」もジョブが終了していないので、終了状態、終了値は出力されていません。

 

後続ジョブの待ち条件に終了状態・終了値を設定する場合、
先行ジョブに保留を設定すると、後続ジョブは待機中となり実行されなくなります。

ジョブフローの途中のジョブを保留にする際は十分注意しましょう。

 

おわりに

以上、ジョブ管理機能に関する話題をご紹介しました。
先行ジョブの終了状態・終了値を待ち条件に設定する際に、この記事の内容が参考になれば幸いです。

Hinemosのジョブ管理機能で、快適なジョブ運用を実現しましょう。