(57)【要約】【課題】  新たに追加するジョブによって、すでに運用されているジョブがどのような影響を受けるのかを、ジョブ管理システムのログ出力やＤＢアクセスなどで発生するオーバーヘッドを考慮した上でシミュレーションを行うジョブシミュレーション方法を提供する。【解決手段】  シミュレーションを行う際に、新規に追加するジョブに対してはジョブに定義した外部プログラムを実行し、既に運用中であるジョブに対してはジョブに定義されている外部プログラムを実行せずに、そのジョブの統計情報から平均実行時間を自動算出し、その時間だけ擬似的にジョブを動作させることで、本番環境で動作しているプログラムを実行することなく、ジョブ管理システムのオーバーヘッドを加味したシミュレーション結果を算出する。【選択図】      図１１
2013061874.tif 000002
【特許請求の範囲】
【請求項１】
指定された日時に指定された業務プログラムを実行するジョブ管理システムにおいて、新規に追加するジョブに対してはジョブに定義した外部プログラムを実行し、既に運用中のジョブに対してはジョブに定義したプログラムではなく、過去の統計情報を利用して擬似的にプログラムを実行し、ログ出力やＤＢアクセスで発生するオーバーヘッドを加味したシミュレーション結果を出力する手段を備えたことを特徴とするジョブシミュレーション方法。
【請求項２】
既に運用しているジョブと新規に追加するジョブのシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を確認する手段をさらに備えることを特徴とする請求項１記載のジョブシミュレーション方法。
【請求項３】
過去の実行結果とシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を比較する手段をさらに備えることを特徴とする請求項１または２に記載のジョブシミュレーション方法。
【請求項４】
新規に追加するジョブネットのスケジュールについて複数組のスケジュールを保持し、これらの各スケジュールでのシミュレーション結果を出力し、それを比較、検証する手段をさらに備えることを特徴とする請求項１〜３のいずれかに記載のジョブシミュレーション方法。
【請求項５】
現在時刻とシミュレーションを開始する時刻の差を考慮し、現在時刻からシミュレーションを開始する時刻までの差を補正し、シミュレーション開始予定の日時に到達していなくても、事前にシミュレーションの結果を算出する手段をさらに備えることを特徴とする請求項１〜４のいずれかに記載のジョブシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指定された日時に指定された業務プログラムを実行するジョブ管理システムにおいて、新たにジョブを追加する際に、すでに運用中のジョブのスケジュールにどのような影響を与えるかを検証するためのジョブシミュレーション方法に関するものである。
【背景技術】
【０００２】
各種業務を遂行するコンピューターシステムにおいて、日々の業務を計画的にスケジューリングし自動運用を行うために、ジョブ管理システムが利用されている。
ジョブ管理システムは、ジョブ毎に運用日や休業日を設定したカレンダを指定することや、ジョブの実行スケジュールとして日次、月次などの各種処理サイクルを指定することによって、さまざまな業務サイクルに合わせてジョブをスケジューリングすることができる。
しかし、スケジューリングしたジョブの間に先行、後続の順序関係が定義されている場合、先行のジョブの実行に時間がかかると、後続のジョブがスケジューリングしている時刻通りに実行されないことがある。
【０００３】
そこで、スケジューリングしたジョブが、スケジュール通りに実行されるか、また、ジョブの処理時間短縮や処理の負荷分散が図れるように実行されるかを事前に検証するために、過去の統計情報からジョブのスケジュールをシミュレーションし、効率的なジョブのスケジュール案を求める手法が考えられている。
効率的なジョブのスケジュール案を得るために、シミュレーションを行なう公知技術文献としては、ジョブ管理システム上で実行されたジョブの開始時刻や終了時刻、CPU使用時間などの稼動履歴を収集したジョブ実行履歴と、コンピューター上で同時に実行されるジョブ数の上限として設定されるジョブ多重度などの情報に基づいて、ジョブに定義された外部プログラムを実行せずに、ジョブのスケジュール案をシミュレーションする下記の特許文献１のような技術があげられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２８６９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ジョブ管理システムを用いて業務を運用していると、業務量の増加に伴い、新たに作成したジョブを現在業務が運用している環境である本番環境に追加することがある。新たなジョブを追加するための運用方法としては、本番運用開始前に新規に作成したジョブが意図した通り実行されるか、また、ジョブに定義した外部プログラムが正常に動作するかを事前に確認するために、本番環境とは別に動作検証を行うための環境である検証環境を構築し、そこで動作検証をした後に、運用中の環境にそのジョブをコピーして本番の運用を行なうといった方法がとられることが多い。
【０００６】
しかし、この運用方法だと検証環境で確認できることは、新たに追加したジョブが定義した通りに動くかどうかだけであり、すでに運用されているジョブのスケジュールに影響を及ぼすかどうかを確認するためには、本番環境にあるジョブの定義を検証環境上に持ってきて新たに追加するジョブと一緒に動かす必要があった。
しかし、検証環境で実際の業務に使用しているジョブのプログラムをそのまま動作させることは、プログラムが２重に実行されるリスク生じるため、そのまま動かすことが出来ないことが多い。そのため、検証環境で本番環境と同じようなスケジュールでジョブを動作させるには、検証環境で実行されるジョブのプログラムを本番環境上と同じような時間だけ動作するプログラムに置き換える必要がある。
【０００７】
しかし、本番運用のジョブ全てに対して、１つずつ手動でジョブの統計情報から実行時間を調べて、プログラムを置き換えていくのは無駄が多く、効率化という点で好ましくないものであった。そこで、先行技術にあるような手法で、すでに運用されているジョブへの影響をシミュレーションすることを考える。
ただ、ジョブ管理システムはジョブの実行を行うだけではなく、その時々のジョブの状態や結果の監視を行い、状態や結果が更新されるたびにDBアクセス処理やログ出力処理を行うシステムである。そのため、同時間帯に動作するジョブが大量に存在する場合は、上記のログ出力処理やDBアクセス処理などで発生するオーバーヘッドが無視できない大きさとなり、その影響によりジョブの実行が遅延するといった問題が発生することがある。このことから、新たにジョブを追加する際は、ジョブ管理システムのオーバーヘッドも考慮してスケジューリングを行う必要があるが、既存技術の手法では、ジョブ管理システムのオーバーヘッドを考慮してシミュレーションを行っていないため、シミュレーション結果の精度が悪くなるという問題があった。
【０００８】
本発明はこのような問題に鑑みなされたもので、その目的は、新たにジョブを追加する際に、すでに運用中のジョブのスケジュールにどのような影響を与えるのかを、ジョブ管理システムのオーバーヘッドを考慮した上で、本番環境のジョブ管理システムに影響を与えることなくシミュレーションを行うジョブシミュレーション方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のジョブシミュレーション方法は、指定された日時に指定された業務プログラムを実行するジョブ管理システムにおいて、新規に追加するジョブに対してはジョブに定義した外部プログラムを実行し、既に運用中のジョブに対してはジョブに定義したプログラムではなく、過去の統計情報を利用して擬似的にプログラムを実行し、ログ出力やＤＢアクセスで発生するオーバーヘッドを加味したシミュレーション結果を出力する手段を備えたことを特徴とする。
【００１０】
また、既に運用しているジョブと新規に追加するジョブのシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を確認する手段をさらに備えることを特徴とする。
【００１１】
また、過去の実行結果とシミュレーション結果を同時に表示し、新規にジョブを追加した時の影響範囲を比較する手段をさらに備えることを特徴とする。
【００１２】
また、新規に追加するジョブネットのスケジュールについて複数組のスケジュールを保持し、これらの各スケジュールでのシミュレーション結果を出力し、それを比較、検証する手段をさらに備えることを特徴とする。
【００１３】
また、現在時刻とシミュレーションを開始する時刻の差を考慮し、現在時刻からシミュレーションを開始する時刻までの差を補正し、シミュレーション開始予定の日時に到達していなくても、事前にシミュレーションの結果を算出する手段をさらに備えることを特徴とする。
【発明の効果】
【００１４】
本発明のジョブシミュレーション機能によれば、次のような効果がある。
ジョブ管理システムのオーバーヘッドを加味したシミュレーション結果を出力することで、実際の運用に即した精度が高いシミュレーション結果を算出することができる。また、この結果から本番環境で実際に新規のジョブを追加する前に、既に運用されているジョブのスケジュールへの影響を確認することで、事前に負荷分散などのスケジュール調整を行うことができるなどの効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態を示すシステム構成図である。
【図２】ジョブ管理マネージャーの構成図である。
【図３】ジョブ実行エージェントの構成図である。
【図４】ジョブスケジュール定義ＤＢとジョブスケジュール定義ファイルに格納されているデータの構成図である。
【図５】ジョブ定義ＤＢとジョブ定義ファイルに格納されているデータの構成図である。
【図６】実行結果情報ＤＢに格納されているデータの構成図である。
【図７】シミュレーションシステムマネージャーの構成図である。
【図８】シミュレーションを行う際のデータを入力する画面のイメージ図である。
【図９】シミュレーションシステムマネージャーにおける一連の処理の流れを示すフローチャートである。
【図１０】シミュレーションシステムマネージャーのシミュレーション事前処理の概要を示すフローチャートである。
【図１１】シミュレーションシステムマネージャーのジョブ実行制御の処理の概要を示すフローチャートである。
【図１２】ジョブ実行エージェントのジョブ実行部の処理の概要を示すフローチャートである。
【図１３】シミュレーションシステムマネージャーのシミュレーション結果解析の処理の概要を示すフローチャートである。
【図１４】シミュレーション結果ファイルの出力イメージを示す図である。
【図１５】シミュレーション結果の出力画面イメージを示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について図面を用いて詳細に説明する。なお、本発明で述べるジョブとは、コンピューターが処理する仕事の単位を意味し、各種業務に対応した外部プログラムを定義できるものである。またジョブネットとは、複数のジョブをまとめてそれぞれのジョブの実行順序を定義したものである。
【００１７】
図１は、本発明の一実施形態を示すシステム構成図である。
この実施形態では、実際の業務をジョブとして管理しているジョブ管理マネージャー１０２がインストールされているホストマシン１０１Ａと、新規にジョブを追加した時の影響範囲をシミュレーションするシミュレーションシステムマネージャー１０３がインストールされているホストマシン１０１Ｂと、ジョブ管理マネージャー１０２やシミュレーションシステムマネージャー１０３から配信されたジョブを実際に実行するジョブ実行エージェント(１０４Ｃ〜１０４Ｇ)がインストールされているホストマシン(１０１Ｃ〜１０１Ｇ)と、ジョブ管理マネージャー１０２やシミュレーションシステムマネージャー１０３に対して、データの入力と結果の出力を行うことができる端末１０５がネットワーク１０６で相互に接続されている。
【００１８】
ここで、ホストマシン(１０１Ａ、１０１Ｃ〜１０４Ｅ)は実際の業務を運用しているマシンであり、ホストマシン(１０１Ｂ、１０１Ｆ、１０１Ｇ)は新規に追加するジョブと既に運用されているジョブに対するシミュレーションを行うためのマシンである。ここで、実際の業務を運用しているマシンを本番環境、シミュレーションを行うためのマシンを検証環境と定義する。
【００１９】
本番環境は、１台のジョブ管理マネージャー１０２と３台のジョブ実行エージェント(１０４Ｃ〜１０４Ｅ)から構成される。ジョブ管理マネージャー１０２は管理しているジョブを各ジョブ実行エージェント(１０４Ｃ〜１０４Ｅ)に配信し、ジョブの実行を行う。ジョブの配信先は各ジョブの業務内容によって異なり、任意に指定することができる。ジョブの実行が終了したら、ジョブ実行エージェント(１０４Ｃ〜１０４Ｅ)からジョブの実行結果をジョブ管理マネージャー１０２へ通知する。結果の通知を受けたジョブ管理マネージャー１０２は該当のジョブの実行を終了させることで日々の業務を運用している。
【００２０】
検証環境は、１台のシミュレーションシステムマネージャー１０３と２台のジョブ実行エージェント(１０４Ｆ、１０４Ｇ)から構成される。シミュレーションシステムマネージャー１０３上では新規に登録するジョブと、すでに本番環境で運用されているジョブを管理しており、各ジョブ実行エージェント(１０４Ｆ、１０４Ｇ)に配信して、ジョブの実行を行う。ジョブの配信先は新規に追加するジョブか、すでに運用中のジョブかで異なる。動作した実績のない新たに追加するジョブは、ジョブに定義された外部プログラムの動作検証をする必要があるため、任意のジョブ実行エージェントで実行するが、すでに動作した実績がある本番環境で運用されているジョブは、動作の検証が不必要なため、専用のジョブ実行エージェントで実行する。本番環境、検証環境ともに端末１０５の画面上で、データの入力や結果の出力に加え、現在のジョブの実行状態を監視することができる。
【００２１】
図２はジョブ管理マネージャー１０２の構成図である。
ジョブ管理マネージャー１０２は、ジョブネットのスケジュール情報が格納されているジョブスケジュール定義ＤＢ２０１と、そのジョブスケジュール定義ＤＢ２０１からデータを読み込み、スケジュールを算出するスケジュール算出部２０２と、ジョブネットやジョブの定義情報が格納されているジョブ定義ＤＢ２０３と、ジョブネットを開始する時にジョブ定義ＤＢ２０３からジョブネット配下のジョブのデータをメモリ中に読み込むジョブ定義読込部２０４と、ジョブネットの中でまだ実行されていないジョブの実行をジョブ実行エージェント(１０４Ｃ〜１０４Ｇ)に要求し、その結果を受け取るジョブ実行処理部２０５と、ジョブ実行処理部２０５で動作したジョブの状態や開始時刻、終了時刻、統計情報などを格納する実行結果情報ＤＢ２０６と、スケジュール算出部２０２、ジョブ定義読込部２０４、ジョブ実行処理部２０５の制御を行うジョブ実行制御部２０７と、ジョブスケジュール定義ＤＢ２０１に登録するジョブスケジュール定義がＣＳＶ形式で記載されているジョブスケジュール定義ファイル２０８と、ジョブ定義ＤＢ２０３に登録するジョブ定義がＣＳＶ形式で記載されているジョブ定義ファイル２０９と、ジョブスケジュール定義ファイル２０８やジョブ定義ファイル２０９のデータをジョブスケジュール定義ＤＢ２０１やジョブ定義ＤＢ２０３に格納するジョブ定義更新部２１０から構成される。
【００２２】
図３はジョブ実行エージェント(１０４Ｃ〜１０４Ｇ)の構成図である。ジョブ実行エージェント(１０４Ｃ〜１０４Ｇ)は、ジョブ処理部２０５からジョブの実行要求を受け付け、受け付けた要求に対してジョブプロセスを生成し、生成したプロセスが正常に終了したら「正常終了」を、プロセスを生成する過程で異常終了したら「異常終了」をジョブ実行処理部２０５に通知するジョブ実行部３０１から構成される。
【００２３】
図４はジョブスケジュール定義ＤＢ２０１に格納するスケジュール情報テーブル４０１と、ジョブスケジュール定義ファイル４０５のデータ構成図の一例を示す図である。
スケジュール情報テーブル４０１のレコードは、ジョブネットで一意に特定されるジョブネット名４０２と、ジョブネット毎に設定した開始時刻４０３と処理サイクル４０４から構成される。各項目はジョブスケジュール定義ファイル４０５のデータに対して、ジョブ定義更新部２１０でインポート処理を行うことで、データが１行ずつレコードに格納される。
ジョブスケジュール定義ファイル４０５は、ジョブスケジュール定義テーブル４０５に格納するためのデータがＣＳＶ形式で記載される。図に示した例では、JobNetAには毎日00:00、JobNetBには毎月15日の10:15、JobNetCには毎週木曜日の03:00にジョブネットを開始するスケジュールが格納されている。
【００２４】
図５はジョブ定義ＤＢ２０３に格納するジョブ定義テーブル５０１と、ジョブ定義ファイル５０７のデータ構成図の一例を示す図である。
ジョブ定義テーブル５０１のレコードは、ジョブネット・ジョブで一意に特定されるジョブネット・ジョブ名５０２と、該当のジョブを含む上位のジョブネット名を示す上位ジョブネット名５０３と、該当のジョブの先行にあるジョブを示す先行ジョブ名５０４と、該当のジョブの実行先を示す実行先エージェント名５０５と、該当のジョブが実行する外部プログラムを示す実行プログラム５０６から構成される。各項目はジョブ定義ファイル５０７のデータに対して、ジョブ定義更新部２１０でインポート処理を行うことで、データが１行ずつレコード上に格納される。ジョブ定義ファイル５０７は、ジョブ定義テーブル５０１に格納するためのデータがＣＳＶ形式で記載される。
【００２５】
図に示した例では、JobNetAの配下にJobA-1、JobA-2があり、JobA-1は先頭のジョブで、実行先エージェント５０５として「ホストマシン１０１Ｃ」、実行プログラム５０６として「/opt/xxxx/xx.sh」が格納され、JobA-2には先行ジョブ名５０４として「JobA-1」、実行先エージェント５０５として「ホストマシン１０１Ｅ」、実行プログラム５０６として「/opt/yyyy/yy.sh」が格納されている。また、JobA-1の先行ジョブ名５０４のように設定するものがない場合は、値は設定されない。
【００２６】
図６は実行結果情報ＤＢ２０６に格納する実行結果テーブル６０１とジョブ統計情報テーブル６０６のデータ構成図の一例を示す図である。
実行結果テーブル６０１のレコードは、ジョブネット・ジョブで一意に特定されるジョブネット・ジョブ名６０２と、該当のジョブネットやジョブの状態６０３と、該当のジョブネットやジョブが開始した時刻を示す開始時刻６０４と該当のジョブネットやジョブが終了した時刻を示す終了時刻６０５から構成される。
該当のジョブネットやジョブが開始されるときにジョブネット・ジョブ名６０２と状態６０３、開始時刻６０４が格納され、終了する時に状態６０３と終了時刻６０５が更新される。
ジョブ統計情報テーブル６０６は、ジョブで一意に特定されるジョブ名６０７と、該当のジョブのこれまでに実行された所要時間を合計した総実行時間６０８と、該当のジョブのこれまでに実行した総実行回数６０９と、上記総実行時間６０８から総実行回数６０９を除算した平均実行時間６１０から構成される。
ジョブの実行が終了したときに、終了時刻から開始時刻の差が総実行時間６０８に足され、総実行回数６０９が１増加され更新される。また、総実行時間、総実行回数が更新された後に、平均実行時間６１０が計算され更新される。図に示した例では、実行結果テーブル６０１のレコードには、JobA-1の状態として「正常終了」、開始時刻として「2011/06/10 00:00:00」、終了時刻として「2011/06/10 01:00:01」が格納されている。また、ジョブ統計情報テーブル６０６には、JobA-1の総実行時間６０８として「36,000」、総実行回数６０９として「10」、平均実行時間６１０として「3,600」が格納されている。
【００２７】
図７はシミュレーションシステムマネージャー１０３の構成図である。
シミュレーションシステムマネージャー１０３は、シミュレーション処理の実行開始を指示するシミュレーション実行指示部７０１と、シミュレーションを行う前の事前準備を行うシミュレーション事前処理部７０２と、実際にシミュレーション処理を行うジョブ実行管理部７０３と、シミュレーションを行うために実行されたジョブの結果を解析し、シミュレーション結果として出力し直すシミュレーション結果解析部７０４と、シミュレーションの対象となる本番環境のジョブスケジュール定義ＤＢ２０３の内容をコピーしたジョブスケジュール定義ＤＢ７０５と、同様に本番環境のジョブ定義ＤＢ２０５の内容をコピーしたジョブ定義ＤＢ７０６と、同様に本番環境の実行結果情報ＤＢ２０７の内容をコピーした実行結果情報ＤＢ７０７と、新たに追加するジョブネットのスケジュール情報がｃｓｖ形式で記載されているジョブスケジュールファイル７０８と、新たに追加するジョブネットやジョブの定義がＣＳＶ形式で記載されているジョブ定義ファイル７０９と、シミュレーション結果解析部７０４で解析した結果を出力するシミュレーション結果ファイル７１０と、ジョブスケジュール定義ファイル７０８やジョブ定義ファイル７０９のデータをジョブスケジュール定義ＤＢ７０５やジョブ定義ＤＢ７０６に格納するジョブ定義更新部７１１から構成される。
なお、ジョブスケジュール定義ＤＢ７０５、ジョブ定義ＤＢ７０６、実行結果情報ＤＢ７０７、ジョブスケジュール定義ファイル７０８、ジョブ定義ファイル７０９のデータ構成図は、先に述べたものと同じである。
【００２８】
図８は、シミュレーションを行う際のデータを入力する端末１０５上の画面のイメージ図である。データを入力後、画面下部の[シミュレーション実行]ボタンを押すことでシミュレーション事前処理部７０２に指示が送られる。
入力するデータは新規に登録したいジョブネットを入力する新規追加予定ジョブネット名８０１と、シミュレーションを行う期間を指定するシミュレーション開始日時８０２、シミュレーション終了日時８０３から構成される。図に示した例では、新規追加予定ジョブネット名８０１に「JobNetG、JobNetH」、シミュレーション開始日時８０２に「2011/06/30 10:00」、シミュレーション終了日時８０３に「2011/06/30  12:00」が入力されている。
【００２９】
図９はシミュレーションシステムマネージャー１０３がシミュレーションをする時の処理の流れを示すフローチャートである。
まず図８に示したように、シミュレーションを行うためのデータの入力を行い、シミュレーション実行ボタンを押すことでシミュレーション実行の指示を行う(ステップ９０１)。
次にシミュレーションを行うための事前準備として、すでに動作していたジョブの統計情報をメモリに読み込むといったシミュレーション事前処理を行う(ステップ９０２)。
事前処理完了後、定義されている全てのジョブネットに対して、入力されたシミュレーション開始日以降のスケジュール算出を行い、実行できるジョブをジョブ実行エージェントに要求するジョブの実行制御処理を行う(ステップ９０３)。
その後、シミュレーションを行った実行結果を解析し、シミュレーション結果ファイルに解析結果を出力するシミュレーション結果解析処理を行い、処理を終了する(ステップ９０４)。
【００３０】
図１０はシミュレーションを行う前の事前準備の処理を行うシミュレーション事前処理の概要を示すフローチャートである。
シミュレーション事前処理は、ジョブ実行指示部７０１からシミュレーション実行の要求が通知されてから処理が開始される。
まず実行結果情報ＤＢ７０７のジョブ統計情報テーブルを読み込み、ジョブの平均実行時間をメモリ上に読み込む (ステップ１００１、１００２)。上記処理をすべてのレコードに対して繰り返す。次にシミュレーションの処理を行っているときの現在時刻とのずれを補うために、シミュレーション差分時間を算出し、メモリに書き込む。
シミュレーション差分時間は「シミュレーション開始日時８０２で設定した日時−[シミュレーション実行]ボタンを押してシミュレーションを開始した時刻」で求めることができる。
【００３１】
例えば、現在時刻が「2011/06/30  10:00」であり、シミュレーション開始日時８０２に設定した日時が「2011/06/30  12:00」としてシミュレーションを実行したとすると、シミュレーション差分時間は「2時間」である。この値はシミュレーションを行った結果として、ジョブネットやジョブの開始時刻６０４や終了時刻６０５をジョブ結果情報ＤＢ７０７に書き込む際に使用する。
【００３２】
図１１はジョブの状態遷移やジョブの実行要求をジョブ実行エージェント(１０４Ｃ〜１０４Ｇ)上のジョブ実行部３０１に対して通知するジョブ実行制御部７０３の処理の概要を示すフローチャートである。
図では１つのジョブネットに対するスケジュールの算出からジョブの終了までの処理の流れを記載しているが、定義しているジョブネットが複数ある場合は、ジョブネット毎に並列して同時に処理が実行される。
まず、ジョブスケジュール定義ＤＢ７０５を読み込み、シミュレーション開始日時８０２に設定した日時以降のスケジュールを作成する(ステップ１１０１、１１０２)。作成したスケジュールがシミュレーション開始日時８０２からシミュレーション終了日時８０３までに指定した期間内にあるか判定する(ステップ１１０３)。
【００３３】
期間内にない場合は、そのジョブネットはシミュレーション対象外であり、シミュレーションを行う必要がないため処理を終了する。期間内にある場合は、そのジョブネットはシミュレーション対象のため、ジョブネットが開始日時に到達するまで待機する(ステップ１１０４)。ただし、実際にスケジュール算出された時刻まで待機するのではなく、待機する時間はジョブネットの開始日時からシミュレーション開始日時に指定した日時を引いた時間だけ待機する。ジョブネットの開始時刻に到達したらジョブ定義ＤＢ７０６からジョブの定義を読み込み、実行結果情報ＤＢ７０７にジョブネットの状態(実行中)と開始時刻を出力する(ステップ１１０５〜１１０７)。
【００３４】
ここで、出力する時刻は現在の時刻にシミュレーション事前処理のステップ１００３で求めたシミュレーション差分時間を足したものである。
ここで例を用いて説明すると、シミュレーションを実行した日時が「2011/06/30  10:00」、シミュレーション開始日時８０２に設定した日時が「2011/06/30  12:00」、シミュレーション終了日時８０３に設定した日時が「2011/06/30  14:00」、スケジュール算出処理(１１０２)によって算出されたジョブネットの開始日時のスケジュールが「2011/06/30  13:00」の場合、算出されたスケジュールはシミュレーション実行の期間内のため、ジョブネットはシミュレーション対象である。そのため、ジョブネットの開始日時からシミュレーション開始日時８０２に設定した日時を引いた「1時間」後の「2011/06/30  11:00」に到達したらジョブネットを開始する。「2011/06/30  11:00」に到達後、この時刻のまま実行結果情報ＤＢ７０７にジョブネットの開始時刻を格納してしまうと、スケジュール算出した本来の開始日時である「2011/06/30  13:00」とのずれが発生する。そのため、シミュレーション差分時間として、シミュレーション開始日時８０２に設定した値からシミュレーションを実行した日時を引いた「2時間」を足すことで、時刻を「2011/06/30  13:00」に補正した後、実行結果情報ＤＢ７０７に開始時刻を格納する。なお、ジョブネットの開始時刻だけでなく、ジョブネットの終了時刻、ジョブの開始時刻、終了時刻を出力する際も同様に現在時刻にシミュレーション差分時間を足して、実行結果情報ＤＢ７０７に格納する。
【００３５】
次にジョブネット配下にまだ実行していないジョブがあるかどうか判定する(ステップ１１０８)。ジョブネット配下に実行していないジョブがある場合、さらに対象のジョブネットが新規登録予定のジョブネットかどうかを判定する(ステップ１１０９)。対象のジョブネットが新規登録予定のジョブネットの場合、ジョブに定義されている実行プログラムを実行するため、実行結果情報ＤＢ７０７にジョブの状態(実行中)と開始時刻を格納し、ジョブ実行部へジョブの実行要求を通知する(ステップ１１１２、１１１３)。
【００３６】
対象のジョブネットが新規登録予定のジョブネットでない場合、ジョブに定義された実行プログラムを実行せずに、ジョブ統計情報テーブルの平均実行時間分ジョブを擬似的に実行させるため、メモリからジョブの平均実行時間を取り出し、ジョブに定義されている外部プログラムを指定の時間処理を待機するダミープログラム(Sleepジョブ)に置き換え(ステップ１１１０、１１１１)、ステップ１１１２、１１１３の処理を行い、ジョブを実行する。
【００３７】
ジョブが実行され、ジョブ実行部３０１からジョブの終了が通知されたのを検知したら、実行結果情報ＤＢ７０７にジョブの状態(正常終了)と終了時刻を格納する(ステップ１１１４、１１１５)。その後、ジョブネット配下にまだ実行していないジョブがあるかどうか再度判定を行い、ジョブネット配下で実行していないジョブがなくなるまで処理を繰り返す。
【００３８】
ジョブネット配下のジョブに実行していないジョブがなくなった場合、ジョブネット配下のジョブが全て終了したことを意味するので、実行結果情報ＤＢ７０７にジョブネットの状態(正常終了)と終了時刻を出力し、処理を終了する(ステップ１１１６)。
【００３９】
図１２はジョブ実行エージェント(１０１Ｃ〜１０１Ｇ)上でジョブの実行を行うジョブ実行処理の概要を示すフローチャートである。
図ではジョブ実行制御部から１つのジョブの実行要求を受け付け、ジョブを実行し、結果を要求元に通知する処理の流れを記載しているが、要求が複数ある場合は、要求毎に並列して同時に処理が実行される。
まず、実行要求のあったジョブに定義されているプログラムを実行する(ステップ１２０１)。プログラムの終了を監視し、終了を検知したらジョブの実行が終了したことを実行要求元に通知し、通知が完了したら処理を終了する(ステップ１２０２)。
【００４０】
図１３はシミュレーションシステムマネージャー１０３の実行結果情報ＤＢ７０７から、シミュレーション対象のジョブネットやジョブに関する情報を解析し、シミュレーション結果ファイル７１０に出力するシミュレーション結果解析の処理の概要を示すフローチャートである。
シミュレーション結果解析の処理は、シミュレーション対象の全てのジョブ実行制御の処理が完了した後に開始される。まず、ジョブ実行管理部で出力された実行結果情報ＤＢ７０７の結果情報テーブルを読み込む(ステップ１３０１)。次に、読み込んだ情報がシミュレーション開始日時８０２やシミュレーション終了日時８０３で指定された期間内に動作しているか判定し、期間内に動作している場合は、その内容をシミュレーション結果ファイル７１０に書き出す(ステップ１３０２、１３０３)。
【００４１】
次にシミュレーションの結果と過去の実行結果とを比較するデータを取得するために、実行結果情報ＤＢから該当データのジョブネット、ジョブに対する最新の実行結果を実行結果情報ＤＢから読み込み、シミュレーション結果ファイルに書き出す(ステップ１３０４)。読み込んだデータがシミュレーション期間内に動作していなければ、次のレコードの処理を行う。上記処理を実行結果情報DBの全てのレコードに対して繰り返し、処理が完了したら終了する。
【００４２】
図１４はシミュレーション解析処理によって出力されるシミュレーション結果ファイルの出力と画面表示の一例を示す図である。
シミュレーション結果ファイルの出力イメージ１４０１はシミュレーション結果ファイル７１０に出力される内容であり、シミュレーション開始日時８０２やシミュレーション終了日時８０３で指定したシミュレーションを実行する期間と、その期間に実行された全てのジョブネット・ジョブのシミュレーション結果と過去の実行結果が出力される。
【００４３】
図１５に示すシミュレーション結果画面イメージ(全体出力)１４０２は、シミュレーション結果ファイルの内容を元に端末１０５の画面上に表示される内容で、シミュレーション期間中にジョブネット、ジョブがどの時間帯に動作したかをグラフ化して確認することができる。また同様に、シミュレーション結果画面イメージ(結果比較)１４０３は、すでに運用中のジョブが新たにジョブを追加したときの動作と、過去の実行結果をグラフ化して比較することができる。
【符号の説明】
【００４４】
１０１Ａ〜１０１Ｇ    ホストマシン
１０２  ジョブ管理マネージャー
１０３  シミュレーションシステムマネージャー
１０４Ｃ〜１０４Ｇ  ジョブ実行エージェント
１０５  端末
１０６  ネットワーク
２０１  ジョブスケジュール定義ＤＢ
２０２  スケジュール算出部
２０３  ジョブ定義ＤＢ
２０４  ジョブ定義読込部
２０５  ジョブ実行処理部
２０６  実行結果情報ＤＢ
２０７  ジョブ実行制御部
２０８  ジョブスケジュール定義ファイル
２０９  ジョブ定義ファイル
２１０  ジョブ定義更新部
３０１  ジョブ実行部
７０１  シミュレーション実行指示部
７０２  シミュレーション事前処理部
７０３  ジョブ実行制御部
７０４  シミュレーション結果解析部
７０５  ジョブスケジュール定義ＤＢ
７０６  ジョブ定義ＤＢ
７０７  実行結果情報ＤＢ
７０８  ジョブスケジュール定義ファイル
７０９  ジョブ定義ファイル
７１０  シミュレーション結果ファイル
７１１  ジョブ定義更新部
【図１】
2013061874.tif 000003
【図２】
2013061874.tif 000004
【図３】
2013061874.tif 000005
【図４】
2013061874.tif 000006
【図５】
2013061874.tif 000007
【図６】
2013061874.tif 000008
【図７】
2013061874.tif 000009
【図８】
2013061874.tif 000010
【図９】
2013061874.tif 000011
【図１０】
2013061874.tif 000012
【図１１】
2013061874.tif 000013
【図１２】
2013061874.tif 000014
【図１３】
2013061874.tif 000015
【図１４】
2013061874.tif 000016
【図１５】
2013061874.tif 000017