2枚の絵でわかるJP1ジョブ管理の仕組み

JP1ジョブ管理(JP1/AJS3:JP1/Automatic Job Management System 3)を初めて使ったのは、もう何年も前になる*1。その時は、プロダクトのことを何も知らないうちに(けっこう複雑な)ジョブネットの設計をしなければならなくなって、、とにかくアーキテクチャの概要だけを手っ取り早く知りたかった。とはいっても、どこから手をつけてよいのやらわからず、マニュアルだってどこを読めばよいのやら。で、結局2日間だけ研修を受けさせてもらい、空き時間にプロダクトをいじり、講師に質問しまくってどうにかした*2
その時に「こんな絵があったらなぁ」と思っていた(はずの)絵を描いてみようかと――同じ悩みを持っている人がいるかどうかはわからないが。なお、ジョブ管理ってのがどういうコトか、ジョブネットってのがどういうモノかは、ざっくりわかっているものとする。

1) マネージャ・エージェントの構成

1枚目は、JP1ジョブ管理の全体構成を表した次の絵。JP1ジョブ管理が、マネージャ・エージェント構成であることを表している。

JP1ジョブ管理は4種類のプロダクトで構成される。ジョブ管理をGUIで行う「JP1 View」、マネージャソフトである「JP1/AJS3 Manager」(同一ホスト内のエージェントを含む)、エージェントソフトである「JP1/AJS3 Agent」、通信やユーザ管理の基盤となる「JP1/Base」(マネージャとエージェントを動作させるのに必須)であり、この絵では、プロダクト名を斜体で表している。

左の端末上では、JP1 Viewにより表示されたジョブネットがある(ジョブネットの定義自体はマネージャで管理される*3)。このジョブネットでは、2つのジョブ*4が同時に実行され、それがどちらも終了したら、エージェントYでジョブネット(最終的にはジョブネット内のジョブ)が実行される。

ジョブの実行の流れは、(1) マネージャがエージェントにジョブの実行を指示し、(2) エージェントがプログラムを実行し、(3) 実行結果をマネージャに返す、となる。その際、典型的には、マネージャは、エージェントに接続されているキューにジョブを投入し、エージェントはキューからジョブを取り出し実行する(キューレスの構成にすることもできる)。キューにおいては、キューレングスや、キュー内のジョブ数の警告域を設定できる。エージェントにおいては、ジョブの同時実行数を設定できる。
エージェントを作成すると、エージェントに接続するキューが自動で作成され、それをデフォルトキューと呼ぶ。デフォルトキューとは別にキューを作成し、エージェントに接続することもできる*5。また、同一ホスト内に、複数のエージェントを作成する*6こともできる。

2) ジョブ関連オブジェクトの構成

2枚目は、ジョブ管理で用いるオブジェクトの構成を表した次の絵。ジョブネットを組む時には、絶対に知らなければならない。

最上位のオブジェクトは“AJSROOT1”というスケジューラサービス。名前の通り、ジョブの実行制御を行ってくれる偉いやつ。ちなみに、スケジューラサービスを追加することもできる*7
で、スケジューラサービスの下にジョブグループを作成し、さらにその下に、ジョブグループやジョブネットを作成する。

  • ジョブグループ:ファイルシステムにおけるフォルダみたいなモノ。運用日や休業日を定義したカレンダーを紐づけられる。
  • ジョブネット:言わずもがな。もちろんネストできる。スケジュールを紐づけられる。スケジュールには、複数のルールを登録できる。例えば「毎日8時(運用日のみ)」に実行などである。

典型的には、上記のカレンダーとスケジュールによってジョブの実行が計画・確定され、実行される。この他にも、即時実行や、イベントを契機とした実行もできる。


雰囲気は、だいたいこんなモノ(かな)。マニュアルであれば、「JP1/AJS3 導入ガイド」の第一編と第二編を読むと、全体像がつかめるかと。

*1:当時は、JP1/AJS2だった。いまだにディレクトリ名などは“jp1ajs2”みたいになっているけどw

*2:ついでに「JP1認定プロフェッショナル(ジョブ管理)」を取得した。

*3:ajsprintコマンドなどを用いて、ジョブネットの定義(後述するカレンダーやスケジュールを含む)をテキスト形式にエクスポートすることもできる。

*4:ホストMのエージェントXでプログラムp1を実行するジョブと、ホストAのエージェントZでプログラムp3を実行するジョブを表している(つもり)。ちなみに、UNIX/Linux上で実行されるジョブをJP1ジョブ管理では「UNIXジョブ」と呼び、JP1 View上では、絵にあるような「U」と書かれた正方形のアイコンで表わされる。

*5:(続)JP1ユーザ設計で大事なコト - あしのあしあと」で書いたjpqjobsubコマンドや、Queueジョブのように、キューを指定してジョブを実行したい場合に必要となる。キューの作成には、jpqqueaddコマンド、jpqquealtコマンド、jpqqueopenコマンドなどを用いる。

*6:エージェントホストの追加方法については、「http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0331/AJSH0113.HTM#ID00419」を参照のこと。さらに、論理名である実行エージェント名を設定する方法については、「http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0531/AJSX0032.HTM」を参照のこと。

*7:スケジューラサービスの追加は、JP1 ViewのGUIからはできない。http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S1131/AJSP0056.HTMコマンドを用いて作成する。作成方法については、「http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0531/AJSX0164.HTM」、「http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0631/AJSY0009.HTM」を参照のこと。