はじめに
「JP1 を使って夜間バッチを組んで。」と言われたときに、ざっと調べた内容です。
本家のドキュメントを読む前のとっかかりになれば嬉しいです。
タスクスケジューラじゃなくて JP1 の方がよいかもしれない点
ジョブの実行条件を細かく設定できる
- 先行ジョブが正常終了して初めて後続ジョブを実行する。
- 複数のジョブを並列実行して、全てのジョブが正常終了して初めて後続ジョブを実行する。
- 特定のフォルダにファイルが作成されたらジョブを実行する。 など。
複数のPCにまたがってジョブフローを組める
- ジョブ1(Win1号機)→ ジョブ2(UNIX機) → ジョブ3(Win2号機)
JP1 の製品群
JP1/AJS3-Manager
- JP1の実行管理プログラム。Agent 機能も有する。
JP1/AJS3-Agent
- 実際にジョブを実行するプログラム。UNIX でも動作可能。
- Manager が 各PC にインストールされた Agent をリモート管理することで、複数PC内のジョブを一元管理できる。
JP1/Base
- Manager、Agent を動かすためのコアプログラム。
JP1/AJS3-View
- Manager の設定をする GUI ベースの管理ツール。
JP1 のユニット(処理要素)
ジョブ(管理ツールの「P」や「U」のようなアイコン)
- 1つずつの実行アクション。
- EXE や バッチをキックする起動単位で作成する。
ジョブネット(管理ツールで「∴」のようなアイコン)
- ジョブの実行フローをひとまとめにしたもの。
- 階層構造(ジョブネットの中にジョブネット)を作れる。
- ジョブネットに対してスケジュール(実行する日時、繰り返しのサイクルなど)を指定する。
- 1つのまとまった実行単位や実行のタイミング単位で作成する。
ジョブグループ(管理ツールでフォルダのアイコン)
- ジョブネットをまとめたもの。
- 階層構造(ジョブグループの中にジョブグループ)を作れる。
- 環境単位に作成する。
JP1 のジョブフロー(ユニット定義)
JP1のユニット定義の例
[□]:ジョブグループ
[∴]:ジョブネット
[p]:ジョブ
[□]ROOT
├[□]本番環境
│ ├[∴]日中バッチ
│ │ ├ [p]日中ジョブ1
│ │ ├ [p]日中ジョブ2
│ │ :
│ └[∴]夜間バッチ
│ ├ [∴]日次バッチ
│ │ ├ [p]夜間日次ジョブ1
│ │ ├ [p]夜間日次ジョブ2
│ │ :
│ └ [∴]月次バッチ
│ ├ [p]夜間月次ジョブ1
│ ├ [p]夜間月次ジョブ2
│ :
├[□]検証環境
│ ├:
JP1ユニット定義のポイント
ジョブグループ配下のジョブネットは、それぞれ独立した設定による実行になる。
上記の例だと、日中バッチと夜間バッチの間に関連性を持てません。
日中バッチは日中バッチの設定に基づき、夜間バッチは夜間バッチの設定に基づいて実行されます。
ジョブネット配下のジョブネットは、それぞれに関連性を持たせられる
上記の例だと、日次バッチの正常終了後に月次バッチを実行させることができます。
また、ジョブネットごとにスケジュールを設定できるので、
- 夜間バッチ:毎日00:00に実行。
- 日次バッチ:毎日実行。
- 月次バッチ:毎月1日のみ実行。
のように設定すると、毎日00:00から夜間バッチが実行し、最初に日次バッチ内のジョブを実行し、結果が正常終了で1日の場合のみ、更に月次バッチ内のジョブを実行するというような設定ができます。
おわりに
JP1のもっとスマートな組み方があれば、コメント頂けるとありがたいです。
また、記事のレイアウトのセンスが壊滅的にないみたいです。誰が見やすくしていただけるとハッピーです。(前の記事を編集してもらったレイアウトを真似たつもりなんですけどね。。。)