ジョブの終了コードに応じて異なる複数の後続ジョブを 実行するための方法について

Document created by Naruhiro_Yoneshige Employee on Jul 30, 2015
Version 1Show Document
  • View in full screen mode

文書番号:            JTEC002260

製品名:                NSM ジョブ管理オプション

バージョン:         -

OS:                     -


Question

ジョブの終了コードに応じて異なる複数の後続ジョブを実行するための方法について教えて下さい。

ジョブセット jobset01 :
Job0は、ジョブセットの中で最初に稼動するジョブ (戻り値は-1 or 0 or 8)
Job1は、Job0の終了コードが8の場合に実行するジョブ
Job2は、Job0の終了コードが-1の場合に実行するジョブ
Job3は、Job0の終了コードが0の場合に実行するジョブ

 

Answer

ジョブの設定画面には、異常終了時のアクションを設定できる項目があり、この項目を使用するとジョブが異常終了した場合にのみ実行させたいジョブを設定できます。しかしながら、現在の製品仕様では、異常終了時の後続処理として設定できるジョブの数は一つのみであるため、複数のリターンコードが想定されるケースで、リターンコードに応じた複数の後続処理を設定するためにはこの機能だけでは不十分です。
このような場合、メッセージアクションを利用することにより上記のような分岐処理を実現することができます。

(作成例)
前提条件として、Job0 が負数の返り値を返した場合に異常とみなさせるため、Job0 のジョブ詳細画面において、「異常終了」の設定を、以下のように設定して下さい。

アクション : ABORT 終了コード : -9999 から 9999

Unicenterはジョブのリターンコードがこの設定値の範囲内のものかどうかを比較し、範囲内であればジョブを異常終了、範囲外であればジョブを正常終了とみなします。ゼロは例外的に必ず正常終了とみなされるよう予約されています。ジョブを作成する際、デフォルトのABORT終了コード設定は、0002 から 9999 と設定されます。従って、デフォルトの設定では、負のリターンコードが返された場合、設定範囲外のリターンコードを受け取ったことになり、ジョブは正常終了とみなされます。この挙動を防ぐため、終了コード設定を -9999 から 9999 に設定します。この場合、ゼロは範囲内になりますが、Unicenterはゼロのリターンコードを必ず正常終了とみなされますので、結果として、-9999 から 9999 までの数値かつゼロ以外であれば全て異常終了としてみなします。

また、Job0 および Job3 のジョブ設定において、「自動選択」フラグを「はい」に設定して下さい。 Job1 および Job2 ジョブのついては、[自動選択」フラグを「いいえ」に設定して下さい。最後に、Job3 ジョブについて、先行条件として、Job0を設定して下さい。これにより、Job3 ジョブは、Job0 が正常終了した場合のみ実行されます。

次にメッセージアクションを作成します。
Job0 が異常終了した際のメッセージ (CASH_I_0062 xxxx) をメッセージIDとするメッセージレコードをそれぞれ作成します。ジョブが異常終了すると、次のようなメッセージが発生しますので参考にして下さい。

%CASH_I_0062, <ジョブセット名> <ジョブ名> <ジョブ番号> <ジョブ識別番号> <時刻> にノード <実行ノード> で異常終了しました。コード: <終了コード>, 理由: <終了コード>

それぞれのレコードのアクションとして、後続処理として実行させたいジョブをデマンド起動するためのcautilコマンドを設定します。

メッセージID= (リターンコード 8 で異常終了した際のメッセージ)
アクション= cautil demand job id=(jobset01,job1,1)

メッセージID= (リターンコード -1 で異常終了した際のメッセージ)
アクション= cautil demand job id=(jobset01,job2,1)

最後に、作成したメッセージアクションを有効にするため、oprcmd opreload コマンドを実行して下さい。

Attachments

    Outcomes