(57)【要約】【課題】手動でシステム時刻を変更すると、操作ミスが発生しやすく、また同じサーバ内の他のプログラムに影響を与えてしまう。【解決手段】複数のバッチジョブを含むジョブネットワークの運用試験を行うジョブ管理システムにおいて、予めスケジューリングされていた各バッチジョブの起動時刻が来たら、ジョブ起動命令を発行するスケジュール管理部と、ジョブ起動命令が発行されたら、予め定義されていた各バッチジョブを実行するジョブ実行制御部と、オペレーティングシステムが管理するシステム時刻とは別の独立した仮想時刻を管理する仮想時刻管理部とを備えていて、前記スケジュール管理部は、ジョブネットワークの運用試験を行う際には、仮想時刻を基準に起動時刻を決定することを特徴とする。【選択図】図１
2010224812.tif 000002
【特許請求の範囲】
【請求項１】
複数のバッチジョブを含むジョブネットワークの運用試験を行うジョブ管理システムにおいて、
予めスケジューリングされていた各バッチジョブの起動時刻が来たら、ジョブ起動命令を発行するスケジュール管理部と、
ジョブ起動命令が発行されたら、予め定義されていた各バッチジョブを実行するジョブ実行制御部と、
オペレーティングシステムが管理するシステム時刻とは別の独立した仮想時刻を管理する仮想時刻管理部とを備えていて、
前記スケジュール管理部は、ジョブネットワークの運用試験を行う際には、仮想時刻を基準に起動時刻を決定することを特徴とするジョブ管理システム。
【請求項２】
各バッチジョブ内でシステム時刻を取得する命令が発行されたかどうかを監視する時刻取得命令監視部を更に備えていて、
前記時刻取得命令監視部は、ジョブネットワークの運用試験中に各バッチジョブ内でシステム時刻を取得する命令が発行された場合には、システム時刻の代わりに仮想時刻を各バッチジョブに与えることを特徴とする請求項１に記載のジョブ管理システム。
【請求項３】
ジョブネットワークのフロー制御を行うマネージャと、各バッチジョブを実行するエージェントとに分かれていて、
マネージャは、スケジュール管理部と、マネージャ側のジョブ実行制御部と、マネージャ側の仮想時刻管理部とを備えていて、
エージェントは、エージェント側のジョブ実行制御部と、エージェント側の仮想時刻管理部と、時刻取得命令監視部とを備えていて、
マネージャ側のジョブ実行制御部は、ジョブ起動命令が発行されたら、この命令をエージェント側のジョブ実行制御部に転送し、
マネージャ側の仮想時刻管理部とエージェント側の仮想時刻管理部との間では、仮想時刻の同期が行われることを特徴とする請求項２に記載のジョブ管理システム。
【請求項４】
複数のバッチジョブを含むジョブネットワークの運用試験を行うジョブ管理方法において、
予めスケジューリングされていた各バッチジョブの起動時刻が来たら、ジョブ起動命令を発行するステップと、
ジョブ起動命令が発行されたら、予め定義されていた各バッチジョブを実行するステップとを有していて、
オペレーティングシステムが管理するシステム時刻とは別の独立した仮想時刻を管理して、ジョブネットワークの運用試験を行う際には、仮想時刻を基準に起動時刻を決定することを特徴とするジョブ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運用管理分野におけるジョブ管理に関し、特に、ジョブ管理における運用試験の高速化手段に関する。
【背景技術】
【０００２】
まず、以下に本文中での用語の定義をしておく。「バッチジョブ」とは、業務などのある１つの目的のために定義された処理手続きであり、シェルスクリプト（Unix（登録商標））やバッチスクリプト（Windows（登録商標））で記述される。「ジョブネットワーク」とは、複雑な判断を伴う自動運用のため、より大きなまとまりでバッチジョブを順序付けてグルーピングしたものであり、一般にフロー状に記述され、各バッチジョブを順番に実行するだけでなく、並列実行や、前段の実行結果により処理を分岐させるといった複雑な制御を行うことができる。「マネージャ」とは、バッチジョブやジョブネットワークの定義情報を管理し、またジョブネットワークのフロー制御を行う機能をもったサーバである。実際の各バッチジョブの実行は、他のリモートのサーバ（エージェント）で行う。「エージェント」とは、各バッチジョブの実行を行う機能をもったサーバである。
【０００３】
通常、どのようなシステムであっても、実稼動を行う前には運用に即した試験が行われる。運用試験の目的は、スケジューリングされたバッチジョブが時間通りに起動され、全ての動作が正常に想定された時間内に終了するかを確認することである。システム構築時に、個々のジョブや業務単位で、それぞれ試験を行うかもしれないが、最終的に１つのシステムとして構築して運用する際に、思わぬ弊害が無いとも限らない。このため、このような試験は、極力実運用に即した形で行われるのが望ましい。しかしながら、ジョブ管理におけるスケジュールは、日次や週次、月次、または特定日など、目的に応じて様々なスパンで設定されており、それらの全てを実際の運用に即して試験すると、多大な工数を強いられる。
【０００４】
そこで、従来は、構築したバッチジョブの試験を行う際に、サーバのシステム時刻を変更することによって試験を行っていた。例えば、月曜日の8:00にスケジューリングされているジョブがあり、その動作を確認する場合、月曜日の7:50にシステム時刻を変更し、その後、システム時刻が8:00になった時点で、ジョブが起動して予想通りに実行されるかを確認する必要があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−４１３０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、このような方法で試験を行うと、手動でシステム時刻を変更することになるため、操作ミスが発生しやすく、またシステム時刻の変更によって、同じサーバ内の他のプログラムに影響を与えてしまうという問題があった。
【課題を解決するための手段】
【０００７】
本発明では、このような状況を鑑みて、以下のような手段によって問題を解決する。
【０００８】
ジョブ管理システム内にシステム時刻とは別の独立した仮想的な時刻（仮想時刻）を作成し、ジョブ管理システムが起動するバッチジョブは、全て仮想時刻に即して動作させる。バッチジョブを動かしていない期間（ジョブ管理におけるアイドル時間）を検出し、その期間は仮想時刻を変更する（早送りする）ことでカットし、バッチジョブの運用試験を高速化する。また、ジョブ管理システムが起動するバッチジョブ内において、システム時刻を必要とする処理が行われた場合には、ＯＳへのシステム時刻取得命令（システムコール等）をフックし、仮想時刻を与えることで、システム時刻ではなく仮想時刻に基づいた動作を行わせる。
【０００９】
本発明は、ソフトウェアで作成した仮想時刻（仮想時計）を用いて、ジョブ管理システムが起動するバッチジョブを全て仮想時刻に基づいて動作させることで、構築・スケジューリングしたバッチジョブの運用試験を高速で行う。
【発明の効果】
【００１０】
本発明の第一の効果は、構築したジョブ管理システムの運用試験を低負荷かつ高速に行えることである。運用試験の際に、アイドル時間を自動的に検出し、次のバッチジョブの実行時刻の直前まで仮想時刻を早送りし、アイドル時間をカットすることで、従来よりも短時間で運用試験を行うことができる。また、仮想時刻の変更は自動的に行われるため、構築者・試験者への負荷を軽減しつつ、操作ミスを防ぐこともできる。
【００１１】
第二の効果は、ジョブネットワーク内における各バッチジョブの起動時刻等だけではなく、各バッチジョブ内での動作を、全て仮想時刻を元に動作させることができることである。これは、各バッチジョブ内で時刻を必要とする場合に、ＯＳへのシステム時刻取得命令をフックして、仮想時刻を与えるためである。逆に、それ以外の他のプログラムへは影響を与えない。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態におけるジョブ管理システムの構成図である。
【図２】バッチジョブの起動/終了動作を説明するための図である。
【図３】アイドル時間の検出と仮想時刻の変更動作を説明するための図である。
【図４】バッチジョブ内で現在時刻が必要とされた場合の処理を説明するための図である。
【図５】本発明の他の実施形態におけるジョブ管理システムの構成図である。
【発明を実施するための形態】
【００１３】
図１に本発明の一実施形態におけるジョブ管理システムの構成を示す。スケジュール定義データベース（ＤＢ）１には、ジョブのスケジュールのルールが格納されている。スケジュール管理部２は、内部にタイマーを持ち、スケジュール定義ＤＢ１を参照して、ジョブの起動時刻が来たら、ジョブ起動命令を発行する。
【００１４】
ジョブ定義データベース（ＤＢ）３には、バッチジョブやジョブネットワークの定義情報が格納されている。実行ジョブ管理テーブル４には、実行中のジョブの情報（起動時刻やプロセスＩＤなど）が格納される。ジョブ実行制御部５は、スケジュール管理部２からジョブ起動命令が発行されたら、ジョブ定義ＤＢ３を参照して、ジョブを起動して実行し、実行ジョブ管理テーブル４を更新する。
【００１５】
オペレーティングシステム（ＯＳ；Operating System）６は、システム時刻を管理している。仮想時刻管理部７は、ソフトウェアで作成した仮想的な時刻である仮想時刻を管理し、必要に応じてこの仮想時刻を変更し、他のモジュールへ仮想時刻を通知する。時刻取得命令監視部８は、起動したバッチジョブがＯＳ６に対してシステム時刻取得命令を発行するかどうかを監視する。システム時刻取得命令が発行された場合には、それをフックし、システム時刻の代わりに仮想時刻を返却する。
【００１６】
ジョブ管理システムは、コンピュータのハードウェアとソフトウェアの協働によって実現される。スケジュール定義ＤＢ１およびジョブ定義ＤＢ３は、コンピュータの記憶装置、例えばハードディスクによって実現される。実行ジョブ管理テーブル４および仮想時刻も、記憶装置に記憶される。スケジュール管理部２、ジョブ実行制御部５、仮想時刻管理部７、時刻取得命令監視部８は、コンピュータの制御装置、例えばＣＰＵと、制御装置上で実行されるソフトウェアとの協働によって実現される。スケジュール管理部２によってスケジュールを管理され、ジョブ実行制御部５によって起動されるプログラム（バッチジョブ）も、コンピュータの制御装置上で実行される。ジョブ管理システムは、バッチジョブを目的に応じて前後関係を設け、それをフロー状に定義したジョブネットワーク及びそのバッチジョブを処理するためのプログラム群を実行する。
【００１７】
図２〜４を参照して、本実施形態の動作を、以下の３つの動作に分けて説明する。
【００１８】
まず、図２を参照して、バッチジョブの起動/終了動作を説明する。バッチジョブの起動時刻が来ると、スケジュール管理部２は、スケジュール定義ＤＢ１を参照して（ステップＳ１）、ジョブ実行制御部５に対してジョブ起動命令を発行する（Ｓ２）。ジョブ実行制御部５は、ジョブ定義ＤＢ３を参照して（Ｓ３）、目的のバッチジョブを起動し（Ｓ４）、実行ジョブ管理テーブル４を更新する（Ｓ５）。Ｓ４で起動したバッチジョブが終了すると（Ｓ６）、ジョブ実行制御部５は、実行ジョブ管理テーブル４を更新する（Ｓ７）。以上のＳ１〜Ｓ７の一連の動作によって、バッチジョブの実行制御が繰り返される。
【００１９】
次に、図３を参照して、アイドル時間の検出と仮想時刻の変更動作を説明する。ジョブ実行制御部５は、実行ジョブ管理テーブル４を参照して（Ｓ８）、あるタイミングで実行しているジョブがなくなった場合に、仮想時刻管理部７に通知を行う（Ｓ９）。すなわち、起動すべきバッチジョブが存在しない期間が、ジョブ管理システムにおけるアイドル時間である。仮想時刻管理部７は、ジョブ実行制御部５からの通知を受け、次のバッチジョブの起動時刻をスケジュール管理部２に問い合わせる（Ｓ１０）。スケジュール管理部２は、スケジュール定義ＤＢ１を参照して（Ｓ１１）、最も近いバッチジョブの起動時刻を仮想時刻管理部７に返却する（Ｓ１２）。すると、仮想時刻管理部７は、スケジュール管理部２から返却された直近の起動時刻の直前まで仮想時刻を進める（Ｓ１３）。仮想時刻管理部７は、スケジュール管理部２とジョブ実行制御部５に対して、変更した最新の仮想時刻を通知する（Ｓ１４）。以後、Ｓ１〜１４の動作を繰り返すことで、運用試験を行う。
【００２０】
次に、図４を参照して、バッチジョブ内で現在時刻が必要とされた場合の処理を説明する。時刻取得命令監視部８は、ＯＳ６へのシステム時刻取得命令を監視している。そして、プログラム（バッチジョブ）がシステム時刻取得命令を発行して、システム時刻を取得する処理を行おうとすると（Ｓ４０１）、当該処理がジョブ管理システムに関する処理であった場合には、そのシステム時刻取得命令をフックする（Ｓ４０２）。ジョブ管理システムに関する処理であるかどうかは、実行ジョブ管理テーブル４に格納された実行ジョブのデータ（プロセス名、ＰＩＤ等）を参照して判断することができる（Ｓ４０３）。そして、時刻取得命令監視部８は、現在の仮想時刻を仮想時刻管理部７に問い合わせ（Ｓ４０４）、仮想時刻管理部７は、仮想時刻データを確認し（Ｓ４０５）、時刻取得命令監視部８に仮想時刻を返却する（Ｓ４０６）。これを受け取った時刻取得命令監視部８は、当該処理に対して、システム時刻ではなく仮想時刻を返却する（Ｓ４０７）。
【００２１】
次に、図５を参照して、本発明の他の実施形態を説明する。図１に示した実施形態では、サーバ１台でスケジュールの管理やジョブの実行を行っているが、一般的なシステムの場合、ジョブを実行するサーバは、ネットワーク上に分散した複数台のサーバとなることが多い。このときの運用形態としては、マネージャと呼ばれるマシンでバッチジョブの定義情報を管理し、ジョブネットワークのフロー制御を行い、実際の各バッチジョブの実行は、その目的に応じた他のサーバ（エージェント）で実行させる。
【００２２】
マネージャ５０ｍからエージェント５０ａに対してジョブが転送され、実際のジョブはエージェント５０ａ上で実行され、その実行結果（終了コード、標準出力、標準エラー出力）がマネージャ５０ｍに返却される。図１に示した実施形態では、このジョブ実行を１台のサーバ上（マネージャ上）で行っていたが、リモートのエージェント上で実行する場合は、本発明の要である仮想時刻管理部と時刻取得命令監視部がエージェント上に必要となる。
【００２３】
マネージャ５０ｍ上で仮想時刻の変更が行われると、変更された仮想時刻がマネージャ５０ｍの仮想時刻管理部７ｍからエージェント５０ａの仮想時刻管理部７ａへ通知され、仮想時刻の同期が行われる。また、エージェント５０ａ上で実行されるバッチジョブがシステム時刻を必要とする場合には、エージェント５０ａ上の時刻取得命令監視部８がそれをフックし、システム時刻の代わりに仮想時刻を返却する。このような仕組みにより、ネットワーク上に分散した複数台からなるジョブ管理システムにも本発明の適用は可能である。なお、図５では簡略化のためエージェントを１台だけとしたが、２台以上のエージェントが存在しても、マネージャからの仮想時刻同期の通知が複数台のエージェントに対して行われるだけであり、根本的な仕組みは変わらない。
【００２４】
また、応用的な使い方として、次のようなことも考えられる。上記の説明では、あらかじめスケジューリングされたジョブネットワークの実行を自動で全て行うこととしたが、場合によってはスケジュールされているジョブの全てを試験したくはないことも考えられる。例えば、１年間分の試験を行おうとする場合、スケジュールされたジョブネットワークの数によっては、たとえ本発明を用いたとしても、かなりの時間がかかることが予想される。このような場合には、スケジュールされている全ての期間の試験を行うのではなく、あらかじめ試験を行いたい日時を絞り込ませた外部パラメータ（例えば、2/11 10:00〜20:00、4/10〜15、5/11、のように）を用意し、それを仮想時刻管理部に与えることで、任意の期間だけの試験を行うようにもできる。仮想時刻管理部は、スケジュール管理部からの情報によって次のジョブの起動時刻へ仮想時刻を変更する代わりに、外部パラメータによって与えられた時刻へ仮想時刻を変更する。
【産業上の利用可能性】
【００２５】
本発明は、運用管理におけるジョブ管理分野に利用することができる。
【符号の説明】
【００２６】
１  スケジュール定義データベース（ＤＢ）
２  スケジュール管理部
３  ジョブ定義データベース（ＤＢ）
４、４ｍ、４ａ  実行ジョブ管理テーブル
５、５ｍ、５ａ  ジョブ実行制御部
６、６ｍ、６ａ  オペレーティングシステム（ＯＳ；Operating System）
７、７ｍ、７ａ  仮想時刻管理部
８  時刻取得命令監視部
５０ｍ  マネージャ
５０ａ  エージェント
【図１】
2010224812.tif 000003
【図２】
2010224812.tif 000004
【図３】
2010224812.tif 000005
【図４】
2010224812.tif 000006
【図５】
2010224812.tif 000007