(57)【特許請求の範囲】
【請求項１】
バッチ処理で処理される先行後続関係が定義された複数のジョブの稼動時間の実績を保持する実績情報保持部と、
起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その予め指定された起動予定時刻を保持する指定時刻情報保持部と、
複数のジョブのなかから選択されたパス開始ジョブおよびパス終了ジョブの指定を受け付ける指定受付部と、
パス開始ジョブとパス終了ジョブとの間に少なくともひとつの起動時刻指定ジョブが含まれるとき、前記実績情報保持部によって保持される実績および前記指定時刻情報保持部によって保持される起動予定時刻に基づいて、パス開始ジョブとパス終了ジョブとの間のジョブの起動予定時刻および終了予定時刻を決定する時刻決定部と、
前記時刻決定部によって決定された起動予定時刻および終了予定時刻に基づいて、起動時刻指定ジョブと起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブを設定する仮想ジョブ設定部と、
前記仮想ジョブ設定部によって設定された仮想的なジョブを使用して、パス開始ジョブとパス終了ジョブとの間のクリティカルパスを特定するクリティカルパス特定部と、を備えることを特徴とするバッチジョブ分析装置。
【請求項２】
前記仮想ジョブ設定部によって起動時刻指定ジョブに対して２以上の仮想的なジョブが設定された場合、前記クリティカルパス特定部は、前記仮想ジョブ設定部によって設定された２以上の仮想的なジョブのうち終了予定時刻と起動予定時刻との差がより小さい仮想的なジョブを含むパスを優先的にクリティカルパスとして特定することを特徴とする請求項１に記載のバッチジョブ分析装置。
【請求項３】
バッチ処理は証券業務システムで行われるバッチ処理であることを特徴とする請求項１または２に記載のバッチジョブ分析装置。
【請求項４】
証券業務システムではバッチ処理と並行してリアルタイム処理が行われ、起動時刻指定ジョブの起動予定時刻はリアルタイム処理の結果がバッチ処理に組み入れられるべき時刻に基づき設定されることを特徴とする請求項３に記載のバッチジョブ分析装置。
【請求項５】
起動時刻指定ジョブの起動予定時刻は、証券業務システムとは異なるシステムからデータが提供されるべき時刻に基づき設定されることを特徴とする請求項３または４に記載のバッチジョブ分析装置。
【請求項６】
バッチ処理で処理される先行後続関係が定義された複数のジョブの稼動時間の実績を実績情報保持部に保持させるステップと、
起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その予め指定された起動予定時刻を指定時刻情報保持部に保持させるステップと、
複数のジョブのなかから選択されたパス開始ジョブおよびパス終了ジョブの指定を受け付けるステップと、
パス開始ジョブとパス終了ジョブとの間に少なくともひとつの起動時刻指定ジョブが含まれるとき、前記実績情報保持部によって保持される実績および前記指定時刻情報保持部によって保持される起動予定時刻に基づいて、パス開始ジョブとパス終了ジョブとの間のジョブの起動予定時刻および終了予定時刻を決定するステップと、
決定された起動予定時刻および終了予定時刻に基づいて、起動時刻指定ジョブと起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブを設定するステップと、
設定された仮想的なジョブを使用して、パス開始ジョブとパス終了ジョブとの間のクリティカルパスを特定するステップと、を含むことを特徴とするバッチジョブ分析方法。
【請求項７】
バッチ処理で処理される先行後続関係が定義された複数のジョブの稼動時間の実績を実績情報保持部に保持させる機能と、
起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その予め指定された起動予定時刻を指定時刻情報保持部に保持させる機能と、
複数のジョブのなかから選択されたパス開始ジョブおよびパス終了ジョブの指定を受け付ける機能と、
パス開始ジョブとパス終了ジョブとの間に少なくともひとつの起動時刻指定ジョブが含まれるとき、前記実績情報保持部によって保持される実績および前記指定時刻情報保持部によって保持される起動予定時刻に基づいて、パス開始ジョブとパス終了ジョブとの間のジョブの起動予定時刻および終了予定時刻を決定する機能と、
決定された起動予定時刻および終了予定時刻に基づいて、起動時刻指定ジョブと起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブを設定する機能と、
設定された仮想的なジョブを使用して、パス開始ジョブとパス終了ジョブとの間のクリティカルパスを特定する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項８】
バッチ処理で処理される先行後続関係が定義された複数のジョブのうち起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その起動時刻指定ジョブとその起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブが設定され、複数のジョブのなかから選択されたパス開始ジョブとパス終了ジョブとの間のクリティカルパスは仮想的なジョブを含むとき、そのクリティカルパスを使用してバッチ処理を監視するバッチ処理監視装置であって、
クリティカルパス上で仮想的なジョブに先行する位置にチェックポイントを設定するチェックポイント設定部と、
前記チェックポイント設定部によって設定されたチェックポイント通過の基準となる基準時刻を設定する基準時刻設定部と、
前記チェックポイント設定部によって設定されたチェックポイントにおいて、処理がそのチェックポイントを通過する前に、現在時刻と前記基準時刻設定部によって設定された基準時刻と仮想的なジョブの終了予定時刻と起動予定時刻との差とに基づいて、パス終了ジョブの終了が遅れるか否かを判定する終了遅延判定部と、を備えることを特徴とするバッチ処理監視装置。
【請求項９】
仮想的なジョブの終了予定時刻と起動予定時刻との差を仮想稼動時間と称し、現在時刻から前記基準時刻設定部によって設定された基準時刻を減じることで得られる差を経過時間と称し、クリティカルパス上で前記チェックポイント設定部によって設定されたチェックポイントの後続となる全ての仮想的なジョブの仮想稼動時間の和をトータルフロートと称すとき、前記終了遅延判定部は、経過時間がトータルフロートよりも大きい場合、パス終了ジョブの終了が遅れると判定することを特徴とする請求項８に記載のバッチ処理監視装置。
【請求項１０】
前記終了遅延判定部においてパス終了ジョブの終了が遅れると判定された場合、経過時間とトータルフロートとの差に基づいてパス終了ジョブの終了の遅延の度合いを算出する遅延算出部をさらに備えることを特徴とする請求項９に記載のバッチ処理監視装置。
【請求項１１】
バッチ処理は証券業務システムで行われるバッチ処理であることを特徴とする請求項８から１０のいずれかに記載のバッチ処理監視装置。
【請求項１２】
証券業務システムではバッチ処理と並行してリアルタイム処理が行われ、起動時刻指定ジョブの起動予定時刻はリアルタイム処理の結果がバッチ処理に組み入れられるべき時刻に基づき設定されることを特徴とする請求項１１に記載のバッチ処理監視装置。
【請求項１３】
起動時刻指定ジョブの起動予定時刻は、証券業務システムとは異なるシステムからデータが提供されるべき時刻に基づき設定されることを特徴とする請求項１１または１２に記載のバッチ処理監視装置。
【請求項１４】
バッチ処理で処理される先行後続関係が定義された複数のジョブのうち起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その起動時刻指定ジョブとその起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブが設定され、複数のジョブのなかから選択されたパス開始ジョブとパス終了ジョブとの間のクリティカルパスは仮想的なジョブを含むとき、そのクリティカルパスを使用してバッチ処理を監視するバッチ処理監視方法であって、
クリティカルパス上で仮想的なジョブに先行する位置にチェックポイントを設定するステップと、
設定されたチェックポイント通過の基準となる基準時刻を設定するステップと、
設定されたチェックポイントにおいて、処理がそのチェックポイントを通過する前に、現在時刻と設定された基準時刻と仮想的なジョブの終了予定時刻と起動予定時刻との差とに基づいて、パス終了ジョブの終了が遅れるか否かを判定するステップと、を含むことを特徴とするバッチ処理監視方法。
【請求項１５】
バッチ処理で処理される先行後続関係が定義された複数のジョブのうち起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その起動時刻指定ジョブとその起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブが設定され、複数のジョブのなかから選択されたパス開始ジョブとパス終了ジョブとの間のクリティカルパスは仮想的なジョブを含むとき、そのクリティカルパスを使用してバッチ処理を監視する機能をコンピュータに実現させるコンピュータプログラムであって、
クリティカルパス上で仮想的なジョブに先行する位置にチェックポイントを設定する機能と、
設定されたチェックポイント通過の基準となる基準時刻を設定する機能と、
設定されたチェックポイントにおいて、処理がそのチェックポイントを通過する前に、現在時刻と設定された基準時刻と仮想的なジョブの終了予定時刻と起動予定時刻との差とに基づいて、パス終了ジョブの終了が遅れるか否かを判定する機能と、を前記コンピュータに実現させることを特徴とするコンピュータプログラム。
【請求項１６】
バッチ処理で処理される先行後続関係が定義された複数のジョブに対して定義されるクリティカルパス上に第１チェックポイントを設定し、かつ、第１チェックポイントに後続する位置であってクリティカルパスと準クリティカルパスとが分岐する位置に第２チェックポイントを設定するチェックポイント設定部と、
第１チェックポイントおよび第２チェックポイントのそれぞれにおいてバッチ処理の終了が遅れるか否かを判定する終了遅延判定部と、を備え、
前記終了遅延判定部は、
第２チェックポイントにおいて、処理がその第２チェックポイントを通過する前に、現在時刻が第２チェックポイント通過の基準となる基準時刻を超えた場合かつ処理が第１チェックポイントを通過した場合、クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する第１状態判定部と、
前記第１状態判定部において終了していると判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する第２状態判定部と、を含み、
前記終了遅延判定部は、前記第２状態判定部において終了していないと判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブの遅延の度合いに基づいて、バッチ処理の終了が遅れるか否かを判定することを特徴とするバッチ処理監視装置。
【請求項１７】
前記第２状態判定部において終了していないと判定された場合かつ前記終了遅延判定部においてバッチ処理の終了が遅れると判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブの遅延の度合いに基づいてバッチ処理の終了の遅延の度合いを算出する遅延算出部をさらに備えることを特徴とする請求項１６に記載のバッチ処理監視装置。
【請求項１８】
通過の基準となる第３基準時刻が第１チェックポイント通過の基準となる第１基準時刻と第２チェックポイント通過の基準となる第２基準時刻との間となるように、準クリティカルパス上に第３チェックポイントを設定する追加チェックポイント設定部をさらに備え、
前記終了遅延判定部は、第３チェックポイントにおいて、処理が第３チェックポイントを通過する前に、現在時刻と第３基準時刻との比較に基づいて、バッチ処理の終了が遅れるか否かを判定することを特徴とする請求項１６または１７に記載のバッチ処理監視装置。
【請求項１９】
バッチ処理は証券業務システムで行われるバッチ処理であることを特徴とする請求項１６から１８のいずれかに記載のバッチ処理監視装置。
【請求項２０】
バッチ処理で処理される先行後続関係が定義された複数のジョブに対して定義されるクリティカルパス上に第１チェックポイントを設定し、かつ、第１チェックポイントに後続する位置であってクリティカルパスと準クリティカルパスとが分岐する位置に第２チェックポイントを設定するステップと、
第１チェックポイントおよび第２チェックポイントのそれぞれにおいてバッチ処理の終了が遅れるか否かを判定するステップと、を含み
前記判定するステップは、
第２チェックポイントにおいて、処理がその第２チェックポイントを通過する前に、現在時刻が第２チェックポイント通過の基準となる基準時刻を超えた場合かつ処理が第１チェックポイントを通過した場合、クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定するステップと、
クリティカルパス上で第２チェックポイントに先行するジョブが終了していると判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定するステップと、
準クリティカルパス上で第２チェックポイントに先行するジョブが終了していないと判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブの遅延の度合いに基づいて、バッチ処理の終了が遅れるか否かを判定するステップと、を含むことを特徴とするバッチ処理監視方法。
【請求項２１】
バッチ処理で処理される先行後続関係が定義された複数のジョブに対して定義されるクリティカルパス上に第１チェックポイントを設定し、かつ、第１チェックポイントに後続する位置であってクリティカルパスと準クリティカルパスとが分岐する位置に第２チェックポイントを設定する機能と、
第１チェックポイントおよび第２チェックポイントのそれぞれにおいてバッチ処理の終了が遅れるか否かを判定する機能と、をコンピュータに実現させ、
前記判定する機能は、
第２チェックポイントにおいて、処理がその第２チェックポイントを通過する前に、現在時刻が第２チェックポイント通過の基準となる基準時刻を超えた場合かつ処理が第１チェックポイントを通過した場合、クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する機能と、
クリティカルパス上で第２チェックポイントに先行するジョブが終了していると判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する機能と、
準クリティカルパス上で第２チェックポイントに先行するジョブが終了していないと判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブの遅延の度合いに基づいて、バッチ処理の終了が遅れるか否かを判定する機能と、を含むことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチジョブ分析装置、バッチジョブ分析方法、バッチ処理監視装置およびバッチ処理監視方法に関する。
【背景技術】
【０００２】
ユーザがインターネットを介して株式売買や外貨取引を行えるオンラインサービスが普及している。その手軽さや手数料の低さから、オンラインサービスのユーザ数は年々増大している。ユーザ数の増大に伴い、オンラインサービスを提供する証券業務システムへの負荷も大きくなってきている。
【０００３】
証券業務システムは一般に、我が国の証券取引所が開いている日中はリアルタイム処理により顧客に情報を提供したり注文情報を収集したりする。そして証券取引所が閉まっている夕方から翌日早朝にかけて証券業務システムは夜間バッチ処理を行う。この夜間バッチ処理においては、例えば日中の注文情報等のデータベースへの反映が行われる。
【０００４】
証券業務システムにおいてサービス開始時刻を守ることは重要である。夜間バッチ処理において何らかの問題が発生すると、サービス開始が遅れる可能性がある。そこで従来では、事前に想定できる変動要因に応じたシミュレーションによってサービス開始時刻を予測する技術（例えば、特許文献１、２参照）や、ジョブ実行順序や優先度変更等の実行計画変更により「早く」する技術（例えば、特許文献２、３参照）が提案されている。
【０００５】
特許文献１には、一連のジョブ実行のためのジョブネットのパフォーマンスを分析するためのパフォーマンス分析技術が開示されている。特許文献１に記載の技術では、パフォーマンスの分析に際しジョブ実行計画ログに基づいてクリティカルパスを算出している。
【０００６】
特許文献２には、ネット状に関連付けられた多数のバッチジョブの処理技術が開示されている。特許文献２に記載の技術では、処理件数から各ジョブの所要時間を予測し、それに応じてクリティカルパスを再計算し、目標終了時刻を満たさない場合にジョブの実行優先度を変更し早くすることを動的に実施することで、全体処理を早くし遅れないようにしている。
【０００７】
特許文献３には、ジョブフローで目標終了時刻の設定されたジョブを迅速に実行完了させる技術が開示されている。特許文献３に記載の技術では、クリティカルパスや目標終了時刻を考慮し、複数ジョブが重なった際に処理完了を早くするよう、実行優先度に基づき実行対象や順序を制御するしている（処理資源の割り当て優先を制御）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２８７５０９号公報
【特許文献２】特開２００４−２９５７３１号公報
【特許文献３】特開２０１１−１１３２９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
夜間バッチ処理の実行中に何らかの問題が発生した場合、例えば特許文献２や３に記載されるようなジョブ実行の優先度操作によって、処理速度を高めてサービス開始を遅らせないようにすることが考えられる。しかしながら、証券業務システムではこのような手法は有効な解決手段とはならない場合が多い。なぜならば、証券業務システムは、工場システムなどの他のシステムとはサーバ環境が異なるからである。
【００１０】
特許文献２、３に記載されるようなジョブ実行の優先度制御による処理速度の向上は、同一資源（ＣＰＵ（Central Processing Unit）やメモリ）をどのジョブに優先的にディスパッチするかで制御される。しかしながら、証券業務システムは、分散サーバ環境で稼動しており、サーバ数は一例では３０００台に及び、そのそれぞれのサーバで別のシステムが稼動する場合が多い。そして異なるシステム間では資源の取り合いが発生しにくい。
【００１１】
また、日々の処理件数の変動が激しい処理においては、当該処理の設計レベルで件数に応じて処理時間が純増・伸張しないように吸収されている。例えば、並列処理・多重度を上げることでシーケンシャルにならないようにしている。すなわち、システムレベルでの最適化はすでに十分になされており、改善の余地は少ない。
【００１２】
本発明はこうした課題に鑑みてなされたものであり、その目的は、証券業務システムなどの分散サーバ環境で稼動するシステムで行われるバッチ処理をより適切に分析し、または監視する技術の提供にある。
【課題を解決するための手段】
【００１３】
本発明のある態様はバッチジョブ分析装置に関する。このバッチジョブ分析装置は、バッチ処理で処理される先行後続関係が定義された複数のジョブの稼動時間の実績を保持する実績情報保持部と、起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その予め指定された起動予定時刻を保持する指定時刻情報保持部と、複数のジョブのなかから選択されたパス開始ジョブおよびパス終了ジョブの指定を受け付ける指定受付部と、パス開始ジョブとパス終了ジョブとの間に少なくともひとつの起動時刻指定ジョブが含まれるとき、実績情報保持部によって保持される実績および指定時刻情報保持部によって保持される起動予定時刻に基づいて、パス開始ジョブとパス終了ジョブとの間のジョブの起動予定時刻および終了予定時刻を決定する時刻決定部と、時刻決定部によって決定された起動予定時刻および終了予定時刻に基づいて、起動時刻指定ジョブと起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブを設定する仮想ジョブ設定部と、仮想ジョブ設定部によって設定された仮想的なジョブを使用して、パス開始ジョブとパス終了ジョブとの間のクリティカルパスを特定するクリティカルパス特定部と、を備える。
【００１４】
この態様によると、パス開始ジョブとパス終了ジョブとの間に少なくともひとつの起動時刻指定ジョブが含まれる場合でもクリティカルパスを特定することができる。
【００１５】
本発明の別の態様は、バッチ処理監視装置である。この装置は、バッチ処理で処理される先行後続関係が定義された複数のジョブのうち起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブについて、その起動時刻指定ジョブとその起動時刻指定ジョブに他のジョブを介さずに先行するジョブとの間に仮想的なジョブが設定され、複数のジョブのなかから選択されたパス開始ジョブとパス終了ジョブとの間のクリティカルパスは仮想的なジョブを含むとき、そのクリティカルパスを使用してバッチ処理を監視するバッチ処理監視装置であって、クリティカルパス上で仮想的なジョブに先行する位置にチェックポイントを設定するチェックポイント設定部と、チェックポイント設定部によって設定されたチェックポイント通過の基準となる基準時刻を設定する基準時刻設定部と、チェックポイント設定部によって設定されたチェックポイントにおいて、処理がそのチェックポイントを通過する前に、現在時刻と基準時刻設定部によって設定された基準時刻と仮想的なジョブの終了予定時刻と起動予定時刻との差とに基づいて、パス終了ジョブの終了が遅れるか否かを判定する終了遅延判定部と、を備える。
【００１６】
この態様によると、クリティカルパスが仮想的なジョブを含む場合にパス終了ジョブの終了が遅れるか否かを判定できる。
【００１７】
本発明のさらに別の態様は、バッチ処理監視装置である。この装置は、バッチ処理で処理される先行後続関係が定義された複数のジョブに対して定義されるクリティカルパス上に第１チェックポイントを設定し、かつ、第１チェックポイントに後続する位置であってクリティカルパスと準クリティカルパスとが分岐する位置に第２チェックポイントを設定するチェックポイント設定部と、第１チェックポイントおよび第２チェックポイントのそれぞれにおいてバッチ処理の終了が遅れるか否かを判定する終了遅延判定部と、を備える。終了遅延判定部は、第２チェックポイントにおいて、処理がその第２チェックポイントを通過する前に、現在時刻が第２チェックポイント通過の基準となる基準時刻を超えた場合かつ処理が第１チェックポイントを通過した場合、クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する第１状態判定部と、第１状態判定部において終了していると判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブが終了しているか否かを判定する第２状態判定部と、を含む。終了遅延判定部は、第２状態判定部において終了していないと判定された場合、準クリティカルパス上で第２チェックポイントに先行するジョブの遅延の度合いに基づいて、バッチ処理の終了が遅れるか否かを判定する。
【００１８】
この態様によると、この態様によると、準クリティカルパスのジョブの処理状態を参照してバッチ処理が遅れるか否かを判定できる。
【００１９】
本発明のさらに別の態様は、バッチ処理監視装置である。この装置は、バッチ処理で処理される先行後続関係が定義された複数のジョブに対して定義されるクリティカルパス上に第１チェックポイントを設定し、かつ、クリティカルパス上で第１チェックポイントに後続する位置に第２チェックポイントを設定するチェックポイント設定部と、第１チェックポイント通過の基準となる第１基準時刻および第２チェックポイント通過の基準となる第２基準時刻を設定する基準時刻設定部と、第２チェックポイントを含む第１チェックポイントと第２チェックポイントとの間でクリティカルパスから分岐する分岐パス上に、通過の基準となる第３基準時刻が第１基準時刻と第２基準時刻との間となるように第３チェックポイントを設定する追加チェックポイント設定部と、第１チェックポイント、第２チェックポイントおよび第３チェックポイントのそれぞれにおいて、処理がそのチェックポイントを通過する前に、現在時刻とそのチェックポイントに対応する基準時刻との比較に基づいて、バッチ処理の終了が遅れるか否かを判定する終了遅延判定部と、を備える。
【００２０】
この態様によると、この態様によると、分岐パス上で第２チェックポイントに先行する第３チェックポイントにおいてバッチ処理の終了が遅れるか否かを判定できる。
【００２１】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００２２】
本発明によれば、証券業務システムなどの分散サーバ環境で稼動するシステムで行われるバッチ処理をより適切に分析し、または監視することができる。
【図面の簡単な説明】
【００２３】
【図１】実施の形態に係るバッチ処理分析監視システムによる分析および監視の対象となるバッチ処理が行われる証券業務システムの構成を示す模式図である。
【図２】バッチジョブ分析装置およびそれに接続された部材の機能および構成を示すブロック図である。
【図３】図２の関係情報保持部の一例を示すデータ構造図である。
【図４】図２の実績情報保持部の一例を示すデータ構造図である。
【図５】図２の指定時刻情報保持部の一例を示すデータ構造図である。
【図６】夜間バッチ処理で処理される１４のジョブを時系列で示す模式図である。
【図７】夜間バッチ処理で処理される１４のジョブおよび仮想的なジョブを時系列で示す模式図である。
【図８】バッチ処理監視装置およびそれに接続された部材の機能および構成を示すブロック図である。
【図９】図８のパス情報保持部の一例を示すデータ構造図である。
【図１０】図８のチェックポイント情報保持部の一例を示すデータ構造図である。
【図１１】夜間バッチ処理で処理される１４のジョブおよび仮想的なジョブを時系列で示す模式図である。
【図１２】夜間バッチ処理で処理される１４のジョブおよび仮想的なジョブの処理状態を示す模式図である。
【図１３】夜間バッチ処理で処理される１４のジョブおよび仮想的なジョブの処理状態を示す模式図である。
【図１４】夜間バッチ処理で処理される１４のジョブおよび仮想的なジョブを時系列で示す模式図である。
【図１５】ワーニング画面の代表画面図である。
【図１６】サービス遅延警告画面の代表画面図である。
【発明を実施するための形態】
【００２４】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。
【００２５】
（証券業務システム２００）
図１は、本実施の形態に係るバッチ処理分析監視システムによる分析および監視の対象となるバッチ処理が行われる証券業務システム２００の構成を示す模式図である。証券業務システム２００は、証券会社に設置され、顧客などのユーザからの証券の売買注文を受け付けたり、証券注文に役立つ様々な情報を提供するシステムである。
【００２６】
証券業務システム２００は、プレゼンテーションレイヤ２１０とビジネスロジックレイヤ２２０とデータベースレイヤ２３０とを含む。プレゼンテーションレイヤ２１０は、主にクライアント端末２０２、２０４、２０６から入力されるデータを受け付けてビジネスロジックレイヤ２２０に渡したり、またはビジネスロジックレイヤ２２０から提供されるデータをウェブページに加工してクライアント端末２０２、２０４、２０６に提供する役割を有する。ビジネスロジックレイヤ２２０は、証券の売買注文や情報の提供などの実際の処理を担当する役割を有する。
【００２７】
プレゼンテーションレイヤ２１０は、複数のウェブサーバ２１２、２１４、２１６、２１８を含む。本実施の形態では、証券業務システム２００に対するアクセスチャネル毎に、ウェブページの処理を実行するサーバのグループが準備されている。図１では、ウェブ経由の一般顧客、コールセンタ、支店からそれぞれのクライアント端末２０２、２０４、２０６を使用して証券業務システム２００にアクセスする場合を想定している。したがって、プレゼンテーションレイヤ２１０は、一般顧客からのアクセスに対する処理を担当する一般用ウェブサーバ２１２と、コールセンタからのアクセスに対する処理を担当するコールセンタ用ウェブサーバ２１４と、支店からのアクセスに対する処理を担当する支店用ウェブサーバ２１６と、を備える。さらに、通常は休止している予備の予備ウェブサーバ２１８を準備しておいてもよい。各ウェブサーバ２１２、２１４、２１６、２１８は、複数のサーバで構成されてもよい。各ウェブサーバ２１２、２１４、２１６、２１８は、上記の機能の他、クライアント端末２０２、２０４、２０６からの要求に応じてプログラムを実行しその結果を送信する動的ページの生成機能やトランザクション管理機能などを実装している。
【００２８】
ビジネスロジックレイヤ２２０には、アクセスチャネル毎ではなく、所定のアプリケーションを専用に実行するサーバのグループが準備されている。ビジネスロジックレイヤ２２０は、現在および過去の株価や出来高、会社情報などの証券売買の際に必要となる情報をクライアント端末２０２、２０４、２０６に提供するアプリケーションを実行する情報提供アプリケーションサーバ２２２、株や投資信託などの売買注文を受け付けるアプリケーションを実行する注文処理アプリケーションサーバ２２４、ユーザのログインやログアウト、顧客情報などを管理するアプリケーションを実行する事務処理アプリケーションサーバ２２６を備える。これ以外にも、例えば、外部の新聞社のサイトなどと連携して経済ニュースを提供する外部連携アプリケーションサーバや、顧客毎に取引残高の報告書などを提供する報告書アプリケーションサーバなどを備えていてもよい。各アプリケーションサーバ２２２、２２４、２２６は、複数のサーバで構成されてもよい。各アプリケーションサーバ２２２、２２４、２２６は、上記の業務処理の機能の他、一般のアプリケーションサーバが有している機能、例えば、データベースレイヤ２３０のデータベースへの接続機能、複数の処理を連結するトランザクション管理機能なども実装している。
【００２９】
データベースレイヤ２３０には、ビジネスロジックレイヤ２２０から参照されたり更新されたりするデータベース（database、ＤＢ）が準備されている。データベースレイヤ２３０は、ビジネスロジックレイヤ２２０の各サーバの主たるデータベースとなるメインＤＢ２３２と、主に参照目的で設けられた情報系ＤＢ２３４と、を備える。
【００３０】
各アプリケーションサーバ２２２、２２４、２２６では、複数のクライアント端末に対するサービス２４２、２４４、２４６、２４８、２５０、２５２が同時に実行される。例えば、情報提供アプリケーションサーバ２２２では、一般顧客に対して株価情報を提供するサービスＡ２４２と、コールセンタに対して株価情報を提供するサービスＢ２４４が同時に実行されてもよい。注文処理アプリケーションサーバ２２４では、コールセンタからの株式売買注文を処理するサービスＣ２４６と、店舗からの投資信託売買注文を処理するサービスＤ２４８が同時に実行されてもよい。
【００３１】
一般顧客、コールセンタや支店の担当員は、それぞれのクライアント端末２０２、２０４、２０６からウェブブラウザなどのソフトウェアを使用し、インターネット等のネットワーク２０８を介して証券業務システム２００にアクセスする。コールセンタや支店に備えられるクライアント端末２０４、２０６は、証券業務システム２００と専用線２０９によって接続されていてもよい。
【００３２】
クライアント端末２０２、２０４、２０６から証券業務システム２００にアクセスすると、プレゼンテーションレイヤ２１０のアクセスチャネルに応じたウェブサーバ２１２、２１４、２１６によって作成されたウェブページが、クライアント端末２０２、２０４、２０６に送信される。クライアント端末２０２、２０４、２０６は、送信されたウェブページをディスプレイに表示する。ユーザがウェブページ上でログイン、情報の閲覧、売買注文などの操作を実行すると、その情報がウェブサーバ２１２、２１４、２１６を介してビジネスロジックレイヤ２２０のアプリケーションサーバ２２２、２２４、２２６に渡される。各アプリケーションサーバ２２２、２２４、２２６による処理の結果は、ウェブサーバ２１２、２１４、２１６によってウェブページに加工され、そのデータがクライアント端末２０２、２０４、２０６に送信される。こうしてユーザは、ウェブページに表示される種々の情報を参照したり、またはウェブページを通じて証券の売買注文をすることができる。
【００３３】
上述したような証券業務システムは高度な分散サーバ環境（いわゆる、サーバ乱立）で稼動しており、一例では約３０００サーバにジョブ処理実行環境が分散されており、そのジョブのトータル数は一例では約９０万ジョブ／日程度となる。また、システム間連携（Ｉ／Ｆ）が多数存在し、この連携の順序は基本的には変更不可である。
【００３４】
一例では、数百システム間で何らかのＩ／Ｆ連携が発生している。システム間Ｉ／Ｆの順序は変えられない、例えばＡシステムデータ−＞Ｂシステムデータ−＞Ｃシステムデータという順序は変えられないので、全体構造の実行計画自体は基本的には変更不可である。
【００３５】
システム単体（数十〜数千ジョブを包含）のなかでの処理実行順序や優先度変更はできるかもしれないが、一般にシステム単体では既に最適化されている。したがって、平常時においては、それぞれのシステムバッチ処理時間の日による変動は発生しにくい（または、そうならないような設計が盛り込まれている）。
【００３６】
そのような状況の下、従来のクリティカルパス分析技術では、事前に想定される要因（処理件数想定等）に対するサービス開始時刻の予測は実行できたとしても、バッチ処理当日に事前に想定できない事象（インシデント）が発生した際のサービス開始時刻予測は困難である。
想定できない事象とは主に
・基盤環境障害（サーバのディスクの損壊等）
・バグ起因による障害（アプリケーションロジックの不具合によるバッチ処理の異常終了等）
などの障害インシデントである。障害インシデントが発生したことおよび何の処理で障害インシデントが発生したか、については既存の監視装置で検出できるものの、障害インシデントによるサービス開始時刻への影響は分からなかった。
【００３７】
証券業務システムによるオンラインサービスが提供開始予定時刻までに提供開始とならないことが判明した際には、業務面においてのフォローが必要となる。例えば、ホームページへのお詫び等の掲載、各種業務での代替手段実施決断や、フォロー対応準備要否の判断、サービスレベルを落とすが起動を優先させるかの判断（一部の情報は古いがサービスを起動させる）、代替手段での業務のため通常よりも社員を早く出社させる必要があるかの判断、等である。したがって、夜間バッチ処理にて問題が発生した際に「朝何時にサービス開始する見込みか？」という情報を迅速に得ることが必要である。
なお、当日に必要な情報は「非常に精度が高い情報」ではなく、「ある程度精度（１０分前後）は落ちても、どれくらいの時刻になりそうか？を、「より早く」知ること」である。
【００３８】
夜間バッチ処理にて想定できない事象が発生した際、従来は下記の理由によりサービス開始時刻の予想は困難であった。
・想定できない事象であるため、事前予測（シミュレーション）ができない。
・再計算をする時間が無い。例えばＡＭ３時にインシデントが発生すると、開始リミット（例えばＡＭ５時）まであまり時間が残されていない状況において、サービス開始予測時刻及び開始リミットへの影響の有無を算出することが必要となる。これに対して、従来では、まず時刻起動ジョブが絡むためクリティカルパスの計算では対応（再計算）できない。そして、再計算をするとしても、計算対象となるジョブ数が膨大なためかなり高速での計算が必要となる。そのような高性能の計算マシンを導入するにはコストがかかり過ぎる。また、通常性能の計算マシンで時間をかけて計算するということも考えられるが、それではそもそも非常時の業務準備に間に合わない可能性があるので採用しにくい。そして、そもそもクリティカルパスは結果情報であり、想定外インシデント発生中においては、どの経路がクリティカルパスになるかは特定できない。したがって、インシデント対応がクローズするまでは、インシデント発生処理が伸張し続けていることになる。
【００３９】
インシデントクローズ時刻を見込みで再計算処理し、それが外れた場合は、下記のいずれかの対応をとることとなる。
・計算中止し再度見込み時間で再計算を繰り返す。
・複数処理計算を多重で計算できる位の処理能力を持たせる。
・インシデントがクローズしてから再計算を行う。
このため従来手法のひとつである「個々のジョブ処理時間の積み上げ再計算」方式シミュレーションでは当日の障害インシデント発生への対応は困難であった。
実施の形態に係るバッチ処理分析監視システムは、そのような対応を可能とするシステムである。
【００４０】
証券業務システムにおいてバッチ処理で処理されるジョブは、起動されるべき起動予定時刻が予め指定されている起動時刻指定ジョブを含むことが多い。起動時刻指定ジョブが存在する場合、一般に、純粋な数学的クリティカルパス計算で有用なクリティカルパスを算出することは難しい。パスの途中に起動時刻指定ジョブが存在する場合、終点から逆算したクリティカルパスは、「起動時刻指定ジョブの待ちポイント」が起点とな（処理が詰まっていないから）ってしまうからである。
【００４１】
起動時刻指定ジョブが発生する背景は、証券業務という業態や、そのシステム構成に特徴があり、特に以下の２つが挙げられる。
（１）締め処理が複数存在すること
例えば、マーケット後場は１５時に終了し締め、支店での扱いはそこで終了する。一方で顧客ダイレクトのオンラインサービスは例えば２６時まで継続しており例えば予約分を明日朝トップの取引対象に組み入れる必要がある。このようなＸＸ締め処理が一例では数十はあり断続的に深夜にかけて続く。したがって、証券業務システムでは夜間バッチ処理と並行してリアルタイム処理が行われる。
【００４２】
締め処理は例えばバッチ処理に入力するためのデータを最終的に確定させる処理であってもよい。あるいはまた、締め処理は、オンライン処理の終了または確定に関する処理であってもよく、またはオンライン処理とバッチ処理との間に存在する処理であってもよい。
【００４３】
起動時刻指定ジョブの指定起動時刻は、リアルタイム処理の結果が夜間バッチ処理に組み入れられるべき時刻に基づき設定されてもよい。例えば支店取引分のデータの受け取りに関するジョブおよびオンラインサービス分のデータの受け取りに関するジョブはそれぞれ異なる指定起動時刻を有する起動時刻指定ジョブとなる。
【００４４】
（２）他社提供データＩ／Ｆ待ちが多数あること
ＸＸ時ごろに送信される他社提供データがあり、それを２５時に取り込むことになっている等の状況である。この場合、他社提供データの取り込みに関するジョブは起動時刻指定ジョブとなる。すなわち、起動時刻指定ジョブの指定起動時刻は、証券業務システムとは異なるシステムからデータが提供されるべき時刻に基づき設定されてもよい。
【００４５】
本実施の形態に係るバッチ処理分析監視システムはバッチジョブ分析装置１００とバッチ処理監視装置３００とを備える。バッチジョブ分析装置１００は事前分析フェーズを担当し、バッチ処理で処理されるジョブのなかに起動時刻指定ジョブが存在するという状況においてクリティカルパスの特定を可能とする。バッチ処理監視装置３００は当日監視フェーズを担当し、クリティカルパス上にチェックポイントを設けてバッチ処理の進行を監視する。バッチ処理監視装置３００は処理の遅延が疑われる状況において、クリティカルパスの再計算は行わず、現在時刻と基準時刻との単純な比較によりサービス開始が遅れるか否かを判定する。これにより、障害インシデント発生に対してより素早い対応が可能となる。
【００４６】
（バッチジョブ分析装置１００）
図２は、バッチジョブ分析装置１００およびそれに接続された部材の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウエア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【００４７】
バッチジョブ分析装置１００は証券業務システム２００の内部に設けられてもよく、外部に設けられてもよい。本実施の形態では、バッチジョブ分析装置１００は証券業務システム２００の外部に設けられている。バッチジョブ分析装置１００はマウスやキーボードなどの入力装置１２６およびディスプレイ１２８と接続される。
バッチジョブ分析装置１００は、指定受付部１０２と、分析対象特定部１０４と、時刻決定部１０６と、仮想ジョブ設定部１０８と、クリティカルパス特定部１１０と、関係情報保持部１１２と、実績情報保持部１１４と、指定時刻情報保持部１１６と、を備える。
【００４８】
図３は、関係情報保持部１１２の一例を示すデータ構造図である。関係情報保持部１１２は、バッチ処理で処理されるジョブ間の先行後続関係を保持する。関係情報保持部１１２は、バッチ処理で処理されるジョブを特定するジョブＩＤと、そのジョブに直接後続するジョブを特定する直接後続ジョブＩＤと、を対応付けて保持する。バッチ処理において、ジョブとそのジョブに直接後続するジョブとには他のジョブは介在しない。言い換えると、ジョブの終了は、そのジョブに直接後続するジョブが開始される開始条件のひとつとなっている。同様に、ジョブとそのジョブに直接先行するジョブとには他のジョブは介在しない。本明細書では、ジョブＩＤをジョブを示す符号として採用する。
【００４９】
図４は、実績情報保持部１１４の一例を示すデータ構造図である。実績情報保持部１１４は、バッチ処理で処理される各ジョブの稼動時間の実績または履歴を保持する。実績情報保持部１１４は、日付と、ジョブＩＤと、ジョブが起動されてから終了するまでの期間の長さである稼動時間と、を対応付けて保持する。本実施の形態ではバッチ処理は夜間バッチ処理などの一日に一回行われるバッチ処理である場合について説明するが、それ以外のバッチ処理についても本実施の形態に係る技術的思想を適用できることは、本明細書に接した当業者には明らかである。実績情報保持部１１４は毎日、バッチ処理の終了後に更新されてもよい。
【００５０】
バッチ処理で処理されるジョブは、起動時刻指定ジョブを含む。起動時刻指定ジョブが起動されるべき起動予定時刻は、バッチ処理の管理者によって予め指定された指定起動時刻である。起動時刻指定ジョブは、例えば証券業務システム２００におけるリアルタイム処理の結果を受け入れるジョブである。この場合、起動時刻指定ジョブの起動予定時刻はリアルタイム処理の結果がバッチ処理に組み入れられるべき時刻に基づき設定されてもよい。リアルタイム処理の結果は例えばリアルタイム処理を通じて確定されたデータであってもよい。あるいはまた、起動時刻指定ジョブは、証券業務システム２００とは異なるシステム、例えばニュース配信システムからデータを受け入れるジョブであってもよい。この場合、起動時刻指定ジョブの起動予定時刻は、ニュース配信システムからデータが提供されるべき時刻に基づき設定されてもよい。
【００５１】
図５は、指定時刻情報保持部１１６の一例を示すデータ構造図である。指定時刻情報保持部１１６は、起動時刻指定ジョブを特定する起動時刻指定ジョブＩＤと、指定起動時刻と、を対応付けて保持する。
【００５２】
図２に戻り、管理者は、バッチジョブ分析装置１００を使用してバッチ処理を分析するに当たり、バッチ処理で処理されるジョブ全体の中から、クリティカルパスの開始点すなわち先頭となるべきパス開始ジョブと終了点すなわち末尾となるべきパス終了ジョブとを選択する。指定受付部１０２は、入力装置１２６を介して管理者から、パス開始ジョブを特定するパス開始ジョブＩＤおよびパス終了ジョブを特定するパス終了ジョブＩＤの指定を受け付ける。
【００５３】
分析対象特定部１０４は、関係情報保持部１１２によって保持される先行後続関係に基づき、パス開始ジョブとパス終了ジョブとの間に位置する中間ジョブを特定する。中間ジョブは、パス終了ジョブに先行しパス開始ジョブに後続するジョブである。特に分析対象特定部１０４は、関係情報保持部１１２に保持されるジョブＩＤ間の対応関係によりパス開始ジョブＩＤおよびパス終了ジョブＩＤの両方と関連付づけられるジョブＩＤを、中間ジョブの中間ジョブＩＤとして特定する。なお、分析対象特定部１０４は、パス開始ジョブＩＤまたはパス終了ジョブＩＤのいずれか一方とジョブＩＤ間の対応関係により関連付けられるジョブＩＤを、中間ジョブＩＤとして特定してもよい。
【００５４】
以下、分析対象特定部１０４によって特定された中間ジョブは少なくともひとつの起動時刻指定ジョブを含む場合を説明する。
時刻決定部１０６は、実績情報保持部１１４によって保持される稼動時間の実績および指定時刻情報保持部１１６によって保持される指定起動時刻に基づいて、各中間ジョブの起動予定時刻および終了予定時刻を決定する。終了予定時刻は、ジョブが終了されるべき時刻である。時刻決定部１０６は、予測稼動時間算出部１１８と、指定起動時刻抽出部１２０と、指定時刻決定部１２２と、実績時刻決定部１２４と、を含む。
【００５５】
予測稼動時間算出部１１８は、実績情報保持部１１４によって保持される稼動時間の実績に基づいて、各中間ジョブの稼動時間の予測値を算出する。特に予測稼動時間算出部１１８は、各中間ジョブについて、１ヶ月や１年などの所定の期間に亘って過去の稼動時間を平均することにより得られる平均値を稼動時間の予測値として算出する。なお、予測稼動時間算出部１１８は、稼動時間の実績に公知の統計的手法を適用することにより予測値を算出してもよい。
【００５６】
指定起動時刻抽出部１２０は、分析対象特定部１０４によって特定された中間ジョブに含まれる起動時刻指定ジョブの指定起動時刻を指定時刻情報保持部１１６から抽出する。特に指定起動時刻抽出部１２０は、分析対象特定部１０４によって特定された各中間ジョブの中間ジョブＩＤと指定時刻情報保持部１１６に保持されている起動時刻指定ジョブＩＤとを比較し、それらが一致した場合に一致したＩＤに対応する指定起動時刻を抽出する。これにより、指定起動時刻抽出部１２０は、分析対象特定部１０４によって特定された中間ジョブに含まれる起動時刻指定ジョブを特定し、特定された起動時刻指定ジョブに対応する指定起動時刻を抽出する。
【００５７】
指定時刻決定部１２２は、指定起動時刻抽出部１２０によって特定された起動時刻指定ジョブの起動予定時刻を、指定起動時刻抽出部１２０によって抽出された指定起動時刻に基づき決定する。一例では、指定時刻決定部１２２は、起動時刻指定ジョブの起動予定時刻を指定起動時刻そのものとする。
【００５８】
実績時刻決定部１２４は、予測稼動時間算出部１１８によって算出された稼動時間の予測値および指定時刻決定部１２２によって決定された起動時刻指定ジョブの起動予定時刻に基づき、パス開始ジョブからパス終了ジョブに向けて順番に、各中間ジョブの起動予定時刻および終了予定時刻を決定する。
【００５９】
例えば第１中間ジョブが第２中間ジョブに直接先行し、第２中間ジョブが第３中間ジョブに直接先行する場合を考える。第３中間ジョブは起動時刻指定ジョブであるとする。実績時刻決定部１２４は、第１中間ジョブの起動予定時刻に第１中間ジョブの稼動時間の予測値を加算することにより、第１中間ジョブの終了予定時刻を決定する。実績時刻決定部１２４は、第２中間ジョブは起動時刻指定ジョブでないと判定し、第１中間ジョブの終了予定時刻を第２中間ジョブの起動予定時刻とする。実績時刻決定部１２４は、第２中間ジョブの起動予定時刻に第２中間ジョブの稼動時間の予測値を加算することにより、第２中間ジョブの終了予定時刻を決定する。実績時刻決定部１２４は、第３中間ジョブは起動時刻指定ジョブであると判定し、第３中間ジョブの起動予定時刻として指定時刻決定部１２２によって決定された起動予定時刻を採用する。実績時刻決定部１２４は、第３中間ジョブの起動予定時刻に第３中間ジョブの稼動時間の予測値を加算することにより、第３中間ジョブの終了予定時刻を決定する。
【００６０】
クリティカルパス特定部１１０は、関係情報保持部１１２によって保持される中間ジョブ間の先行後続関係および時刻決定部１０６によって決定された各中間ジョブの起動予定時刻および終了予定時刻に基づき、パス開始ジョブとパス終了ジョブとの間のクリティカルパスを特定する。特にクリティカルパス特定部１１０は、パス終了ジョブからパス開始ジョブに向けて中間ジョブを辿り、分岐部分では終了予定時刻と起動予定時刻との差すなわち予測稼動時間がより長いほうの中間ジョブを選択する、というアルゴリズムにしたがってクリティカルパスを特定する。分岐部分は、例えばひとつの中間ジョブに２以上の中間ジョブが直接先行する部分である。
【００６１】
仮想ジョブ設定部１０８は、クリティカルパス特定部１１０によるクリティカルパス探索の過程で起動時刻指定ジョブが現れると、起動時刻指定ジョブと起動時刻指定ジョブに直接先行する中間ジョブとの間に仮想的なジョブを設定する。仮想ジョブ設定部１０８は、仮想的なジョブの起動予定時刻を起動時刻指定ジョブに直接先行する中間ジョブの終了予定時刻とする。仮想ジョブ設定部１０８は、仮想的なジョブの終了予定時刻を起動時刻指定ジョブの起動予定時刻とする。
【００６２】
仮想ジョブ設定部１０８によって仮想的なジョブが設定されると、クリティカルパス特定部１１０は仮想的なジョブを使用してクリティカルパスを特定する。特に仮想ジョブ設定部１０８によって起動時刻指定ジョブに対して２以上の仮想的なジョブが設定された場合、クリティカルパス特定部１１０は、それらの２以上の仮想的なジョブのうち終了予定時刻と起動予定時刻との差（以下、仮想稼動時間と称す）がより小さい（言い換えると、仮想的なジョブに直接先行する中間ジョブの終了予定時刻がより遅い）仮想的なジョブを含むパスを優先的にクリティカルパスとして特定する。
クリティカルパス特定部１１０は、同様の手法で第１準クリティカルパスや第２準クリティカルパスを特定してもよい。
【００６３】
図６は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚを時系列で示す模式図である。この例では、パス開始ジョブはジョブＡであり、パス終了ジョブはジョブＩである。残りのジョブは中間ジョブである。このような１４のジョブＡ〜Ｊ、Ｗ〜Ｚの時系列への展開は、指定受付部１０２、分析対象特定部１０４および時刻決定部１０６により行われる。
【００６４】
クリティカルパス特定部１１０は、ジョブＩからクリティカルパスの探索を始める。このクリティカルパス探索の過程でジョブＦが現れる。このジョブＦは起動時刻指定ジョブであり、それに先行するジョブＤおよびジョブＥのいずれとの間にもフロートが存在する。
【００６５】
図７は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚおよび仮想的なジョブＩＪ１、ＩＪ２を時系列で示す模式図である。図７は図６に対応する。仮想ジョブ設定部１０８は、ジョブＦとジョブＤとの間のフロートおよびジョブＦとジョブＥとの間のフロートをそれぞれ第１仮想ジョブＩＪ１、第２仮想ジョブＩＪ２として仮想ジョブ化する。クリティカルパス特定部１１０は、第１仮想ジョブＩＪ１、第２仮想ジョブＩＪ２のうち仮想稼動時間がより短い第１仮想ジョブＩＪ１を選択してクリティカルパスの探索を続行する。結果的に、クリティカルパス特定部１１０は、クリティカルパスとしてジョブＡ−ジョブＢ−ジョブＤ−第１仮想ジョブＩＪ１−ジョブＦ−ジョブＧ−ジョブＩを特定する。また、クリティカルパス特定部１１０は、第１準クリティカルパスとしてジョブＡ−ジョブＣ−ジョブＥ−第２仮想ジョブＩＪ２−ジョブＦ−ジョブＧ−ジョブＩを特定する。
【００６６】
（バッチ処理監視装置３００）
図８は、バッチ処理監視装置３００およびそれに接続された部材の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウエア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【００６７】
バッチ処理監視装置３００は証券業務システム２００の内部に設けられてもよく、外部に設けられてもよい。本実施の形態では、バッチ処理監視装置３００は証券業務システム２００の外部に設けられており、バッチ処理監視装置３００と証券業務システム２００とはネットワーク２０８を介して接続される。バッチ処理監視装置３００は証券業務システム２００からバッチ処理の進行状況などをネットワーク２０８を介して取得する。バッチ処理監視装置３００はマウスやキーボードなどの入力装置３２４およびディスプレイ３２６と接続される。バッチ処理監視装置３００は、バッチジョブ分析装置１００によって特定されたクリティカルパスを使用して証券業務システム２００のバッチ処理を監視する。
【００６８】
バッチ処理監視装置３００は、チェックポイント設定部３０２と、標準通過時刻決定部３２８と、ワーニング経過時刻決定部３３０と、クリティカル経過時刻決定部３３２と、終了遅延判定部３０６と、遅延算出部３１０と、追加チェックポイント設定部３１２と、通過登録部３０４と、チェックポイント情報保持部３１４と、パス情報保持部３１６と、追加チェックポイント情報保持部３２２と、を備える。終了遅延判定部３０６は、クリティカルパス状態判定部３３４と、準クリティカルパス状態判定部３３６と、を含む。
【００６９】
図９は、パス情報保持部３１６の一例を示すデータ構造図である。パス情報保持部３１６は、バッチ処理全体の先頭のジョブをパス開始ジョブ、末尾のジョブをパス終了ジョブとして指定したときにバッチジョブ分析装置１００によって特定されるクリティカルパス、第１準クリティカルパスおよび第２準クリティカルパスの情報を保持する。以下、バッチジョブ分析装置１００によって特定されたクリティカルパスは少なくともひとつの仮想的なジョブを含む場合を説明する。パス情報保持部３１６は、パスの種別ごとに、パスに含まれるジョブを特定するジョブＩＤと、そのジョブの起動予定時刻と、そのジョブの終了予定時刻と、そのジョブが仮想的なジョブであるか否かを示す仮想フラグと、を対応付けて保持する。パスの種別は、クリティカルパス、第１準クリティカルパスまたは第２準クリティカルパスのいずれかである。仮想フラグが立てられたジョブは仮想的なジョブである。
【００７０】
図１０は、チェックポイント情報保持部３１４の一例を示すデータ構造図である。チェックポイント情報保持部３１４は、クリティカルパス上に設けられたチェックポイントに関する情報を保持する。チェックポイント情報保持部３１４は、チェックポイントを特定するチェックポイントＩＤと、チェックポイント通過に関連する関連ジョブを特定する関連ジョブＩＤと、チェックポイントの通過の契機と、標準通過時刻と、ワーニング経過時刻と、クリティカル経過時刻と、実績通過時刻と、を対応付けて保持する。チェックポイントの通過の契機は、例えば関連ジョブの起動または終了である。標準通過時刻は、例えば通過の契機が起動であれば関連ジョブの起動予定時刻であり、通過の契機が終了であれば関連ジョブの終了予定時刻である。ワーニング経過時刻は、チェックポイント通過前に現在時刻がこの時刻を過ぎると、バッチ処理の管理者にチェックポイントにおいて遅れが生じていることを警告する時刻であり、チェックポイントに後続する仮想的なジョブの仮想稼動時間に基づき設定される。クリティカル経過時刻は、チェックポイント通過前に現在時刻がこの時刻を過ぎると、バッチ処理の管理者にバッチ処理の終了が遅れる蓋然性が高いことを警告する時刻であり、チェックポイントに後続する仮想的なジョブの仮想稼動時間に基づき設定される。実績通過時刻は、当日のバッチ処理の監視中に処理がチェックポイントを実際に通過した時刻である。本明細書では、チェックポイントＩＤをチェックポイントを示す符号として採用する。
【００７１】
追加チェックポイント情報保持部３２２は、クリティカルパスから分岐する分岐パス、例えば第１準クリティカルパスや第２準クリティカルパス上に設けられた追加チェックポイントに関する情報を保持し、チェックポイント情報保持部３１４と同様のデータ構造を有する。
【００７２】
以下、図１１から図１４を参照して各部の機能を説明する。
（予想クリティカルパスのチェックポイントに基づく当日実績情報比較検出（当日リアル稼動））
図１１は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚおよび仮想的なジョブＩＪ１、ＩＪ２を時系列で示す模式図である。図１１は図７に対応する。パス開始ジョブはジョブＡ、パス終了ジョブはジョブＩである。クリティカルパスは、ジョブＡ−ジョブＢ−ジョブＤ−第１仮想ジョブＩＪ１−ジョブＦ−ジョブＧ−ジョブＩである。第１準クリティカルパスは、ジョブＡ−ジョブＣ−ジョブＥ−第２仮想ジョブＩＪ２−ジョブＦ−ジョブＧ−ジョブＩである。
【００７３】
管理者は、夜間バッチ処理を始める前に、チェックポイントを配置すべきクリティカルパス上の位置であるチェックポイント位置を決定する。チェックポイント位置の決定の基準は以下の２つの基準を含む。
（１）クリティカルパスに含まれる仮想的なジョブ（図１１の場合、第１仮想ジョブＩＪ１）に先行する少なくともひとつの位置（以下、仮想先行位置と称す）を含める。
（２）仮想先行位置に後続する位置であってクリティカルパスと第１準クリティカルパスとが分岐する位置（以下、クリティカル分岐位置と称す）を含める。
【００７４】
チェックポイント設定部３０２は、入力装置３２４を介して管理者から、決定されたチェックポイント位置の情報を取得し、取得されたチェックポイント位置にチェックポイントを設定する。この際、チェックポイント設定部３０２は、上記２つの決定の基準が満たされるよう管理者の入力動作を制御する。例えば、チェックポイント設定部３０２は、管理者によって入力されたチェックポイント位置が上記２つの決定の基準を満たさない場合、管理者に警告してもよい。
【００７５】
チェックポイント設定部３０２は、取得されたチェックポイント位置の情報に基づき、チェックポイントの関連ジョブおよび通過の契機を決定する。例えば、取得されたチェックポイント位置の情報が「ジョブＤの起動位置」である場合、チェックポイント設定部３０２は関連ジョブＩＤを「Ｄ」、通過の契機を「起動」に、それぞれ決定する。
【００７６】
チェックポイント設定部３０２は、チェックポイントＩＤを採番し、採番されたチェックポイントＩＤと、決定された関連ジョブＩＤと、決定された通過の契機と、を対応付けてチェックポイント情報保持部３１４に登録する。図１１の例ではチェックポイント設定部３０２によって、ジョブＤの起動位置に第１チェックポイントＣＰ１、ジョブＦの起動位置に第２チェックポイントＣＰ２、ジョブＩの起動位置に第３チェックポイントＣＰ３がそれぞれ設定される。第１チェックポイントＣＰ１はクリティカルパスに含まれる第１仮想ジョブＩＪ１に先行する位置に設けられる。第２チェックポイントＣＰ２は第１チェックポイントＣＰ１に後続し、クリティカルパスと第１準クリティカルパスとが分岐する位置に設けられる。
【００７７】
標準通過時刻決定部３２８は、チェックポイント設定部３０２によって設定されたチェックポイントの通過の基準となる基準時刻すなわち標準通過時刻を設定する。標準通過時刻決定部３２８は、チェックポイント情報保持部３１４およびパス情報保持部３１６を参照し、チェックポイント設定部３０２によって設定されたチェックポイントの関連ジョブと通過の契機との組み合わせに対応する標準通過時刻を決定する。例えば、通過の契機が「起動」（「終了」）である場合、標準通過時刻決定部３２８は関連ジョブの起動予定時刻（終了予定時刻）を標準通過時刻として決定する。標準通過時刻決定部３２８は、決定された標準通過時刻をチェックポイント情報保持部３１４に登録する。
【００７８】
ワーニング経過時刻決定部３３０は、チェックポイント設定部３０２によって設定されたチェックポイントに対応するワーニング経過時刻を算出する。ワーニング経過時刻決定部３３０は、パス情報保持部３１６を参照し、クリティカルパス上でチェックポイント設定部３０２によって設定されたチェックポイントの後続となる全ての仮想的なジョブの仮想稼動時間の和であるトータルフロートを算出する。ワーニング経過時刻決定部３３０は、算出されたトータルフロートに１より小さい所定の比率、例えば０．５を乗じることにより得られる時間を標準通過時刻に加える。ワーニング経過時刻決定部３３０は、そのような加算の結果得られる時刻に所定のマージン、例えば１分を加えた時刻をワーニング経過時刻として決定する。マージンは、後続となる仮想的なジョブが存在しない場合に、標準通過時刻とワーニング経過時刻とが同一とならないようにするために設定される。ワーニング経過時刻決定部３３０は、決定されたワーニング経過時刻をチェックポイント情報保持部３１４に登録する。
【００７９】
図１１の例では、ワーニング経過時刻決定部３３０は第１チェックポイントＣＰ１に対して、それに後続する仮想的なジョブとして第１仮想ジョブＩＪ１を抽出する。ワーニング経過時刻決定部３３０は第１仮想ジョブＩＪ１の仮想稼動時間である６０分を第１チェックポイントＣＰ１についてのトータルフロートとして決定する。ワーニング経過時刻決定部３３０はトータルフロート６０分に０．５を乗じて３０分を得る。そしてワーニング経過時刻決定部３３０は第１チェックポイントＣＰ１の標準通過時刻である２１：３０に３０分を加算して２２：００を得、それにマージン１分をさらに加算してワーニング経過時刻２２：０１を得る。
【００８０】
クリティカル経過時刻決定部３３２は、チェックポイント設定部３０２によって設定されたチェックポイントに対応するクリティカル経過時刻を算出する。クリティカル経過時刻決定部３３２は、パス情報保持部３１６を参照し、チェックポイント設定部３０２によって設定されたチェックポイントについてのトータルフロートを算出する。クリティカル経過時刻決定部３３２は、算出されたトータルフロートを標準通過時刻に加える。クリティカル経過時刻決定部３３２は、そのような加算の結果得られる時刻に所定のマージン、例えば１分を加えた時刻をクリティカル経過時刻として決定する。マージンは、後続となる仮想的なジョブが存在しない場合に、標準通過時刻とクリティカル経過時刻とが同一とならないようにするために設定される。クリティカル経過時刻決定部３３２は、決定されたクリティカル経過時刻をチェックポイント情報保持部３１４に登録する。
【００８１】
図１１の例では、クリティカル経過時刻決定部３３２は第１チェックポイントＣＰ１に対して、それに後続する仮想的なジョブとして第１仮想ジョブＩＪ１を抽出する。クリティカル経過時刻決定部３３２は第１仮想ジョブＩＪ１の仮想稼動時間である６０分を第１チェックポイントＣＰ１についてのトータルフロートとして決定する。クリティカル経過時刻決定部３３２は仮想稼動時間の和６０分を第１チェックポイントＣＰ１の標準通過時刻である２１：３０に加算して２２：３０を得、それにマージン１分をさらに加算してクリティカル経過時刻２２：３１を得る。
【００８２】
チェックポイント情報保持部３１４にチェックポイントに関する情報を登録した後、管理者はバッチ処理監視装置３００を使用してバッチ処理の監視を開始する。
図１２は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚおよび仮想的なジョブＩＪ１、ＩＪ２の処理状態を示す模式図である。図１２は図１１に対応する。図１２において現在時刻までに進行した処理には斜線によるハッチングを施している。
【００８３】
終了遅延判定部３０６は、チェックポイント情報保持部３１４に登録されている各チェックポイントにおいて処理の遅れを監視する。終了遅延判定部３０６は、第１チェックポイントＣＰ１において、処理が第１チェックポイントＣＰ１を通過する前に、現在時刻と標準通過時刻とトータルフロートとに基づいて、パス終了ジョブの終了が遅れるか否かすなわち夜間バッチ処理の終了が遅れるか否かを判定する。特に終了遅延判定部３０６は、現在時刻から標準通過時刻を減じることで得られる差である経過時間がトータルフロートよりも大きい場合、夜間バッチ処理の終了が遅れると判定する。
【００８４】
終了遅延判定部３０６は、第１チェックポイントＣＰ１において、現在時刻とワーニング経過時刻とを比較し、前者が後者を超えるとディスプレイ３２６にワーニング画面（図１５で後述）を表示させるなどして管理者に警告する。
【００８５】
終了遅延判定部３０６は、第１チェックポイントＣＰ１において、現在時刻とクリティカル経過時刻とを比較し、前者が後者を超えると夜間バッチ処理の終了が遅れると判定し、ディスプレイ３２６にサービス遅延警告画面（図１６で後述）を表示させるなどして管理者に警告する。なお、
クリティカル経過時刻  ＝  標準通過時刻  ＋  トータルフロート  ＋  マージン
であるから、
現在時刻  ＞  クリティカル経過時刻
である場合、
経過時間  ＝  現在時刻  −  標準通過時刻  ＞  トータルフロート  ＋  マージン
となる。
【００８６】
現在時刻とクリティカル経過時刻との比較の代わりに経過時間とトータルフロートとの比較の観点から説明すると、終了遅延判定部３０６は、第１チェックポイントＣＰ１において、標準通過時刻からの超過分である経過時間ΔＴ１を第１仮想ジョブＩＪ１の仮想稼動時間の部分ΔＴ２で相殺しようと試みる。終了遅延判定部３０６は、経過時間ΔＴ１が第１仮想ジョブＩＪ１の仮想稼動時間を超過していなければ、夜間バッチ処理の終了予定時刻に変化はないと判定する。終了遅延判定部３０６は、経過時間ΔＴ１が第１仮想ジョブＩＪ１の仮想稼動時間を超過した場合、夜間バッチ処理の終了が遅れると判定する。これはすなわち純粋なクリティカルパスが発生していることを意味する。
【００８７】
遅延算出部３１０は、終了遅延判定部３０６において夜間バッチ処理の終了が遅れると判定された場合、経過時間とトータルフロートとの差に基づいて夜間バッチ処理の終了の遅延の度合いを算出する。特に遅延算出部３１０は現在時刻とクリティカル経過時刻との差を遅延量として算出し、算出された遅延量をサービス遅延警告画面に含める。
【００８８】
より具体的には、遅延算出部３１０は、経過時間ΔＴ１と第１仮想ジョブＩＪ１の仮想稼動時間との差を、夜間バッチ処理の終了の遅延分として計上する。あるいはまた遅延算出部３１０は、夜間バッチ処理の終了予定時刻にその差を加算して新たな終了予定時刻を得てもよい。
【００８９】
通過登録部３０４は、処理が第１チェックポイントＣＰ１を通過すると、その実績通過時刻をチェックポイント情報保持部３１４に登録する。通過登録部３０４は、処理が第１チェックポイントＣＰ１を通過すると、その実績通過時刻に第１チェックポイントＣＰ１以降のジョブの稼動時間の総和を加算し、夜間バッチ処理の終了時刻を予想してもよい。この場合、チェックポイントが進むほど、実績確定部分が増えるため変動要因が減り、終了時刻予想の精度は高まる。
【００９０】
（準クリティカルパスからの予測補正及び、各チェックポイントの先行処理チェック機能）
パス情報保持部３１６に保持されている事前分析により得られたクリティカルパスは実績から導きだしたものであり、当日はこれから稼動予定となるため、それ以外のパスがクリティカルパスとなる可能性がある。事前分析により得られたクリティカルパス（すなわちメインでマークしているパス）でない、別のパスが当日のクリティカルパスとなった場合、メインでマークしているパスのチェックポイントのどこかで検知可能である。
【００９１】
これに対応して、バッチ処理監視装置３００は上記チェック機能に加えて、以下に説明される、クリティカルパスから分岐する分岐パスからの寄与を考慮した予測補正機能を有する。
【００９２】
図１３は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚおよび仮想的なジョブＩＪ１、ＩＪ２の処理状態を示す模式図である。図１３は図１１に対応する。図１３において現在時刻までに進行した処理には斜線によるハッチングを施している。
【００９３】
終了遅延判定部３０６は、第２チェックポイントＣＰ２において、処理が第２チェックポイントＣＰ２を通過する前に、現在時刻と標準通過時刻との比較に基づいて、夜間バッチ処理の終了が遅れるか否かを判定する。
【００９４】
終了遅延判定部３０６のクリティカルパス状態判定部３３４は、第２チェックポイントＣＰ２において、処理が第２チェックポイントＣＰ２を通過する前に、現在時刻が標準通過時刻を超えた場合かつ処理が第１チェックポイントＣＰ１を通過した場合、クリティカルパス上で第２チェックポイントＣＰ２に先行するジョブＤが終了しているか否かを判定する。ここでクリティカルパス状態判定部３３４は、クリティカルパス上で第２チェックポイントＣＰ２に先行するジョブを探索する際、仮想的なジョブ（第１仮想ジョブＩＪ１）は無視する。
【００９５】
より具体的には、クリティカルパス状態判定部３３４は、現在時刻と標準通過時刻とを比較する。クリティカルパス状態判定部３３４は、前者が後者を超えると、チェックポイント情報保持部３１４を参照して処理が第１チェックポイントＣＰ１を通過しているか否かすなわち第１チェックポイントＣＰ１に対応する実績通過時刻が登録されているか否かを判定する。処理が第１チェックポイントＣＰ１を通過していないと判定された場合、クリティカルパス状態判定部３３４はその旨を管理者に通知した上で処理が第１チェックポイントＣＰ１を通過するまで待機してもよい。処理が第１チェックポイントＣＰ１を通過したと判定された場合、クリティカルパス状態判定部３３４はジョブＤの処理状態を参照する。ジョブＤが終了していない場合のクリティカルパス状態判定部３３４の処理は終了遅延判定部３０６の第１チェックポイントＣＰ１における処理に準じる。
【００９６】
クリティカルパス状態判定部３３４においてジョブＤが終了していると判定された場合、終了遅延判定部３０６の準クリティカルパス状態判定部３３６は、第１準クリティカルパス上で第２チェックポイントＣＰ２に先行するジョブＥが終了しているか否かを判定する。ここで準クリティカルパス状態判定部３３６は、第１準クリティカルパス上で第２チェックポイントＣＰ２に先行するジョブを探索する際、仮想的なジョブ（第２仮想ジョブＩＪ２）は無視する。
【００９７】
準クリティカルパス状態判定部３３６は、ジョブＥが終了していると判定された場合、その旨を管理者に通知してもよいし、第２チェックポイントＣＰ２が第２準クリティカルパスとの分岐部分でもある場合は第２準クリティカルパス上で第２チェックポイントＣＰ２に先行するジョブの状態を参照してもよい。
【００９８】
準クリティカルパス状態判定部３３６は、ジョブＥが終了していないと判定された場合、ジョブＥの遅延の度合いに基づいて、夜間バッチ処理の終了が遅れるか否かを判定する。準クリティカルパス状態判定部３３６は、ジョブＥの実行状況を解析することにより得られるジョブＥの更新された終了予定時刻が第２チェックポイントＣＰ２のクリティカル経過時刻を超えると夜間バッチ処理の終了が遅れると判定し、管理者に警告する。
【００９９】
遅延算出部３１０は、準クリティカルパス状態判定部３３６において夜間バッチ処理の終了が遅れると判定された場合、ジョブＥの遅延の度合いに基づいて夜間バッチ処理の終了の遅延の度合いを算出する。
【０１００】
通過登録部３０４は、処理が第２チェックポイントＣＰ２を通過すると、その実績通過時刻をチェックポイント情報保持部３１４に登録する。通過登録部３０４は、処理が第２チェックポイントＣＰ２を通過すると、その実績通過時刻に第２チェックポイントＣＰ２以降のジョブの稼動時間の総和を加算し、夜間バッチ処理の終了時刻を予想してもよい。
【０１０１】
第２チェックポイントＣＰ２に先行する第１チェックポイントＣＰ１を問題なく通過しているにもかかわらず処理が第２チェックポイントＣＰ２を通過しない原因には以下の２つが考えられる。
原因１：処理Ｄの遅延。この場合、第１チェックポイントＣＰ１における遅延予測に準じた手法で夜間バッチ処理の遅延を予測すればよい。
原因２：クリティカルパスとして特定していなかったパスが当日のクリティカルパスとなった。この場合、クリティカルパスとは別の、第２チェックポイントＣＰ２に至るパスで遅延が発生している。したがって、遅延算出部３１０は、ジョブＥの完了見込み時刻に第２チェックポイントＣＰ２以降の所要見込み時間を加算することで、夜間バッチ処理の終了予定時刻を予測する。この場合、クリティカルパスの再分析や再計算を行うことなく夜間バッチ処理の終了の遅れを予測できる。
【０１０２】
図１３に示される状況では、ジョブＣの処理が大幅に遅延し、いわゆる玉突きによりジョブＥがおしているすなわち遅延している（符号３５０）。準クリティカルパス状態判定部３３６は、ジョブＥの完了見込み時刻が第２チェックポイントＣＰ２のクリティカル経過時刻を超えているので、夜間バッチ処理の終了が遅れると判定する。
【０１０３】
なお、微妙な処理時間差において、事前分析では第１準クリティカルパスや第２準クリティカルパスであったパスが当日のクリティカルパスとなる場合がある。したがって、チェックポイント設定部３０２はクリティカルパスと第２準クリティカルパスとの分岐部分にチェックポイントを設定し、終了遅延判定部３０６は、第２準クリティカルパスについても上記と同様にして夜間バッチ処理の終了が遅れるか否かを判定してもよい。
【０１０４】
また、終了遅延判定部３０６は、クリティカルパス、第１準クリティカルパスおよび第２準クリティカルパスのそれぞれについて夜間バッチ処理の終了予定時刻を算出し、それらの算出値を比較してもよい。この比較においていずれの結果も同じである場合は当日のクリティカルパスは事前分析により得られたクリティカルパスであり、第１または第２準クリティカルパスについて算出された終了予定時刻がクリティカルパスについて算出された終了予定時刻よりも遅い場合は当日のクリティカルパスは最も遅い終了予定時刻が算出されたパスとなる。
。
【０１０５】
（クリティカルパス、準クリティカルパスからも外れた際の予防チェック）
主に基盤系障害が発生した際は、通常はクリティカルパスとならないパスが突発的にクリティカルパスへ躍り出ることがある（計算上、第１０００番目の候補が、その日は障害により進行しないためクリティカルパスになる等）。このため、バッチ処理監視装置３００では、クリティカルパスや準クリティカルパスのチェックポイントに対して追加チェックポイントを設けることにより、先行処理の進行チェックを実現している。
【０１０６】
なお、理論上は、この構造を全ての対象に対して実施するとクリティカルパスの再計算と同じとなってしまい、処理件数が爆発的に膨らみ「超高速で算出する」ことが非常に困難となる。したがって、バッチ処理監視装置３００では、チェックポイントに対する先行チェックは、全てを遡るのではなく、先行するチェックポイントの標準通過時刻までとしている。
【０１０７】
追加チェックポイントの設定基準は以下の通りである。
・基本的には既存のチェックポイントの直前のジョブに対して設定する。
・ただし、チェックポイントの標準通過時刻と追加チェックポイントの標準通過時刻との差が比較的小さい場合は、検知早期化の価値が比較的低くなるため、更にその前にも追加チェックポイントを設定する。
・先行するチェックポイントの標準通過時刻より遅いジョブに設定する。
【０１０８】
図１４は、夜間バッチ処理で処理される１４のジョブＡ〜Ｊ、Ｗ〜Ｚおよび仮想的なジョブＩＪ１、ＩＪ２を時系列で示す模式図である。図１４は図１１に対応する。
追加チェックポイント設定部３１２は、第２チェックポイントＣＰ２に対して、標準通過時刻が第１チェックポイントＣＰ１の標準通過時刻と第２チェックポイントＣＰ２の標準通過時刻との間となるように第１準クリティカルパス上に第２追加チェックポイントＡＣＰ２を設定する。追加チェックポイント設定部３１２は、第１チェックポイントＣＰ１および第３チェックポイントＣＰ３に対しても同様に追加チェックポイントＡＣＰ１、ＡＣＰ３を設定する。なお、追加チェックポイント設定部３１２における設定処理がユーザの入力に基づくことは、チェックポイント設定部３０２と同様である。
【０１０９】
なお、図１４の例では第３追加チェックポイントＡＣＰ３の標準通過時刻は第３チェックポイントＣＰ３の標準通過時刻とあまり変わらないため（符号３５２）、追加チェックポイントとしての有効性は比較的低い。すなわち、第３チェックポイントＣＰ３において「第３追加チェックポイントＡＣＰ３に至るパス（ジョブＷ、ジョブＸ、ジョブＹ、ジョブＺのあたり）」の異常を検知しても遅すぎる。したがって、追加チェックポイント設定部３１２は、新たな第３追加チェックポイントＡＣＰ３’を設定する。この新たな第３追加チェックポイントＡＣＰ３’を設定する際の基準は、第２チェックポイントＣＰ２により近いタイミングで新たな追加チェックポイントを設けることである。第２チェックポイントＣＰ２自体が想定クリティカルパス上にあるため、これより前に追加チェックポイントを設けるのは非効率であり価値が低いからである。
【０１１０】
終了遅延判定部３０６は、第２追加チェックポイントＡＣＰ２において、処理が第２追加チェックポイントＡＣＰ２を通過する前に、現在時刻と標準通過時刻との比較に基づいて、夜間バッチ処理の終了が遅れるか否かを判定する。終了遅延判定部３０６は、第１追加チェックポイントＡＣＰ１、第３追加チェックポイントＡＣＰ３、新たな第３追加チェックポイントＡＣＰ３’においても同様に夜間バッチ処理が遅れるか否かを判定する。追加チェックポイントにおける夜間バッチ処理の終了判定はチェックポイントにおける夜間バッチ処理の終了判定に準じる。
【０１１１】
図１５は、ワーニング画面４０２の代表画面図である。ワーニング画面４０２は、現在時刻がワーニング経過時刻を超えたチェックポイントの名前を含む。
図１６は、サービス遅延警告画面４０４の代表画面図である。サービス遅延警告画面４０４は、現在時刻がクリティカル経過時刻を超えたチェックポイントの名前および遅延算出部３１０によって算出された遅延量４０６を含む。
【０１１２】
本実施の形態に係るバッチ処理分析監視システムに含まれるバッチジョブ分析装置１００によると、バッチ処理で処理されるジョブのなかに起動時刻指定ジョブが含まれるという状況において、適切にクリティカルパスを導出することができる。
【０１１３】
通常、バッチ処理で処理されるジョブのなかに起動時刻指定ジョブが含まれていると、起動時刻指定ジョブとそれに先行するジョブとの間にフロートが形成される。クリティカルパスはフロートがないパスとして定義されるのが一般的であるため、従来のクリティカルパス解析では、クリティカルパスの探索の途中で起動時刻指定ジョブが現れるとそこでクリティカルパスの探索が止まってしまう。
【０１１４】
そこで、本実施の形態に係るバッチ処理分析監視システムに含まれるバッチジョブ分析装置１００によると、クリティカルパスの探索の途中で起動時刻指定ジョブが現れても、それに対して仮想的なジョブを設定することにより、クリティカルパスの探索を続行することができる。その結果、起動時刻指定ジョブを含むジョブネットワークを解析するために特殊で複雑なアルゴリズムを使用する必要はなく、起動時刻指定ジョブを含まないジョブネットワークを解析するときに使用されるアルゴリズムと同等のアルゴリズムを使用することができる。
【０１１５】
また、本実施の形態に係るバッチ処理分析監視システムに含まれるバッチジョブ分析装置１００では、２以上の仮想的なジョブのうち仮想稼動時間がより小さい仮想的なジョブを含むパスが優先的にクリティカルパスとして特定される。したがって、よりフロートの短いすなわち余裕の少ないパスがクリティカルパスとして特定される。その結果、そのように特定されたクリティカルパスを使用することで、より精度の高いまたは安全サイドに立ったバッチ処理の進行監視などが可能となる。
【０１１６】
本実施の形態に係るバッチ処理分析監視システムに含まれるバッチ処理監視装置３００では、クリティカルパスに仮想的なジョブが含まれているという状況において、その仮想的なジョブに先行する位置にチェックポイントを設け、そのチェックポイントにおける遅延判定に仮想的なジョブの仮想稼動時間を組み入れている。したがって、クリティカルパスに仮想的なジョブが含まれているすなわちクリティカルパスがフロートを含むという状況において適切にバッチ処理を監視することができる。
【０１１７】
また、各チェックポイントにおいて、現在時刻とクリティカル経過時刻との比較または経過時間とトータルフロートとの比較という比較的単純な演算によりバッチ処理の終了が遅れるか否かが判定される。また、遅れると判定された場合は、現在時刻とクリティカル経過時刻との差または経過時間とフロートとの差によりどの程度遅延するかが求められる。このように、本実施の形態では、比較的単純な計算により遅延予測が可能となるので、例えばクリティカルパスの再計算に頼る手法と比較してより計算処理数を低減してより高速な遅延予測が可能となる。
【０１１８】
また、本実施の形態に係るバッチ処理分析監視システムに含まれるバッチ処理監視装置３００では、クリティカルパスと第１準クリティカルパスとが分岐する位置に第２チェックポイントＣＰ２が設けられる。したがって、当日のクリティカルパスが事前分析により得られたクリティカルパス（ジョブＡ−ジョブＢ−ジョブＤ−第１仮想ジョブＩＪ１−ジョブＦ−ジョブＧ−ジョブＩ）から第１準クリティカルパス（ジョブＡ−ジョブＣ−ジョブＥ−第２仮想ジョブＩＪ２−ジョブＦ−ジョブＧ−ジョブＩ）へ変わったとしてもそれを素早く正確に検知することが可能となる。また、この場合、第１準クリティカルパス上のジョブの遅延の度合いに基づいてバッチ処理の終了が遅れるか否かが判定される。したがって、当日のクリティカルパスが変動しても、クリティカルパスを再計算することなくより高速な遅延予測が可能となる。
【０１１９】
例えば図１３に示される第１準クリティカルパス（ジョブＡ−ジョブＣ−ジョブＥ−第２仮想ジョブＩＪ２−ジョブＦ−ジョブＧ−ジョブＩ）は、当日は結果的にクリティカルパスとなったが、事前にはクリティカルパスとして特定されていないパスである。実際のバッチ処理は動的に進行するため、クリティカルパスは生来的に結果情報である。従来では、クリティカルパスが想定されていたものから変動したことが確定した場合にクリティカルパスを再計算することが多い。しかしながら、これでは計算に時間がかかる。そこで、本実施の形態に係るバッチ処理監視装置３００では、クリティカルパスが実際どのようなパスであったかについては事後分析に任せ、バッチ処理の進行中は「何時にバッチ処理が終了するか」すなわち「何時にバッチ処理の結果に基づくサービスが起動するか」をより素早く算出する。
【０１２０】
また、本実施の形態に係るバッチ処理分析監視システムに含まれるバッチ処理監視装置３００では、事前分析により得られたクリティカルパス上に設けられたチェックポイントに繋がる先行処理に対して追加チェックポイントが設けられる。これにより、クリティカルパスが想定から変動する可能性を早期に検知できる。さらに、追加チェックポイントで異常が検知された場合には、当該処理の終了見込み情報（どれくらい遅れて終了しそうか）を元に、想定クリティカルパスからの変動予測に加えて、バッチ処理の終了時刻も予測することができる。そして、追加チェックポイントによる補強を行ったとしても、クリティカルパスの再計算は実施しないため、計算処理のボリュームは比較的小さい。その結果、より高速にバッチ処理の終了時刻を予測できる。
【０１２１】
以上、実施の形態に係るバッチ処理分析監視システムの構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１２２】
実施の形態では、クリティカルパス特定部１１０はパス終了ジョブから遡ることによりクリティカルパスを特定する場合について説明したが、これに限られない。例えば、仮想ジョブ設定部はパス開始ジョブとパス終了ジョブとの間の全ての起動時刻指定ジョブについて仮想的なジョブを設定してもよい。クリティカルパス特定部は、パス開始ジョブとパス終了ジョブとの間の可能なパスを全て決定してもよい。クリティカルパス特定部は、決定されたパスのなかに仮想的なジョブを含まないパスがあればそれをクリティカルパスとして特定してもよい。また、クリティカルパス特定部は、そのようなパスがなければ、含んでいる仮想的なジョブの仮想稼動時間の総和が最も小さいパスをクリティカルパスとして特定してもよい。すなわち、クリティカルパス特定部１１０が仮想的なジョブを使用してクリティカルパスを特定した結果、そのように特定されたクリティカルパスは仮想的なジョブを含まない場合がある。
【０１２３】
実施の形態では、チェックポイント設定部３０２はクリティカルパス上に３つのチェックポイントを設定する場合について説明したが、これに限られず、チェックポイントの数に制限はない。一例では数十から数百のチェックポイントが設定されてもよい。
【符号の説明】
【０１２４】
１００  バッチジョブ分析装置、  １０２  指定受付部、  １０６  時刻決定部、  １０８  仮想ジョブ設定部、  １１０  クリティカルパス特定部、  １１４  実績情報保持部、  １１６  指定時刻情報保持部、  ２００  証券業務システム、  ３００  バッチ処理監視装置、  ３０２  チェックポイント設定部、  ３０６  終了遅延判定部、  ３１０  遅延算出部、  ３１２  追加チェックポイント設定部。
【図１】
0005684745.tif 000002
【図２】
0005684745.tif 000003
【図３】
0005684745.tif 000004
【図４】
0005684745.tif 000005
【図５】
0005684745.tif 000006
【図６】
0005684745.tif 000007
【図７】
0005684745.tif 000008
【図８】
0005684745.tif 000009
【図９】
0005684745.tif 000010
【図１０】
0005684745.tif 000011
【図１１】
0005684745.tif 000012
【図１２】
0005684745.tif 000013
【図１３】
0005684745.tif 000014
【図１４】
0005684745.tif 000015
【図１５】
0005684745.tif 000016
【図１６】
0005684745.tif 000017