JP1で複数のジョブネットを連携させる際、同じ階層であれば矢印(関連線)で繋ぐだけで簡単に順序を制御できます。しかし、「別階層のジョブグループにある処理」や「別サーバーにある処理」と連携させたいとなった途端、どう繋ぐべきか頭を悩ませることになります。
その際の強力な解決策となるのが、以下の2つのアプローチです。
-
JP1イベントによる制御(イベント発信・イベント待ち)
-
ジョブネットコネクタによる制御
今回は、これら2つの方式の決定的な違いと、設計時に迷わないための使い分けのポイントを徹底解説します!
1. JP1イベント(イベントジョブ)による制御
「先行ジョブネットの最後でJP1イベントを発生させ(jevent_send など)、後続ジョブネットの最初にある『イベント受信監視ジョブ』がそれをキャッチして起動する」という、古くから使われている定番の制御方式です。
🌟 メリット
-
サーバー(マネージャー)をまたいだ制御が容易: ネットワークさえ繋がっていれば、別サーバーのJP1環境に対してもイベントを飛ばせるため、システム間連携に非常に強いです。
-
結合度が低い(疎結合): 先行側は「イベントを投げるだけ」、後続側は「イベントを待つだけ」なので、お互いのジョブネットの内部構造や階層を深く知る必要がありません。
⚠️ デメリット・罠
-
ルートジョブネットが「実行中」のままになりやすい: イベント待ちジョブは、イベントが来るまでずっと待ち続けます。そのため、スケジュール登録した瞬間から「実行中(または起動表示)」ステータスで居座り続けることになり、監視画面が見づらくなりがちです。
-
定義の「見える化」が難しい: JP1ビューアーのマップ画面で見ても、矢印で繋がっているわけではないため、直感的に「どのジョブネットがどのイベントと繋がっているか」の全体像が把握しにくいです。
2. ジョブネットコネクタによる制御
JP1/AJS3から導入された、別階層(または同一マネージャー内の別ジョブグループ)のジョブネット同士を明示的に関連付けるための専用の機能です。
🌟 メリット
-
実行順序が「見える化」される: JP1ビューアーの「持回り情報」や関連性確認画面から、別階層のどのジョブネットと繋がっているのかが視覚的にバッチリ確認できます。
-
無駄に「実行中」にならない: 先行ジョブネットが動いている間、後続ジョブネットは「実行待ち」や「待合せ中」の正しいステータスで待機します。実行直前まで「実行中」にならないため、運用監視のノイズになりません。
-
同期・状態管理がスマート: 先行側が異常終了した際、後続側を自動的に「スキップ」させたり「保留」にしたりといった、JP1標準の洗練された制御がそのまま適用できます。
⚠️ デメリット・罠
-
同一マネージャー(同一DB)内に限られる: 原則として、同じJP1/AJS3のマネージャー環境(同一スケジューラーサービス内)にあるジョブネット同士でしか接続できません。別サーバーの別システムと連携するようなケースには使えません。
🔄 決定的な違いと使い分けの基準
2つの最大の違いを一言で表すと、「見える化できる範囲(システム境界)」と「ステータス管理の綺麗さ」です。
実務でどちらを採用するか迷った場合は、以下の基準で選ぶのがベストプラクティスです。
⭕ ジョブネットコネクタを使うべきケース
-
同じサーバー(マネージャー)内の、異なるジョブグループ間で連携したいとき
-
運用の見やすさを重視し、「処理のつながりを視覚的にパッと把握できるようにしたい」とき
-
スケジュール登録時に、無駄な「実行中」ステータスを乱立させたくないとき
⭕ JP1イベントを使うべきケース
-
本番サーバーと開発サーバーなど、物理的(環境的)に別々のサーバー間で連携したいとき
-
将来的にジョブネットの配置や名前が大きく変わる可能性があり、お互いの定義を極力独立させておきたいとき(疎結合にしたいとき)
📝 まとめ
別階層の先行後続制御において、現代のJP1設計では「同じサーバー内なら、運用性と視覚的な分かりやすさに優れる『ジョブネットコネクタ』を最優先で使う」のが主流(王道)となっています。
一方で、サーバーの壁を越えるような大規模なシステム連携では、今でも「JP1イベント」が唯一無二の架け橋として大活躍します。
それぞれの特性を理解し、システムの境界線(サーバーが同じか違うか)を意識して、綺麗でメンテナンスしやすいジョブネットを設計していきましょう!
