JP1/AJS3の「待ち合わせ条件」を使うと、別のジョブネットやジョブの終了を待ってから処理を開始できます。
例えば、
JOBNET_A
毎日 01:30開始
↓
正常終了
↓
JOBNET_Bを開始
という制御を、A側を変更せずB側の設定だけで実現できます。
ただし、待ち合わせ条件を使うには、まず環境設定パラメーター PREWAITUSE が有効になっている必要があります。
PREWAITUSEを確認する
Windowsの場合は、まず次を確認します。
jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE
次のように表示されれば有効です。
"PREWAITUSE"="yes"
何も表示されない場合は、明示設定されていない可能性があります。
PREWAITUSE のデフォルトは no です。no の場合でもView上で待ち合わせ条件を定義できますが、実行すると待ち合わせ条件付きユニットは異常終了します。
PREWAITUSEを有効にする
例としてスケジューラーサービス名を AJSROOT1 とします。
まずスケジューラーサービスを停止します。
jajs_spmd_stop -n jajs_schd -F AJSROOT1
物理ホストの場合は、
jajs_config -k "[JP1_DEFAULT\JP1AJSMANAGER\AJSROOT1]" "PREWAITUSE"="yes"
を設定します。
論理ホストの場合は JP1_DEFAULT の部分を論理ホスト名に変更します。
設定後、スケジューラーサービスを起動します。
jajs_spmd -n jajs_schd -F AJSROOT1
最後に、
jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE
で yes になっていることを確認します。
公式手順でも、スケジューラーサービスを停止して設定変更し、その後起動する流れになっています。
※本番環境では、スケジューラーサービス停止によるジョブへの影響を確認してから実施してください。
待ち合わせ条件の設定例
次の構成を例にします。
JOBNET_A
毎日 01:30開始
JOBNET_B
毎日 01:29開始
BをAより1分早く開始予定にして、Bの先頭ジョブにAを待つ条件を設定します。
JOBNET_B
└─ JOB_B1
待ち合わせ対象:JOBNET_A
さらに、
待ち合わせる世代がない場合
→ 実行を開始しない
にします。
これでBの対応世代が起動した時点でAの世代がまだ存在しなくても、Aを待つ動作になります。
実際の動き
例えばAが45秒で終了するとします。
01:29
JOBNET_B開始
↓
JOB_B1はAの終了待ち
01:30
JOBNET_A開始
01:30:45
JOBNET_A正常終了
↓
待ち合わせ成立
↓
JOB_B1開始
Bを01:31などAの後ろの固定時刻にすると、Aが早く終わっても01:31まで待つことになります。
BをAより少し前に起動して待ち状態にしておけば、A終了後できるだけ早くBを開始できます。
起動条件は必要?
今回のように、
A終了
↓
B実行
だけを実現したい場合、A・Bともに「起動条件を使用する」は不要です。
待ち合わせ条件と起動条件は別機能です。
なお、起動条件を使用するジョブネットに待ち合わせ条件を設定したり、待ち合わせ対象にしたりする場合は、
PREWAITEXTEND=condition
が必要です。
同じスケジューラーサービス内で使う
待ち合わせ条件付きユニットと待ち合わせ対象ユニットは、
同じスケジューラーサービス配下
にある必要があります。
例えば、
AJSROOT1
├─ JOBGROUP_A
│ └─ JOBNET_A
└─ JOBGROUP_B
└─ JOBNET_B
のようにジョブグループが違っていても、両方が AJSROOT1 配下なら利用できます。
待ち合わせ状態を確認する
実行中の状態は、JP1/AJS3 – Viewの、
待ち合わせ条件の状態一覧
で確認できます。
また、コマンドでは、
ajsshow -xw /JOBGROUP/JOBNET_B
で待ち合わせ状態を確認できます。
正常な状態なら、
Bの先頭ジョブ
→ 待ち合わせ未完了
A正常終了
→ 待ち合わせ完了
→ B開始
となります。
うまく動かない場合
待ち合わせ条件を付けると異常終了する場合は、まず、
jbsgetcnf -c JP1AJSMANAGER | findstr /I PREWAITUSE
を確認します。
PREWAITUSE=no または未設定なら、待ち合わせ条件を定義できても実行時に異常終了します。
一方、異常終了はしないもののAを待たずBが進む場合は、
待ち合わせる世代がない場合
→ 実行を開始しない
になっているか確認します。
また、Viewの「待ち合わせ条件の状態一覧」で、対象のA世代がすでに「完了」と認識されていないかも確認します。
まとめ
待ち合わせ条件を使う場合は、まず、
PREWAITUSE=yes
を確認します。
基本構成は、
JOBNET_A
01:30
JOBNET_B
01:29
↓
Bの先頭ジョブでAを待つ
↓
A正常終了
↓
B開始
です。
Aを変更せず、B側だけで依存関係を追加したい場合に便利な機能です。
なお、
起動条件を使用するジョブネット
を待ち合わせ対象にする場合は、通常の PREWAITUSE=yes に加えて PREWAITEXTEND=condition も確認してください。

