JP1/AJSと聞いても、使ったことがない人には何をする製品なのかイメージしにくいと思います。
私も最初にJP1/AJSを触ったころは、「Windowsのタスクスケジューラーの上位版みたいなものかな」という程度の理解でした。
決められた時間にプログラムを起動する。それが少し高機能になったものだと思っていたわけです。
しかし、実際に業務システムの現場で使ってみると、それだけではありませんでした。
複数の処理を決められた順番で動かしたり、何かが起きるまで待ったり、条件によって処理を変えたり、エラーになった場所を確認したりと、業務処理全体の流れを管理するための製品という方が、実際の感覚には近かったです。
この記事では、JP1/AJSを初めて知った人に向けて、「結局、現場では何をするものなのか」を、私がアプリSEとして使った経験も交えながら説明します。
なお、私が実務で使用したのはJP1/AJS2・AJS3です。製品仕様については、現在の日立公式情報で確認できるJP1/Automatic Job Management System 3(JP1/AJS3)を基準にしています。
JP1/AJSとは何をするものなのか
JP1/Automatic Job Management System 3(JP1/AJS3)は、日立が提供しているジョブ管理製品です。
かなり簡単に言えば、
「業務システムで必要なさまざまな処理を、決められた順序や時間、条件に従って実行し、その状態までまとめて管理するもの」
と考えると分かりやすいと思います。
業務システムでは、単に「決まった時間になったらプログラムを起動する」だけで済まないことがあります。
たとえば、
1つ目の処理が正常に終わったら2つ目を動かす。
必要なファイルがそろったら次へ進む。
処理結果によって次に動かす処理を変える。
途中で異常終了したら、どこで止まったのか確認する。
といった制御が必要になります。
JP1/AJS3には、このような業務処理を自動で動かし、実行状況までまとめて確認するための機能があります。
日付や曜日に合わせて実行時刻を管理したり、ファイル更新などをきっかけに処理を始めたり、実行中の処理が正常なのか異常なのかを確認したりできます。
こうした複数の処理を一連の流れとして管理するのが、JP1/AJSの大きな役割です。
「ジョブ」と「ジョブネット」が分かると理解しやすい
JP1/AJSを理解するときに、まず知っておきたいのが「ジョブ」と「ジョブネット」です。
難しそうな言葉ですが、考え方そのものはそれほど複雑ではありません。
ジョブとは
ジョブは、実行する処理の一つの単位です。
日立のJP1/AJS3公式マニュアルでも、自動化する業務を構成する細かな処理をジョブとして定義します。
初心者のうちは、
ジョブ=「実行したい一つの処理」
くらいの理解から始めればよいと思います。
ジョブネットとは
複数のジョブに実行順序を付け、一つの業務としてまとめたものが「ジョブネット」です。
たとえば、
「データを取得する」
というジョブがあり、その後に
「データを加工する」
さらにその後に
「加工したデータを出力する」
というジョブがあるとします。
これらを順番につないで一つの処理の流れにしたものを、ジョブネットと考えるとイメージしやすいでしょう。
私自身も、実務ではジョブやジョブネットを設計・作成し、その後の運用保守まで経験しました。
JP1/AJSは現場で何に使うのか
では、実際の業務システムでは何のためにJP1/AJSを使うのでしょうか。
私が実務で使った経験からも、「処理を決められた条件で動かし、その一連の流れを管理する」というのが大きな役割でした。
決められた時間に処理を動かす
分かりやすい用途が、決められた日時に処理を実行するスケジュール管理です。
毎日決まった時間に動かす処理だけでなく、毎週、毎月、特定の日といった業務の予定に合わせて実行タイミングを管理できます。
休日などを考慮して実行日を調整することもできます。
私が実務でJP1/AJSを使っていたときにも、時間による実行制御は基本的な使い方の一つでした。
ただ、実際に使ってみると、時刻を指定して処理を起動するだけではありませんでした。
前の処理が終わってから次の処理を動かす
業務システムでは、すべての処理を同時に実行できるとは限りません。
前の処理で作られた結果を、次の処理が使用することもあります。
そのため、複数のジョブに実行順序を持たせて、一連の処理として管理します。
私がJP1/AJSを使っていて印象に残ったのも、この処理同士のつながりを管理できることでした。
個別のプログラムを一つずつ見るだけでなく、それらが業務全体の中でどの順番で動くのかをまとめて扱えます。
何かが起こるまで待ってから処理する
処理を開始する条件は、時刻だけとは限りません。
たとえば、必要なファイルが更新されたことをきっかけに処理を始める、といった動かし方もできます。
私の実務でも、時間による制御だけではなく、イベントを待って後続処理へ進む使い方を経験しました。
時刻だけではなく、別の出来事を条件に処理を進められることを知ったことで、JP1/AJSに対する最初のイメージはかなり変わりました。
処理結果によって動きを変える
すべての処理を単純に上から順番に実行すればよいとは限りません。
前の処理がどのような結果で終わったかによって、その後に実行する処理を分けたい場合もあります。
JP1/AJS3には、前の処理結果などを基に後続処理を分けるための仕組みがあります。
私自身も実務で、条件によって処理をスキップするような制御を使用しました。
こうした条件を組み合わせることで、単純な順番だけでは表せない業務処理も管理できます。
エラーが起きた場所を確認する
業務処理は、いつも正常に終わるとは限りません。
どこかのジョブが異常終了すれば、どこで問題が起きたのかを確認して対応する必要があります。
JP1/AJS3では、一連の業務がどこまで進んでいるのかや、正常終了・異常終了などの状態を確認できます。
私が使っていた環境でも、画面からジョブの状態や処理の流れを確認していました。
簡単なエラーであれば、画面上の状態から「この辺りで問題が起きている」と分かることもありました。
エラー後に必要な処理を実行する
私が実務でJP1/AJSを運用していたときには、エラーになった箇所などを確認し、必要な部分から処理を実行することもありました。
これは、私が担当した環境で経験した運用です。
製品としてのJP1/AJS3にも、問題が起きた業務を確認し、対象となる業務を再実行するなどの対処を行うための機能があります。
エラーが発生したときに状況を確認し、その後の対応まで行える点も、業務システムを運用するうえでは重要でした。
処理の流れを画面で確認できるのは分かりやすかった
私がJP1/AJSを使っていて分かりやすいと感じたのが、処理の流れを画面で確認できることでした。
ジョブ同士が線でつながっており、「この処理の次にこれが動く」という流れを視覚的に追うことができます。
実行時にも、どの処理が動いているのか、どこでエラーになったのかといった状態を画面から確認していました。
プログラムだけを見ていると、システム全体で処理がどのようにつながっているのか分かりにくいことがあります。
アプリSEだった私にとって、処理の前後関係を画面上で追えるのは理解しやすい部分でした。
一方で、最初はかなり分かりにくかった
画面で処理の流れが見える一方、JP1/AJSそのものを覚えるのは簡単ではありませんでした。
機能が多く、覚えることも多かったからです。
また、私が担当した環境ではWindowsだけでなくUNIXやLinuxもあり、環境による違いにも苦労しました。
分からないことを調べようとして入門書や操作説明を読んでも、初心者だった当時の私には「すでに仕組みを知っている人向けに説明されているのでは」と感じることもありました。
ジョブ、ジョブネット、実行登録、イベント、終了コードなど、用語を一つずつ説明されても、
「そもそも何のためにこれを使うのか」
が分からないと、なかなか頭に入ってきません。
だから、JP1/AJSをこれから学ぶ人は、最初からすべての機能や操作を覚えようとするより、
「複数の業務処理をつないで、決められた条件で動かし、その状態まで管理する製品」
という全体像を先に持っておくと理解しやすいと思います。
なお、現在のJP1/AJS3は、オンプレミスのシステムだけでなく、AWSやMicrosoft Azure、Google Cloud、Oracle Cloud Infrastructureなどのクラウドサービスを利用する業務との連携にも対応しています。
これは私が実務で経験した内容として書いているものではなく、現在の日立公式情報に基づく補足です。
まとめ:JP1/AJSは「業務処理の流れを管理するもの」と考えると分かりやすい
JP1/AJSは、決められた時間に処理を実行するだけの製品ではありません。
複数のジョブをつなぎ、実行する順番や条件を決め、実行状態を確認し、問題が起きたときにはどこで止まったのかを確認する。
そうした業務処理全体の流れを管理することが、JP1/AJSの大きな役割です。
これからJP1/AJSを触る人は、最初から細かな設定項目やコマンドを全部覚える必要はないと思います。
まずは、
ジョブ=一つの処理
ジョブネット=複数の処理をつないだ一連の流れ
そして、
JP1/AJS=その流れを実行・管理・監視するもの
というイメージを持っておく。
私自身の経験からも、そこから入った方がJP1/AJSの各機能を理解しやすいと思います。
