2.4.9 動的に変わる情報を後続ユニットに引き継ぐ(引き継ぎ情報設定ジョブを使ったジョブネットの定義例)
動的に変化する情報を使った処理を実行させるようなジョブネットの定義には,引き継ぎ情報設定ジョブを使用します。
引き継ぎ情報設定ジョブでは,先行ジョブの標準出力ファイルから必要な情報を切り出してグローバルマクロ変数に設定し,後続ユニットへ引き継ぎます。グローバルマクロ変数とは,マクロ変数の一種で,引き継ぎ情報設定ジョブによって設定されるマクロ変数のことです。マクロ変数の詳細については,「2.2.6 マクロ変数の使用を検討する」を参照してください。
引き継ぎ情報設定ジョブを使用した情報の引き継ぎの例を次に示します。
|
各ユニットは,次のように定義されているものとします。
-
PCジョブA
-
実行ファイル名:日付を標準出力に出力するバッチファイル
-
標準出力ファイル名:ファイル名
-
-
引き継ぎ情報設定ジョブ
-
正規表現:「DATE=(.*)」
-
出力マクロ変数:「?AJS2FILEDATE?」
-
-
ログファイル監視ジョブ
-
ログファイル名:「?AJS2FILEDATE?.txt」
-
トラップデータ:「Error」
-
-
PCジョブB
-
実行ファイル名:エラー対処のバッチファイル
-
PCジョブAおよびPCジョブBの実行ファイル名に指定するバッチファイルは,ジョブ実行前に作成しておく必要があります。
このジョブネットを実行すると,次のように実行されます。
-
PCジョブAが,日付情報を標準出力ファイルに出力する。
標準出力ファイルに「DATE=20XX1010」と出力されます。
-
引き継ぎ情報設定ジョブが,PCジョブAが出力した標準出力ファイルから日付部分を切り出す。
マクロ変数「?AJS2FILEDATE?」に「20XX1010」が設定されます。
-
ログファイル監視ジョブが,ファイルを監視する。
「20XX1010.txt」という名前のファイルに「Error」という文字列が書き込まれたら,条件が成立します。
-
PCジョブBが,エラー対処の処理を実行する。
- 〈この項の構成〉
(1) 定義方法
引き継ぎ情報設定ジョブを使用するための,先行ジョブ,引き継ぎ情報設定ジョブ,および後続ユニットの定義方法について説明します。
(a) 引き継ぎ情報設定ジョブの先行ジョブ
引き継ぎ情報設定ジョブの先行ジョブは,次の条件をすべて満たしている必要があります。
-
先行ジョブが一つ以上ある
-
先行ジョブのうち,次の条件をすべて満たすものが一つだけある
-
PCジョブ※1,UNIXジョブ※1,フレキシブルジョブ※2,HTTP接続ジョブ,およびカスタムジョブのどれか
-
標準出力ファイル名に,ファイル名または「$JP1AJS2_JPQSTDOUTTEMP$」の指定がある※3,※4
-
実行したときに結果を標準出力ファイルに出力する
- 注※1
-
キューレスジョブを除きます。
- 注※2
-
フレキシブルジョブの後続の引き継ぎ情報設定ジョブが引き継げる標準出力ファイルの内容は,4,096バイトまでです。4,096バイトを超える値を出力しても,使用できるのは4,096バイト分までです。4,096バイトの制限は,中継エージェントおよび宛先エージェントの両方で実施します。このため,中継エージェントと宛先エージェントの両方の文字コードで,4,096バイト以内となるようにしてください。なお,4,096バイトから4,097バイト目のデータがマルチバイト文字の場合は,「?」に置き換えられます。
- 注※3
-
ジョブの標準出力ファイルをエージェントホストに残したい場合は,ファイル名を指定します。指定したファイルがマネージャーホストに転送されても,エージェントホストに残ります。
ジョブの標準出力ファイルをエージェントホストに残す必要がない場合は,「$JP1AJS2_JPQSTDOUTTEMP$」を指定します。この場合,標準出力ファイルは,エージェントホストの一時ファイルに出力され,マネージャーホストに転送されます。追加書きを指定しても無効です。マネージャーホストに転送されたファイルのファイル名は,ajsshowコマンドの-iオプションに2バイトフォーマット指示子の「%so」を指定すると確認できます。
- 注※4
-
フレキシブルジョブの場合,「$JP1AJS2_JPQSTDOUTTEMP$」の指定は不要です。
-
- 注意事項
-
-
引き継ぎ情報設定ジョブを判定ジョブの従属ジョブとして定義した場合は,判定ジョブの先行ジョブが引き継ぎ情報設定ジョブの先行ジョブとして扱われます。そのため,判定ジョブの先行ジョブに標準出力ファイル名の指定が必要です。
-
ファイル受信制限の設定によって標準出力ファイルの受信処理が中止された場合,標準出力ファイルが完全に作成されません。このような場合,不完全な標準出力ファイルでも引き継ぎ情報設定ジョブで情報が切り出せるかどうか確認してください。なお,JP1/AJS3を新規インストールした場合,5メガバイトを越えるデータを破棄するように設定されます。この設定によって情報の切り出しに失敗する場合は,環境設定パラメーターLimitReceiveFileSizeの値を適切に設定してください。
-
ファイル送信制限の設定によって標準出力ファイルの送信処理が中止された場合,標準出力ファイルが完全に作成されません。このような場合,不完全な標準出力ファイルでも引き継ぎ情報設定ジョブで情報が切り出せるかどうか確認してください。なお,JP1/AJS3を新規インストールした場合,3メガバイトを超えるデータを破棄するように設定されます。この設定によって情報の切り出しに失敗する場合は,環境設定パラメーターLimitSendFileSizeの値を適切に設定してください。
-
(b) 引き継ぎ情報設定ジョブ
引き継ぎ情報設定ジョブには,次の指定をします。
- 正規表現
-
先行ジョブが出力した標準出力ファイルから必要な情報を切り出すための,正規表現を指定します。
- 出力マクロ変数
-
正規表現に従って切り出した情報を設定する,マクロ変数名を指定します。
先行ジョブが出力した標準出力ファイルのどの行にも正規表現が一致しない場合,出力マクロ変数にはNULL文字列が設定されます。
引き継ぎ情報設定ジョブが実行終了したときの戻り値を,次の表に示します。
先行ジョブの戻り値 |
引き継ぎ情報設定ジョブの戻り値 |
条件 |
---|---|---|
0 |
0 |
すべての正規表現が一致した場合 |
1 |
一致しない正規表現が一つ以上あった場合 |
|
20以上 |
その他のエラーが発生した場合 |
|
0以外 |
先行ジョブの戻り値 |
環境設定パラメーターPassingInfoUsePreRcが「1」の場合 |
0 |
環境設定パラメーターPassingInfoUsePreRcに「0」を設定し,かつ,すべての正規表現が一致した場合 |
|
1 |
環境設定パラメーターPassingInfoUsePreRcに「0」を設定し,かつ,一致しない正規表現が一つ以上あった場合 |
|
20以上 |
環境設定パラメーターPassingInfoUsePreRcに「0」を設定し,かつ,その他のエラーが発生した場合 |
一致しない正規表現があっても後続ユニットの実行を継続したい場合は,次に示す方法で対処してください。
-
環境設定パラメーターPassingInfoUsePreRcが「0」の場合
引き継ぎ情報設定ジョブの異常しきい値に「1」に設定してください。
-
環境設定パラメーターPassingInfoUsePreRcが「1」の場合
先行ジョブの戻り値が0になるようにして,引き継ぎ情報設定ジョブの異常しきい値を「1」に設定してください。
実行終了した引き継ぎ情報設定ジョブを再実行すると,出力マクロ変数には,再実行時の標準出力ファイルおよび正規表現に従って切り出した情報が再設定されます。
引き継ぎ情報設定ジョブで指定した正規表現は,使用する正規表現をJP1/Baseで拡張しているかどうかに関係なく,拡張正規表現として扱われます。拡張正規表現の詳細については,マニュアル「JP1/Base 運用ガイド」の,拡張正規表現について記載されている個所を参照してください。
拡張正規表現の指定方法を次に示します。
-
切り出したい部分を「(」と「)」で囲む。
-
「.(ピリオド)」は,改行文字以外の任意の1文字を意味する。
-
「$」は,末尾指定(後方一致)を意味する。
- 注意事項
-
-
複数組の「(」および「)」を指定した場合は,いちばん左の組での指定と一致する文字列が切り出されます。
-
「(」および「)」を指定しない場合は,拡張正規表現全体と一致する文字列が切り出されます。
-
行単位に,指定した拡張正規表現で切り出します。複数行にわたる切り出しはできません。
-
「(」に対応する「)」がないなど,文法が正しくない拡張正規表現を指定した場合,引き継ぎ情報設定ジョブは異常終了します。
-
標準出力ファイルの1行当たりの長さは,最大1,024バイトです。1,024バイトを超える行に対して切り出し処理を実行すると,引き継ぎ情報設定ジョブが異常終了します。
-
拡張正規表現に一致する文字列が複数ある場合,ファイルの先頭から最初に一致した文字列を切り出します。
-
拡張正規表現で切り出される情報の例を,次の表に示します。
切り出し対象の 文字列 |
パターン |
拡張正規表現 |
切り出される情報 |
---|---|---|---|
abcdefghi |
一組の「(」「)」を指定 |
abc(...)ghi |
def |
複数組の「(」「)」を指定 |
abc(.)(.)(.)ghi |
d |
|
「(」「)」を指定しない |
...$ |
ghi |
(c) 引き継ぎ情報設定ジョブの後続ユニット
引き継ぎ情報設定ジョブの出力マクロ変数に指定した,マクロ変数名を指定します。
(2) 引き継ぎ情報の有効範囲
引き継ぎ情報の有効範囲は,ルートジョブネット配下です。ただし,引き継ぎ情報設定ジョブで切り出した引き継ぎ情報がマクロ変数に設定されるのは,引き継ぎ情報設定ジョブの実行後です。引き継ぎ情報設定ジョブの実行前は,マクロ変数に設定された値を参照できません。引き継ぎ情報設定ジョブが設定したマクロ変数は,ジョブの再実行時にもそのまま使用されます。
次の条件を例に,実行したジョブとマクロ変数の値について説明します。
-
ジョブAおよびジョブBに,マクロ変数「?AJS2PRM?」を定義
-
引き継ぎ情報設定ジョブに,「?AJS2PRM?」に「PARAM」を指定
図2‒90 引き継ぎ情報設定ジョブの例
この図の場合で,実行したジョブとその時点でのマクロ変数の値について次の表に示します。
実行したジョブ |
マクロ変数の値 |
---|---|
ジョブA |
?AJS2PRM? |
引き継ぎ情報設定ジョブ |
− |
ジョブB |
PARAM |
ジョブA(再実行) |
PARAM |
(3) 引き継ぎ結果の参照
引き継ぎ情報設定ジョブが含まれるジョブネットの定義によって,引き継ぎ結果の参照可否が異なります。
引き継ぎ結果の確認方法については,「2.2.6(2) マクロ変数の確認」を参照してください。
引き継ぎ結果の参照可否について説明します。
(a) 関連線がない
引き継ぎ情報設定ジョブと関連線がないジョブの場合,引き継ぎ情報設定ジョブが先に実行されていれば参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
引き継ぎ情報設定ジョブが先に実行されていれば,参照できる。再実行時も同様。 引き継ぎ情報設定ジョブがあとで実行された場合は,参照できない。 |
ジョブB |
引き継ぎ情報設定ジョブが先に実行されていれば,参照できる。再実行時も同様。 引き継ぎ情報設定ジョブがあとで実行された場合は,参照できない。 |
ジョブC |
ルートジョブネット実行時は参照できない。 ジョブCの再実行時は参照できる。 |
(b) ネストジョブネット
ネストジョブネット中の引き継ぎ情報設定ジョブの引き継ぎ結果は,ルートジョブネット中のジョブでも参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
ルートジョブネット実行時は参照できない。 ジョブAの再実行時は参照できる。 |
ジョブB |
参照できる。 |
ジョブC |
ルートジョブネット実行時は参照できない。 ジョブCの再実行時は参照できる。 |
ジョブD |
参照できる。 |
(c) リモートジョブネット
リモートジョブネットを含むジョブネットに引き継ぎ情報設定ジョブを定義している場合の,引き継ぎ結果の参照可否について説明します。
■ ルートリモートジョブネットの場合
ルートリモートジョブネットに引き継ぎ情報設定ジョブがある場合,ルートリモートジョブネット内で引き継ぎ結果を参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
ルートジョブネット実行時は参照できない。 ジョブAの再実行時は参照できる。 |
ジョブB |
参照できる。 |
■ ネストリモートジョブネットの場合(ルートジョブネット中に引き継ぎ情報設定ジョブがある)
ルートジョブネット中に引き継ぎ情報設定ジョブがある場合,ルートジョブネット内のジョブだけ引き継ぎ結果を参照できます。ネストリモートジョブネット内のジョブでは参照できません。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
ルートジョブネット実行時は参照できない。 ジョブAの再実行時は参照できる。 |
ジョブB |
参照できる。 |
ジョブC |
参照できない。 |
ジョブD |
参照できない。 |
■ ネストリモートジョブネットの場合(ネストリモートジョブネット中に引き継ぎ情報設定ジョブがある)
ネストリモートジョブネット中に引き継ぎ情報設定ジョブがある場合,ネストリモートジョブネット内のジョブだけ引き継ぎ結果を参照できます。ルートジョブネット内のジョブでは参照できません。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
参照できない。 |
ジョブB |
参照できない。 |
ジョブC |
ルートジョブネット実行時は参照できない。 ジョブCの再実行時は参照できる。ただし,ネストリモートジョブネットを再実行した場合は,再実行後でも参照できない。 |
ジョブD |
参照できる。 |
(d) ジョブネットコネクタ
ジョブネットコネクタを定義しているジョブネットまたは接続先ジョブネットで定義した引き継ぎ情報設定ジョブの引き継ぎ結果は,引き継ぎ情報設定ジョブがある側のジョブネットだけ参照できます。
■ ジョブネットコネクタを定義しているジョブネットに引き継ぎ情報設定ジョブがある場合
ジョブネットコネクタを定義しているジョブネットだけ引き継ぎ結果を参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
ルートジョブネット実行時は参照できない。 ジョブAの再実行時は参照できる。 |
ジョブB |
参照できる。 |
ジョブC |
参照できない。 |
ジョブD |
参照できない。 |
■ 接続先のジョブネットに引き継ぎ情報設定ジョブがある場合
接続先のジョブネットだけ引き継ぎ結果を参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
参照できない。 |
ジョブB |
参照できない。 |
ジョブC |
ルートジョブネット実行時は参照できない。 ジョブCの再実行時は参照できる。 |
ジョブD |
参照できる。 |
(e) 待ち合わせ条件
待ち合わせ条件付きユニットと,その待ち合わせ対象ユニットが別のルートジョブネット配下にある場合,引き継ぎ結果はそれぞれのルートジョブネット配下だけ参照できます。
|
この図の場合の,引き継ぎ結果の参照可否について次の表に示します。
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
ルートジョブネットA実行時は参照できない。 ジョブAの再実行時は参照できる。 |
ジョブB |
参照できる。 |
ジョブC |
参照できない。 |
ジョブD |
参照できない。 |
ジョブE |
参照できない。 |
ジョブ |
引き継ぎ結果の参照可否 |
---|---|
ジョブA |
参照できない。 |
ジョブB |
参照できない。 |
ジョブC |
ルートジョブネットB実行時は参照できない。 ジョブCの再実行時は参照できる。 |
ジョブD |
参照できる。 |
ジョブE |
参照できる。 |
(4) 注意事項
引き継ぎ情報設定ジョブを使用する場合の注意事項を,次に示します。
-
引き継ぎ情報設定ジョブを,JP1/AJS3 - Managerのバージョンが09-50より前の環境にコピーして使用した場合,引き継ぎ情報設定ジョブの実行時にエラーになります。
-
引き継ぎ情報設定ジョブには,実行エージェントを指定できません。実行登録されたマネージャーホストのデフォルト実行エージェント「@SYSTEM」で実行されます。リモートジョブネット配下の引き継ぎ情報設定ジョブは,そのリモートジョブネットの転送先ホスト上のデフォルト実行エージェントで実行されます。
-
一つのルートジョブネット配下に,同じ名称のマクロ変数を指定した引き継ぎ情報設定ジョブが複数ある場合,あとから実行した引き継ぎ情報設定ジョブの引き継ぎ情報が有効です。
-
引き継ぎ情報設定ジョブを使用する場合は,ジョブが出力したデータが結果ファイルに出力されないことを防止するための設定を有効にしてください。詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.26 ジョブが出力したデータが結果ファイルに出力されないことを防止するための設定」を参照してください。