(57)【特許請求の範囲】
【請求項１】
ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼して前記ジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置であって、
前記ジョブフローを構成する各々のジョブの前後関係および各々の前記ジョブが前記排他的リソースを使用するか否かを定義するジョブ定義データを予め記憶する記憶手段と、
前記ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、前記目標終了時刻が設定されているジョブを含んでいてかつ前記クリティカルパスに該当しない準クリティカルパス、および前記クリティカルパスと前記準クリティカルパスのいずれにも該当しないその他の経路に分類すると共に各々の前記ジョブがいずれの経路に含まれるかを判定するパス判定部と、
前記目標終了時刻の設定されているジョブの完了する予想終了時刻を各々の前記経路ごとに算出して前記予想終了時刻が前記目標終了時刻より遅れるか否かを判別する予想終了時刻判定部と、
前記ジョブを前記ジョブ定義データに従って前記エージェント装置に転送するフロー制御部とを有し、
前記フロー制御部が、前記予想終了時刻が前記目標終了時刻より遅れる場合に、前記ジョブ定義データに定義された内容に基づいて前記クリティカルパスおよび前記準クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出し、前記その他の経路に属するジョブの中で前記排他的リソースを使用するジョブの一覧を抽出し、抽出された該ジョブが実行中であればこれを停止し、該ジョブが実行前であればこれの実行を保留する機能を有することを特徴とするジョブフロー管理装置。
【請求項２】
前記フロー制御部が、前記予想終了時刻が前記目標終了時刻より遅れる場合に、前記ジョブ定義データに定義された内容に基づいて前記クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出する排他的リソース一覧抽出機能と、前記準クリティカルパスに属するジョブの中で前記排他的リソースを使用するジョブの一覧を抽出するジョブ一覧抽出機能と、抽出された該ジョブが実行前であればこれの実行を保留するジョブ保留機能と、該ジョブが実行中でありかつこれを停止すれば前記準クリティカルパスが前記クリティカルパスになる場合に該ジョブを停止するジョブ停止機能とを有することを特徴とする、請求項１に記載のジョブフロー管理装置。
【請求項３】
前記ジョブ定義データに前記ジョブの各々に対応して該ジョブを実行する際の前記エージェント装置のコンピュータ資源の利用率を制限するための設定であるパラメータが含まれており、
前記エージェント装置の前記パラメータを前記クリティカルパスに属するジョブを実行する際に前記ジョブ定義データに予め定義された通りに決定すると共に、前記準クリティカルパスもしくは前記その他の経路に属するジョブを実行する際に前記ジョブ定義データに予め定義された値よりも低い値に決定するリソース優先度制御部を有することを特徴とする、請求項２に記載のジョブフロー管理装置。
【請求項４】
前記記憶手段が、前記ジョブフローを構成する各々のジョブが前記排他的リソースの制御に係る処理について処理済であるか否かを示す排他制御フラグを前記ジョブフローに対応して記憶する実行フロー管理データを記憶しており、
前記フロー制御部が、前記その他の経路に属するジョブの中で前記排他的リソースを使用するジョブの実行を停止または保留する処理の後で前記排他制御フラグの値を処理済に設定するフラグ設定機能を有することを特徴とする、請求項１に記載のジョブフロー管理装置。
【請求項５】
ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼して前記ジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置にあって、
ジョブ定義データとして予め記憶された前記ジョブフローを構成する各々のジョブの前後関係および各々の前記ジョブが前記排他的リソースを使用するか否かをフロー制御部が読み出し、
予め目標終了時刻の設定されているジョブの完了する予想終了時刻を算出して前記予想終了時刻が前記目標終了時刻より遅れるか否かを予想終了時刻判定部が判別し、
前記予想終了時刻が前記目標終了時刻より遅れる場合に、前記ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、前記目標終了時刻が設定されているジョブを含んでいてかつ前記クリティカルパスに該当しない準クリティカルパス、および前記クリティカルパスと前記準クリティカルパスのいずれにも該当しないその他の経路にパス判定部が分類すると共に各々の前記ジョブがいずれの経路に含まれるかを判定し、
前記ジョブ定義データに定義された内容に基づいて前記クリティカルパスおよび前記準クリティカルパスに属するジョブで使用される排他的リソースの一覧をフロー制御部が抽出し、
前記その他の経路に属するジョブの中で前記排他的リソースを使用するジョブの一覧を前記フロー制御部が抽出し、
抽出された該ジョブが実行中であれば前記フロー制御部がこれを停止し、該ジョブが実行前であれば前記フロー制御部がこれの実行を保留し、
前記ジョブを前記ジョブフローの定義に従って前記フロー制御部が前記エージェント装置に転送する
ことを特徴とするジョブフロー実行管理方法。
【請求項６】
ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼して前記ジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置にあって、
前記ジョブフロー管理装置が備えるコンピュータに、
ジョブ定義データとして予め記憶された前記ジョブフローを構成する各々のジョブの前後関係および各々の前記ジョブが前記排他的リソースを使用するか否かを読み出す手順、
予め目標終了時刻の設定されているジョブの完了する予想終了時刻を算出して前記予想終了時刻が前記目標終了時刻より遅れるか否かを判別する手順、
前記予想終了時刻が前記目標終了時刻より遅れる場合に、前記ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、前記目標終了時刻が設定されているジョブを含んでいてかつ前記クリティカルパスに該当しない準クリティカルパス、および前記クリティカルパスと前記準クリティカルパスのいずれにも該当しないその他の経路に分類する手順、
前記ジョブ定義データに定義された内容に基づいて前記クリティカルパスおよび前記準クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出する手順、
前記その他の経路に属するジョブの中で前記排他的リソースを使用するジョブの一覧を抽出する手順、
抽出された該ジョブが実行中であればこれを停止し、該ジョブが実行前であればこれの実行を保留する手順、
および前記ジョブを前記ジョブフローの定義に従って前記エージェント装置に転送する手順、
を実行させることを特徴とするジョブフロー実行管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はジョブフローの実行に関し、特に該ジョブフローで目標終了時刻の設定されたジョブを迅速に実行完了させることに関する。
【背景技術】
【０００２】
ジョブフロー管理装置は、複数のバッチジョブ（以後単にジョブという）をフロー状に定義したジョブフローで、各々のジョブを定義された順序の通りに、ネットワークを介して接続された他のコンピュータ装置（エージェント装置という）に転送して実行させるコンピュータ装置である。各々のジョブは、ＵＮＩＸ（登録商標）のシェルスクリプトやウィンドウズ（登録商標）のバッチスクリプトなどのようなスクリプト言語で記述されている。
【０００３】
たとえば、コンピュータの利用者の少ない夜間や休日に、定型化されたバッチ処理を該コンピュータで一括して実行するなどのような用途に、このジョブフローによる処理が利用されることが多い。このため、ジョブフローの実行は、なるべく人手をかけずに実行できることが望ましい。
【０００４】
また、ジョブフローを構成するジョブの中には、目標終了時刻が設定されているものがあり、当該ジョブはその目標終了時刻までに完了している必要がある。具体的には、たとえば、毎日の始業前までに前日の売り上げに関するデータの集計が完了している必要がある、などのような場合である。
【０００５】
そのようなジョブが、エラーの発生や処理対象のデータ量が多かったなどのような理由で目標終了時刻までに完了しなかった場合、該ジョブを翌日の業務を遅延させてでも完了させるか、管理者の判断により適切なタイミングで強制停止を行なうなどの対処が必要である。いずれの場合も、管理者に多大な負担をかけることとなり、また該組織の業務に遅滞を発生することとなる。
【０００６】
ジョブフローの実行で、目標終了時刻が設定されているジョブを目標終了時刻以内に実行完了させることに関連して、次のような関連技術がある。特許文献１には、ジョブの完了時期を予測して、その予測結果に応じて該ジョブの実行優先度を調整する分散処理システムが記載されている。特許文献２には、該ジョブの目標終了時刻と推定終了時刻とを比較して、該ジョブが目標終了時刻までに終了するように優先度を調整するバッチジョブ管理システムが記載されている。特許文献３には、コンピュータにかかる負荷に応じて、各ジョブの実行終了時間を高精度に予測して終了時刻を希望時刻に近づくようにするジョブ実行予測制御方法が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２５６２２２号公報
【特許文献２】特開２００４−２９５７３１号公報
【特許文献３】特開平０５−２６５７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述の各々の特許文献は、いずれもそのジョブを目標終了時刻までに実行完了させようとする技術を開示している。しかしながら、これらの技術で該ジョブの実行を早めるために利用されているのは、該ジョブに設定された「優先度」を上昇させ、より多くのリソース（＝コンピュータ資源）、具体的にはプロセッサや記憶装置の利用率を割り当てるという手法である（特許文献２および３）。もしくは、さらに他のコンピュータに当該ジョブの実行を依頼するという手法である（特許文献１）。
【０００９】
各ジョブを実行するエージェント装置が、排他的リソースを含む場合がある。この排他的リソースとは、一度に１つのジョブが当該リソースを占有して使用することができ、その間は他のジョブが当該資源を利用することはできない。たとえばプリンタなどがこれに該当する。
【００１０】
換言すれば、排他的リソースには、「利用可能」か「利用不可能」かの２通りの状態しか存在しない。従って、前述の各特許文献にあるような各ジョブの「優先度」を上昇させてより多くのリソースを割り当てるという手法を、そのような排他的リソースに対して適用することは不可能である。
【００１１】
本発明の目的は、排他的リソースを含むエージェント装置に対して、ジョブフローの中で目標終了時刻の設定されたジョブを迅速に実行完了させることを可能とするジョブフロー管理装置、管理方法および管理プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るジョブフロー管理装置は、ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼してジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置であって、ジョブフローを構成する各々のジョブの前後関係および各々のジョブが排他的リソースを使用するか否かを定義するジョブ定義データを予め記憶する記憶手段と、ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、目標終了時刻が設定されているジョブを含んでいてかつクリティカルパスに該当しない準クリティカルパス、およびクリティカルパスと準クリティカルパスのいずれにも該当しないその他の経路に分類すると共に各々のジョブがいずれの経路に含まれるかを判定するパス判定部と、目標終了時刻の設定されているジョブの完了する予想終了時刻を各々の経路ごとに算出して予想終了時刻が目標終了時刻より遅れるか否かを判別する予想終了時刻判定部と、ジョブをジョブ定義データに従ってエージェント装置に転送するフロー制御部とを有し、フロー制御部が、予想終了時刻が目標終了時刻より遅れる場合に、ジョブ定義データに定義された内容に基づいてクリティカルパスおよび準クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出し、その他の経路に属するジョブの中で排他的リソースを使用するジョブの一覧を抽出し、抽出された該ジョブが実行中であればこれを停止し、該ジョブが実行前であればこれの実行を保留する機能を有することを特徴とする。
【００１３】
上記目的を達成するため、本発明に係るジョブフロー管理方法は、ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼してジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置にあって、ジョブ定義データとして予め記憶されたジョブフローを構成する各々のジョブの前後関係および各々のジョブが排他的リソースを使用するか否かをフロー制御部が読み出し、予め目標終了時刻の設定されているジョブの完了する予想終了時刻を算出して予想終了時刻が目標終了時刻より遅れるか否かを予想終了時刻判定部が判別し、予想終了時刻が目標終了時刻より遅れる場合に、ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、目標終了時刻が設定されているジョブを含んでいてかつクリティカルパスに該当しない準クリティカルパス、およびクリティカルパスと準クリティカルパスのいずれにも該当しないその他の経路にパス判定部が分類すると共に各々のジョブがいずれの経路に含まれるかを判定し、ジョブ定義データに定義された内容に基づいてクリティカルパスおよび準クリティカルパスに属するジョブで使用される排他的リソースの一覧をフロー制御部が抽出し、その他の経路に属するジョブの中で排他的リソースを使用するジョブの一覧をフロー制御部が抽出し、抽出された該ジョブが実行中であればフロー制御部がこれを停止し、該ジョブが実行前であればフロー制御部がこれの実行を保留し、ジョブをジョブフローの定義に従ってフロー制御部がエージェント装置に転送することを特徴とする。
【００１４】
上記目的を達成するため、本発明に係るジョブフロー管理プログラムは、ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置に対して転送して実行を依頼してジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置にあって、ジョブフロー管理装置が備えるコンピュータに、ジョブ定義データとして予め記憶されたジョブフローを構成する各々のジョブの前後関係および各々のジョブが排他的リソースを使用するか否かを読み出す手順、予め目標終了時刻の設定されているジョブの完了する予想終了時刻を算出して予想終了時刻が目標終了時刻より遅れるか否かを判別する手順、予想終了時刻が目標終了時刻より遅れる場合に、ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、目標終了時刻が設定されているジョブを含んでいてかつクリティカルパスに該当しない準クリティカルパス、およびクリティカルパスと準クリティカルパスのいずれにも該当しないその他の経路に分類する手順、ジョブ定義データに定義された内容に基づいてクリティカルパスおよび準クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出する手順、その他の経路に属するジョブの中で排他的リソースを使用するジョブの一覧を抽出する手順、抽出された該ジョブが実行中であればこれを停止し、該ジョブが実行前であればこれの実行を保留する手順、およびジョブをジョブフローの定義に従ってエージェント装置に転送する手順、を実行させることを特徴とする。
【発明の効果】
【００１５】
上述したように本発明は、クリティカルパスでも準クリティカルパスでないその他のパスに属するジョブの中で排他的リソースを使用するジョブがあればこれを停止もしくは保留するように構成したので、排他的リソースをクリティカルパスもしくは準クリティカルパスに属するジョブに優先的に実行させることができる。これによって、排他的リソースを含むエージェント装置に対して、ジョブフローの中で目標終了時刻の設定されたジョブを迅速に実行完了させることが可能であるという優れた特徴を持つジョブフロー管理装置、管理方法および管理プログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るバッチジョブ実行システムの構成を示す説明図である。
【図２】図１に示したジョブ定義ＤＢのより具体的な記憶内容について示す説明図である。
【図３】図３は、図１に示した実行フロー管理ＤＢおよび実行ジョブ管理ＤＢのより具体的な記憶内容について示す説明図である。
【図４】図１に示したバッチジョブ実行システムで処理の対象となるジョブフローの例を示す説明図である。
【図５】図１に示したジョブフロー管理装置の、エージェント装置へのジョブ投入に係る動作を示すフローチャートである。
【図６】図５のステップＳ１０５として示した排他的リソース制御の処理の詳細を示すフローチャートである。
【図７】図５のステップＳ１０８として示した、「準クリティカルパス」上のジョブに対する排他的リソースの制御の動作の詳細を示すフローチャートである。
【図８】本実施形態のより詳細な動作例を説明するための第２のジョブフローを示す説明図である。
【図９】図８で示したジョブＫ０１〜Ｋ１１の各々の予想実行時間とリソースの使用率について示す表である。
【発明を実施するための形態】
【００１７】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るジョブフロー管理装置１１は、ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置１２に対して転送して実行を依頼してジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置である。このジョブフロー管理装置１１は、ジョブフローを構成する各々のジョブの前後関係および各々のジョブが排他的リソースを使用するか否かを定義するジョブ定義データ（ジョブ定義ＤＢ５５）を記憶する記憶手段２２と、ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、目標終了時刻が設定されているジョブを含んでいてかつクリティカルパスに該当しない準クリティカルパス、およびクリティカルパスと準クリティカルパスのいずれにも該当しないその他の経路に分類すると共に各々のジョブがいずれの経路に含まれるかを判定するパス判定部５２と、目標終了時刻の設定されているジョブの完了する予想終了時刻を各々の経路ごとに算出して予想終了時刻が目標終了時刻より遅れるか否かを判別する予想終了時刻判定部５４と、ジョブをジョブフローの定義に従ってエージェント装置に転送するフロー制御部５１とを有し、フロー制御部５１が、予想終了時刻が目標終了時刻より遅れる場合に、ジョブ定義データに定義された内容に基づいてクリティカルパスおよび準クリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出し、その他の経路に属するジョブの中で排他的リソースを使用するジョブの一覧を抽出し、抽出された該ジョブが実行中であればこれを停止し、該ジョブが実行前であればこれの実行を保留する。
【００１８】
またフロー制御部５１が、予想終了時刻が目標終了時刻より遅れる場合に、ジョブ定義データに定義された内容に基づいてクリティカルパスに属するジョブで使用される排他的リソースの一覧を抽出する排他的リソース一覧抽出機能と、準クリティカルパスに属するジョブの中で排他的リソースを使用するジョブの一覧を抽出するジョブ一覧抽出機能と、抽出された該ジョブが実行前であればこれの実行を保留するジョブ保留機能と、該ジョブが実行中でありかつこれを停止すれば準クリティカルパスがクリティカルパスになる場合に該ジョブを停止するジョブ停止機能とを有する。
【００１９】
ジョブ定義データベース５５には、ジョブの各々に対応して該ジョブを実行する際のエージェント装置のコンピュータ資源の利用率を制限するための設定であるパラメータが含まれており、ジョブフロー管理装置１１は、エージェント装置のパラメータをクリティカルパスに属するジョブを実行する際にジョブ定義データに予め定義された通りに決定すると共に、準クリティカルパスもしくはその他の経路に属するジョブを実行する際にジョブ定義データに予め定義された値よりも低い値に決定するリソース優先度制御部５３を有する。
【００２０】
そして記憶手段２２が、ジョブフローを構成する各々のジョブが排他的リソースの制御に係る処理について処理済であるか否かを示す排他制御フラグをジョブフローに対応して記憶する実行フロー管理データ（実行フロー管理ＤＢ５６）を記憶しており、フロー制御部５１が、その他の経路に属するジョブの中で排他的リソースを使用するジョブの実行を停止または保留する処理の後で排他制御フラグの値を処理済に設定するフラグ設定機能を有する。
【００２１】
以上の構成を備えることにより、このジョブフロー管理装置は、排他的なコンピュータ資源を含むエージェント装置に対しても目標終了時刻の設定されたジョブを迅速に実行させることが可能となる。
以下、これをより詳細に説明する。
【００２２】
図１は、本発明の実施形態に係るバッチジョブ実行システム１の構成を示す説明図である。バッチジョブ実行システム１は、ジョブフロー管理装置１１とエージェント装置１２というコンピュータ装置が相互に接続されて構成される。
【００２３】
ジョブフロー管理装置１１は、バッチジョブやジョブフローの定義情報を管理し、各々のバッチジョブ（以後単にジョブという）をエージェント装置１２に転送して実行させ、ジョブフローのフロー制御を行うコンピュータ装置である。
【００２４】
エージェント装置１２は、ジョブフロー管理装置１１から転送されたバッチジョブを実行し、その結果をジョブフロー管理装置１１に返却するコンピュータ装置である。構成説明を理解しやすくするため、図１では各１台ずつのジョブフロー管理装置１１とエージェント装置１２を示しているが、実際には１台のジョブフロー管理装置１１に対して、実行させたいジョブやその分量に応じて複数台のエージェント装置１２が接続されていることが多い。
【００２５】
ジョブフロー管理装置１１は、コンピュータプログラムを実行する主体となるＣＰＵ（Central Processing Unit）２１と、プログラムおよびデータを記憶する記憶手段２２と、他のコンピュータとデータ通信を行う通信手段２３とを備える。エージェント装置１２も同様に、ＣＰＵ３１と、記憶手段３２と、通信手段３３とを備える。ジョブフロー管理装置１１の通信手段２３と、エージェント装置１２の通信手段３３とが相互に結ばれ、これによってジョブフロー管理装置１１とエージェント装置１２との間でデータ交換が可能となっている。
【００２６】
ジョブフロー管理装置１１のＣＰＵ２１では、後述するフロー制御部５１、パス判定部５２、リソース優先度制御部５３、予想終了時刻判定部５４が、各々コンピュータプログラムとして実行される。またジョブフロー管理装置１１の記憶手段２２には、これも後述するジョブ定義ＤＢ（データベース）５５と、実行フロー管理ＤＢ５６とが記憶されている。
【００２７】
フロー制御部５１は、ジョブ定義ＤＢ５５からフローデータや各ジョブの定義データを読み出し、これらのジョブを順次設定されたエージェント装置１２に転送して実行させる。またエージェント装置１２からのジョブの実行結果を受け取って、実行フロー管理ＤＢ５６を更新する。
【００２８】
パス判定部５２は、フロー制御部５１からの依頼に応じて、実行フロー管理ＤＢ５６を参照して各ジョブの予想実行時間からパス種別を判定する。リソース優先度制御部５３は、フロー制御部５１からの依頼に応じて、実行フロー管理ＤＢ５６を参照して、後述の制御を行うためのパラメータを決定し、フロー制御部５１へ通知する。予想終了時刻判定部５４は、フロー制御部５１からの依頼に応じて、実行フロー管理ＤＢ５６を参照し、対象ジョブの予想到達時刻や終了時刻を計算する。
【００２９】
ジョブ定義ＤＢ５５は、ジョブフローのフローデータやフロー中に定義されるジョブのスクリプト、パラメータ、予想実行時間、利用リソース一覧などが記憶される。実行フロー管理ＤＢ５６は、実行中のフローについて、各エージェント装置１２から返却されたジョブの結果（終了コードやステータス、出力結果）などが記憶される。
【００３０】
エージェント装置１２のＣＰＵ３１では、後述するジョブ実行制御部６１が実行され、エージェント装置１２の記憶手段３２にはこれも後述する実行ジョブ管理ＤＢ６２が記憶されている。
【００３１】
また、エージェント装置１２には外部記憶手段であるディスク１３と、出力情報を印刷する手段であるプリンタ１４が接続されている。ディスク１３およびプリンタ１４は、ＣＰＵ３１および記憶手段３２と同様に、ＣＰＵ３１で実行される複数のジョブの間で共有されて使用されるリソース（＝コンピュータ資源）であり、中でもプリンタ１４は一度に１つのジョブだけが使用できる排他的リソースである。プリンタ１４の他には排他的リソースは存在しない。
【００３２】
ジョブ実行制御部６１は、ジョブフロー管理装置１１から依頼されたジョブを実行し、実行ジョブ管理ＤＢ６２を更新する。また、各ジョブの実行完了後、ジョブフロー管理装置１１にその結果情報（終了コードや出力結果など）を返却する。実行ジョブ管理ＤＢ６２は、実行中のジョブについて、該ジョブの起動時刻、プロセスＩＤ、出力結果などの情報が記憶される。
【００３３】
図２は、図１に示したジョブ定義ＤＢ５５のより具体的な記憶内容について示す説明図である。図３は、図１に示した実行フロー管理ＤＢ５６および実行ジョブ管理ＤＢ６２のより具体的な記憶内容について示す説明図である。そして図４は、図１に示したバッチジョブ実行システム１で処理の対象となるジョブフローの例を示す説明図である。
【００３４】
図４の例で示したジョブフローでは、ジョブＪ０１を最初に実行した後、ジョブＪ０２とＪ１７にまず並列分岐する。ジョブＪ１７から先はジョブＪ２２までは分岐が無く直列的に実行され、またジョブＪ２２には目標終了時刻は設定されていない。一方のジョブＪ０２の後、ジョブＪ０３とジョブＪ０６に処理が並列分岐し、ジョブＪ０３〜０５とジョブＪ０６〜Ｊ０８とが各々並列的に実行され、ジョブＪ０５とジョブＪ０８の両方の終了を待ち合わせてから以降の処理に続く。
【００３５】
そして、ジョブＪ０５とジョブＪ０８の両方が終了したら、すぐにジョブＪ０９、１１、１３に並列分岐する。ジョブＪ０９〜１０、ジョブＪ１１〜１２、ジョブＪ１３〜１４が各々並列的に実行され、ジョブＪ１０、１２、１４の各々の終了を待ち合わせてからジョブＪ１５に続き、その後にジョブＪ１６が実行される。このジョブＪ１６に、目標終了時刻が設定されている。
【００３６】
図２に示すジョブ定義ＤＢ５５は、このジョブフローの名称「ＪＦ００１」と、これを構成する各ジョブのジョブ名５５ａと、該ジョブの実行前に完了していなければならない先行ジョブ５５ｂ、該ジョブの完了後に実行される後続ジョブ５５ｃ、そして各ジョブの内容であるスクリプトデータ５５ｄと、これを実行する際の各種設定であるパラメータ５５ｅとが記憶されている。なお、このパラメータ５５ｅの詳細については後述する。
【００３７】
図３に示す実行フロー管理ＤＢ５６は、ジョブ定義ＤＢ５５と対応するジョブ名５５ａと、各ジョブが実行済か否かを示す実行済５６ａ、該ジョブを実行したコンピュータ名を示す実行サーバ５６ｂ、該ジョブの実行された時刻を示す開始時刻５６ｃと終了時刻５６ｄ、正常終了であるか否かを示す終了コード５６ｅ、各ジョブでの出力を示す出力データ５６ｆが記憶されている。また、後述の排他制御フラグ５６ｇは該ジョブフロー全体に対して記憶されており、初期値＝０である。
【００３８】
同じく図３に示す実行ジョブ管理ＤＢ６２は、エージェント装置１２で実行した各ジョブのジョブ名５５ａと、実行フロー管理ＤＢ５６と対応する開始時刻５６ｃ、終了時刻５６ｄ、終了コード５６ｅおよび出力データ５６ｆ、ジョブ定義ＤＢ５５と対応するスクリプトデータ５５ｄとパラメータ５５ｅ、そしてエージェント装置１２で該ジョブが実行された際のプロセスＩＤ６２ａが記憶されている。
【００３９】
図５は、図１に示したジョブフロー管理装置１１の、エージェント装置１２へのジョブ投入に係る動作を示すフローチャートである。前段ジョブの実行が完了し結果が返却されると、フロー制御部５１はそのデータを実行フロー管理ＤＢ５６に格納し、次のジョブ投入処理に入る。図５の処理は、ジョブフロー管理装置１１が新たなジョブをエージェント装置１２に投入するたびに実行される。
【００４０】
まず、終了目標のあるジョブについて、フロー制御部５１は予想終了時刻判定部５４に該ジョブの予想終了時刻の算出を依頼し、予想終了時刻判定部５４は実行フロー管理ＤＢ５６から各ジョブの予想実行時間を読み出して算出し、その結果をフロー制御部５１に返却する（ステップＳ１０１）。
【００４１】
この予想終了時刻は「現在時刻＋各ジョブの予想実行時間の合計値」で与えられ、また目標のジョブに到達するまでにフロー上で並列実行させる分岐がある場合、予想終了時刻は「現在時刻＋クリティカルパス（詳しくは後述）上の各ジョブの予想実行時間の合計値」で与えられる。
【００４２】
この予想終了時刻を受け取ったフロー制御部５１は、その値と目標終了時刻を比較する（ステップＳ１０２）。予想終了時刻が目標終了時刻より遅い場合、この目標終了時刻までに対象ジョブを完了させるため、次に説明する優先度制御を行う。まず、フロー制御部５１の依頼により、パス判定部５２が当該ジョブフロー内の各パス（経路）について、実行フロー管理ＤＢ５６から対象のフロー情報及び各ジョブの予想実行時間を参照して、パス種別の判別を行う（ステップＳ１０３）。
【００４３】
ここでいうパス種別とは、「クリティカルパス」、「準クリティカルパス」、「その他のパス」の３種類のいずれかである。「その他のパス」は、目標終了時刻の設定されているジョブと先行関係のないジョブが全てこれに該当する。また、このフロー以外にも同時に実行されているジョブフローが存在すれば、そのフロー中のジョブは全て「その他のパス」に属する。
【００４４】
「クリティカルパス」は、「その他のパス」に該当しないジョブで、各々の並列分岐の中で最も各ジョブの予想実行時間の合計値が大きくなる組み合わせである。また「準クリティカルパス」は、「その他のパス」にも「クリティカルパス」にも該当しない組み合わせである。
【００４５】
図４の例で示したジョブフローでは、ジョブＪ０３〜０５とジョブＪ０６〜Ｊ０８とではジョブＪ０３〜０５の方が予想実行時間の合計値が大きく、またジョブＪ０９〜１０、ジョブＪ１１〜１２、ジョブＪ１３〜１４の中ではジョブＪ１１〜１２が予想実行時間の合計値が最も大きいと仮定すると、ジョブＪ０１→ジョブＪ０２→ジョブＪ０３→ジョブＪ０４→ジョブＪ０５→ジョブＪ１１→ジョブＪ１２→ジョブＪ１５→ジョブＪ１６のパスが「クリティカルパス」となる（図４では太線で示す）。
【００４６】
また、ジョブＪ１７→ジョブＪ１８→ジョブＪ１９→ジョブＪ２０→ジョブＪ２１→ジョブＪ２２のパスが「その他のパス」となり（図４では破線で示す）、残るジョブＪ０６〜Ｊ０８、ジョブＪ０９〜１０、ジョブＪ１３〜１４のパスが「準クリティカルパス」となる（図４では細線で示す）。
【００４７】
なお、並列分岐の中にさらに並列分岐が設定されている場合の「クリティカルパス」と「準クリティカルパス」の区別は、最も外側にある並列分岐の中で予想実行時間の合計値が最大となるものについて、さらに内側にある並列分岐の予想実行時間の合計値が最大となるものを「クリティカルパス」として判断する。以上の判定を終えるとパス判定部５２は、その結果をフロー制御部５１へ返却する。
【００４８】
続いてフロー制御部５１は、後述する排他制御フラグ５６ｇ＝０であるか否かを判断し（ステップＳ１０４）、０でなければステップＳ１０７に進む。排他制御フラグ５６ｇ＝０であれば、図６に後述する排他的リソース制御の処理を行って（ステップＳ１０５）、排他制御フラグ５６ｇ＝１に設定して（ステップＳ１０６）ステップＳ１０７に進む。
【００４９】
図６は、図５のステップＳ１０５として示した排他的リソース制御の処理の詳細を示すフローチャートである。この処理は、フロー制御部５１の依頼に基づいてリソース優先度制御部５３が、実行フロー管理ＤＢ５６を参照して、フロー情報及び各ジョブの排他的リソースを確認し、次のような判定を行う。
【００５０】
まず、「クリティカルパス」および「準クリティカルパス」上のジョブが必要とする排他的リソース一覧を抽出し（ステップＳ２０１）、それらの排他的リソースを利用するジョブのうち「その他のパス」に属するジョブを抽出する（ステップＳ２０２）。
【００５１】
排他的リソースを利用する「その他のパス」に属するジョブの各々について、実行中であるか否かを判断し（ステップＳ２０３）、実行中であればその実行を停止し（ステップＳ２０４）、未実行であれば実行開始されないよう保留して待ち合わせさせる（ステップＳ２０５）。
【００５２】
この処理によって停止もしくは保留となったジョブは、対象となっている排他的リソースが解放され、「クリティカルパス」および「準クリティカルパス」上のジョブのいずれもが使わなくなった時点で再開される。またこのとき、再開可能となる「その他のパス」上のジョブが複数ある場合には、そのジョブへのフローの到達順とするのが一般的ではあるが、それらをどのような順で実行しても特に問題はない。
【００５３】
このように排他的リソースを利用する「その他のパス」上に存在するジョブを事前に全て止めることにより、「クリティカルパス」および「準クリティカルパス」上に存在するジョブの実行を優先させることができる。ここで必要となる対象リソースが、いつどのようなタイミングで必要となるのかを正確に推測するのは困難であるので、「その他のパス」上に存在する優先度の低いジョブを事前に停止し、これらの「クリティカルパス」および「準クリティカルパス」上に存在するジョブがそれらのリソースを必要とした時点ですぐに使えるようにする。
【００５４】
また、「その他のパス」は固定的であり、ジョブフローの定義を変えない限り変動することはないので、図６に記載した処理は各ジョブフローの実行に対して１回だけ実施すればよい。排他制御フラグ５６ｇはそのために定義されており、図６に記載した処理を実行したらステップＳ１０６で説明したように排他制御フラグ５６ｇ＝１とする。なお、ステップＳ１０４で排他制御フラグ５６ｇ＝１である場合の処理については後述する。
【００５５】
次に、図５の処理が開始される際に投入されたジョブが、「クリティカルパス」上にあるジョブであるか否かについて判断する（ステップＳ１０７）。「クリティカルパス」上にあるジョブである場合は、図７に示す「準クリティカルパス」上のジョブに対する排他的リソースの制御を行って（ステップＳ１０８）ステップＳ１０９に進む。「クリティカルパス」上にあるジョブでない場合は、そのままステップＳ１０９に進む。
【００５６】
図７は、図５のステップＳ１０８として示した、「準クリティカルパス」上のジョブに対する排他的リソースの制御の動作の詳細を示すフローチャートである。まず、リソース優先度制御部５３が実行フロー管理ＤＢ５６を参照して投入対象となっている「クリティカルパス」上のジョブが必要とする排他的リソースを抽出し（ステップＳ３０１）、それらの排他的リソースを利用するジョブのうち「準クリティカルパス」上に存在するジョブを特定する（ステップＳ３０２）。
【００５７】
ここまでで特定されたジョブの各々に対して、該ジョブが実行中であるか否かについて判断し（ステップＳ３０３）、該ジョブが実行中であれば、このジョブを停止した場合に該ジョブを含むパスが「クリティカルパス」、即ち予想実行時間が最大となるパスになるか否かを判断し（ステップＳ３０４）、「クリティカルパス」になる場合は該ジョブを停止し（ステップＳ３０５）、「クリティカルパス」にならない場合は該ジョブを停止せずに継続する（ステップＳ３０６）。即ち、該ジョブを停止することによって、予想実行時間がより遅くなる場合は停止せずに実行を継続し、遅くならない場合は停止する。
【００５８】
ステップＳ３０３で該ジョブが未実行であれば、このジョブを保留して実行開始されないようにする（ステップＳ３０７）。ステップＳ３０５およびステップＳ３０７で停止もしくは保留されたジョブは、図６の処理と同様に、その排他的リソースを使用する「クリティカルパス」上のジョブが解放された時点で実行を再開する。
【００５９】
ステップＳ１０７および１０８の後、フロー制御部５１は、リソース優先度制御部５３に共有可能リソースについての制御を依頼する（ステップＳ１０９）。ここでいうリソース優先度は、「クリティカルパス」上のジョブ→「準クリティカルパス」上のジョブ→「その他のパス」上のジョブの順となる。リソース優先度制御部５３は、各共有可能リソースに対して以下の判断を行う。
【００６０】
「クリティカルパス」上のジョブについては、最大限のリソースを優先的に使用させる。「準クリティカルパス」上のジョブについては、「クリティカルパス」上のジョブで使用される分を除いた分で空きがあれば利用でき、十分な空きがなければその分しか利用できない。「その他のパス」上のジョブについては、「クリティカルパス」上のジョブと「準クリティカルパス」上のジョブで使用される分を除いた分で空きがあれば利用でき、十分な空きがなければその分しか利用できない。
【００６１】
また、「準クリティカルパス」上のジョブと「その他のパス」上のジョブとは複数同時に実行される可能性があり、その場合には同種のジョブの個数で該当するリソースを均等に分割して使用させる。
【００６２】
リソース優先度制御部５３は実行フロー管理ＤＢ５６から、投入対象ジョブの転送先エージェント装置を確認し、その転送先エージェント装置で現在実行中のジョブの一覧、そのジョブが使用するリソース一覧、その使用率をさらに確認して、対象ジョブを転送実行させた場合の各リソースの使用率を上記ロジックに従って決定し、その制御パラメータをフロー制御部５１に返却する。
【００６３】
ステップＳ１０９で、リソース優先度制御部５３が決定した各制御パラメータを受け取ったフロー制御部５１は、対象ジョブを目的のエージェント装置に転送し、エージェント装置側のジョブ実行制御部６１は対象ジョブの実行、及び受け取ったリソースの制御パラメータに従って各ジョブのリソースを制御する（ステップＳ１１３）。
【００６４】
前述のステップＳ１０２で、予想終了時刻が目標終了時刻以内である場合の動作について説明する。以下の説明では、その前のジョブ投入処理まではステップＳ１０２で「予想終了時刻が目標終了時刻より遅い」と判定されていたものとする。これは、前回のジョブ投入処理で「予想終了時刻が目標終了時刻以内である」場合には、ステップＳ１１０〜１１２の処理は特に意味をなさないためである。
【００６５】
優先度制御の結果、予想終了時刻が目標終了時刻以内となったということは、以降は優先度制御を行う必要がなくなったことを意味する。このため、優先度制御の内容を初期化する。まず排他制御フラグ５６ｇ＝０に設定し（ステップＳ１１０）、図６および図７に示した処理で停止もしくは保留した「その他のパス」「準クリティカルパス」上の各ジョブの停止および保留を解除して実行を再開もしくは継続させる（ステップＳ１１１）。
【００６６】
これに続いてフロー制御部５１は、各エージェント装置１２のジョブ実行制御部６１へ共有可能リソース制御の初期化命令を送り、それを受けてジョブ実行制御部６１は実行中のジョブのリソース制御の状態を初期化する（ステップＳ１１２）。その後ジョブ投入が行われるが、これは前述したステップＳ１１３の通りである。
【００６７】
（より詳細な動作例）
図８は、本実施形態のより詳細な動作例を説明するための第２のジョブフロー４００を示す説明図である。この動作例では、図１に示す通りにジョブフロー管理装置１１およびエージェント装置１２が各１台ずつである。また、説明を簡単にするため、このジョブフロー４００と並列に動作しているその他のジョブおよびジョブフローは存在しないものとする。また、エージェント装置１２が使用する排他的リソースはプリンタ１４だけである。
【００６８】
それ以外のＣＰＵ３１、メモリ（記憶手段３２）、ディスクＩ／Ｏ（ディスク１３）は排他的リソースではないので、ジョブフロー管理装置１１のフロー制御部５１はジョブをエージェント装置１２に転送して実行させるに当たって、これら各々の実行に使用する各リソースの使用率を、リソース優先度制御部５３が決定した通りのパラメータを伝達して実行させることができる。
【００６９】
図８に示すジョブフロー４００では、まずジョブＫ００が実行された後、ジョブＫ０１とジョブＫ０８とに並列分岐する。ジョブＫ０８の後でジョブＫ０９→Ｋ１０と連続して実行され、ジョブＫ０８〜Ｋ１０には目標終了時刻は特に設定されていない。ジョブＫ０１の実行後、ジョブＫ０２とジョブＫ０５とに並列分岐する。ジョブＫ０２〜０４、ジョブＫ０５〜Ｋ０７が各々並列的に実行され、ジョブＫ０４とジョブＫ０７の両方の終了を待ち合わせてからジョブＫ１１の処理に続く。ジョブＫ１１に、目標終了時刻が設定されている。
【００７０】
図９は、図８で示したジョブＫ０１〜Ｋ１１の各々の予想実行時間とリソースの使用率について示す表４０１である。この表４０１では、ジョブ定義ＤＢ５５に記憶されているパラメータ５５ｅの中から、この例についての説明に必要な項目を抜粋している。即ち、ジョブフロー「ＳＡＭＰＬＥ００１」を構成する各ジョブのジョブ名４０１ａと、それら各々のジョブに対応する予想実行時間４０１ｂ、ＣＰＵ使用率４０１ｃ、メモリ使用率４０１ｄ、ディスクＩ／Ｏ使用率４０１ｅ、プリンタ使用４０１ｆである。
【００７１】
予想実行時間４０１ｂは、予想終了時刻判定部５４が算出した、各ジョブの実行にかかる所要時間である。ＣＰＵ使用率４０１ｃ、メモリ使用率４０１ｄ、ディスクＩ／Ｏ使用率４０１ｅは各々、各ジョブの実行に必要とされる、エージェント装置１２の排他的ではないリソースであるＣＰＵ３１、記憶手段３２、ディスク１３の利用率を示す。プリンタ使用４０１ｆは、エージェント装置１２で唯一の排他的リソースであるプリンタ１４が、各ジョブで使用されるか否かを示す。図９では、該ジョブでプリンタ１４が使用されることを「○」で示し、使用されない場合は無印としている。
【００７２】
この表のデータによると、ジョブＫ０２〜０４の予想実行時間の合計が１５０分、ジョブＫ０５〜Ｋ０７の予想実行時間の合計が１４０分である。従って、このジョブフロー４００では、ジョブＫ０１→ジョブＫ０２→ジョブＫ０３→ジョブＫ０４→ジョブＫ１１のパス（図９では太線、以後パスＡという）が「クリティカルパス」、ジョブＫ０１→ジョブＫ０８→ジョブＫ０９→ジョブＫ１０のパス（図９では破線、以後パスＣという）が「その他のパス」、ジョブＫ０１→ジョブＫ０５→ジョブＫ０６→ジョブＫ０７→ジョブＫ１１のパス（図９では細線、以後パスＢという）が「準クリティカルパス」となる。
【００７３】
ここで、図８に示すジョブフロー４００は「午前１時２０分」に実行が開始され、現在時刻は「午前２時００分」で、ジョブＫ００の実行までは終了しているものとする。そして、ジョブＫ１１の目標終了時刻は「午前５時００分」である。
【００７４】
ここで、ステップＳ１０１（図６）の処理で、「クリティカルパス」であるパスＡの予想実行時間４０１ｂの合計が２１０分であるので、ジョブＫ１１の予想終了時刻は「午前５時３０分」となり、目標終了時刻「午前５時００分」より遅い。このため、図５に示したフローチャートに従い、ステップＳ１０３のパス種別の判別を行う。前述のように、パスＢが「準クリティカルパス」、パスＣが「その他のパス」である。
【００７５】
ステップＳ１０５（図６）の処理で、フロー制御部５１はジョブフロー４００でパスＡおよびパスＢ上のジョブから排他的リソースを抽出する。排他的リソースはプリンタ１４だけであり、パスＣでこれを利用するのはジョブＫ０９だけであるので、このジョブＫ０９を保留とし、ジョブＫ０８の終了後にこのパスがジョブＫ０９の実行に進まないようにする。ジョブＫ０８は特に保留制限がかかっていないので、投入対象はジョブＫ０１とジョブＫ０８となる。
【００７６】
次にステップＳ１０８（図７）の処理で、投入対象であるジョブＫ０１とジョブＫ０８について、ジョブＫ０１は「クリティカルパス」であるパスＡ上のジョブであるが、排他的リソースであるプリンタ１４を使用しないので、ここではステップＳ１０８（図７）の処理は行わない。
【００７７】
そしてステップＳ１０９の処理で、ジョブＫ０１とジョブＫ０８を同時に投入して実行させても、ＣＰＵ使用率４０１ｃの合計は３５％、メモリ使用率４０１ｄの合計は７０％、ディスクＩ／Ｏ使用率４０１ｅの合計は４５％。即ち、全てのリソースについてその使用率が１００％を超えることはないので、リソース優先度制御部５３はジョブＫ０１とジョブＫ０８について投入時点ではフロー制御部５１に対して特に優先度を設定させず、エージェント装置１２に転送してそのまま実行させる。
【００７８】
午前２時２５分になって、ジョブＫ０８が予想より５分早く２５分で完了した。ジョブＫ０８は「その他のパス」に属するジョブなので、予想終了時刻の更新は行なわない。これに続いてジョブＫ０９の投入処理となるが、このジョブＫ０９については排他的リソースであるプリンタ１４の制約により保留がかかっているので、パスＣは待ち合わせ状態となる。
【００７９】
午前２時３０分になって、ジョブＫ０１が予想より１０分早く３０分で完了した。これを受けて、再びステップＳ１０１の処理で、ジョブＫ１１の予想終了時刻を再び計算するとパスＡでは「午前５時２０分」、パスＢでは「午前５時１０分」であるので、引き続きパスＡが「クリティカルパス」のままである。
【００８０】
フロー制御部５１は、これに引き続いてジョブＫ０２とジョブＫ０５の投入に係る処理を行う。「クリティカルパス」上のジョブＫ０２は排他的リソースを使用しないので、ステップＳ１０５（図６）の処理は行われない。また、ステップＳ１０９の処理については、この時点ではエージェント装置１１上にはジョブがなく、ジョブＫ０２、ジョブＫ０５を両方同時に実行しても、ＣＰＵ使用率の合計は９０％、メモリ使用率の合計は５０％、ディスクＩ／Ｏ使用率の合計は４０％であるので、全てのリソースについてその使用率が１００％を越えることはない。従って、リソース優先度制御部５３はジョブＫ０２とジョブＫ０５についても、フロー制御部５１に対して特に優先度を設定させずエージェント装置１２に転送して実行させる。
【００８１】
午前３時０５分になって、ジョブＫ０２が予想より５分早く３５分で完了した。これを受けて、再びステップＳ１０１の処理で、ジョブＫ１１の予想終了時刻を再び計算するとパスＡでは「午前５時１５分」、パスＢでは「午前５時１０分」であるので、引き続きパスＡが「クリティカルパス」のままである。
【００８２】
フロー制御部５１は、これに引き続いてジョブＫ０３の投入に係る処理を行う。「クリティカルパス」であるパスＡ上のジョブＫ０３は排他的リソースであるプリンタ１４を利用するが、そのプリンタ１４を利用するジョブＫ０５が既に実行中である。
【００８３】
このため、ステップＳ３０４の処理で、仮にこのジョブＫ０５を停止してジョブＫ０３を投入した場合の、現在時刻＋パスＢの予想実行時間４０１ｂの合計でパスＢの予想終了時刻を計算すると、現在時刻「午前３時０５分」＋８０分（ジョブＫ０３）＋５０分（ジョブＫ０５）＋３０分（ジョブＫ０６）＋６０分（ジョブＫ０７）＋２０分（ジョブＫ１１）＝予想終了時刻「７時０５分」となる。これは現在「クリティカルパス」であるパスＡの予想終了時刻５時１５分よりも大きく遅れることとなるので、フロー制御部５１はジョブＫ０３を投入せず、そのままジョブＫ０５の実行完了を待ち合わせる。
【００８４】
午前３時１０分になって、ジョブＫ０５が予想より１０分早く４０分で完了した。これを受けて、再びステップＳ１０１の処理で、ジョブＫ１１の予想終了時刻を再び計算するとパスＡでは「午前５時２０分」、パスＢでは「午前５時００分」であるので、引き続きパスＡが「クリティカルパス」のままである。なお、パスＡで予想終了時刻が前回計算時よりも５分遅くなっているのは、先ほどジョブＫ０３の投入を５分間待ち合わせた影響である。
【００８５】
フロー制御部５１は、これに引き続いてジョブＫ０３およびジョブＫ０６の投入に係る処理を行う。ジョブＫ０５が終了して、排他的リソースであるプリンタ１４は既に解放されており、ジョブＫ０３以外にこのプリンタ１４を利用するジョブは無いので、ジョブＫ０３はこのプリンタ１４を利用できる。ただし、ジョブＫ０３およびジョブＫ０６を同時に投入すると、ＣＰＵ使用率４０１ｃの合計が１１０％となり、１００％を超える。
【００８６】
そのためリソース優先度制御部５３はステップＳ１０９の処理で、「クリティカルパス」であるパスＡ上のジョブＫ０３に対して、ＣＰＵリソースを設定通りに８５％利用できるよう、即ちジョブＫ０６に対してＣＰＵリソースを１５％しか使用しないようにフロー制御部５１に設定させてエージェント装置１２に実行させる。
【００８７】
午前３時４０分になって、ジョブＫ０６が予想通り３０分で完了した。これを受けて、再びステップＳ１０１の処理で、ジョブＫ１１の予想終了時刻を再び計算すると前回計算時と同じくパスＡでは「午前５時２０分」、パスＢでは「午前５時００分」であるので、引き続きパスＡが「クリティカルパス」のままである。
【００８８】
フロー制御部５１は、これに引き続いてジョブＫ０７の投入に係る処理を行う。ジョブＫ０７は排他的リソースであるプリンタ１４を使用しないので、ステップＳ１０５（図６）の処理は行われない。またパスＢは「クリティカルパス」ではないので、ステップＳ１０８（図７）の処理も行われない。ただし、現在エージェント装置１２ではジョブＫ０３が実行継続中であり、ここにジョブＫ０７を投入すると、ＣＰＵ使用率４０１ｃの合計が１２５％となり、１００％を超える。
【００８９】
そのためリソース優先度制御部５３はステップＳ１０９の処理で、「クリティカルパス」であるパスＡ上のジョブＫ０３に対して、引き続きＣＰＵリソースを設定通りに８５％利用できるよう、即ちジョブＫ０７に対してＣＰＵリソースを１５％しか使用しないようにフロー制御部５１に設定させてエージェント装置１２に実行させる。
【００９０】
午前４時１５分になって、ジョブＫ０３が予想より１５分早く６５分で完了した。これを受けて、ジョブＫ１１の予想終了時刻を再び計算すると、パスＡでは「午前５時０５分」、パスＢでは「午前５時００分」となり、引き続きパスＡが「クリティカルパス」のままである。
【００９１】
フロー制御部５１は、これに引き続いてジョブＫ０４の投入に係る処理を行う。ジョブＫ０４は排他的リソースであるプリンタ１４を使用しないので、ステップＳ１０５（図６）およびステップＳ１０８（図７）の処理は行われない。
【００９２】
そして、現在エージェント装置１２ではジョブＫ０７が実行継続中であり、ここにジョブＫ０４を投入しても、ＣＰＵ使用率４０１ｃの合計が８０％、メモリ使用率４０１ｄの合計は４５％、ディスクＩ／Ｏ使用率４０１ｅの合計は６５％であるので、全てのリソースについてその使用率が１００％を越えることはない。そのためリソース優先度制御部５３は、ジョブＫ０４についてはフロー制御部５１に対して特に優先度を設定させずエージェント装置１２に転送して実行させる。
【００９３】
午前４時３５分になって、ジョブＫ０４が予想より１０分早く２０分で完了した。パスＡはパスＢとの合流地点に到達したので、ここでは特に何もせず、フロー制御部５１はジョブＫ０７の終了を待ち合わせる。
【００９４】
午前４時４０分になって、ジョブＫ０７が予想通り６０分で完了した。ジョブＫ０４は既に完了しているので、フロー制御部５１はこれに引き続いてジョブＫ１１の投入に係る処理を行う。ジョブＫ１１は排他的リソースであるプリンタ１４を使用しないので、ステップＳ１０５（図６）の処理は行われない。また実行中の他のジョブも存在しないので、そのため、ジョブＫ１１についてリソース優先度制御部５３はフロー制御部５１に対して特に優先度を設定させずエージェント装置１２に転送して実行させる。
【００９５】
午前４時５５分になって、ジョブＫ１１が予想より５分早く１５分で完了した。以上でジョブＫ１１は、目標終了時刻であった「午前４時５５分」よりも早く完了することができた。以降の処理は、通常の処理に戻ることになる。フロー制御部５１は、待ち合わせ状態となっていたジョブＫ０９（パスＣ）の実行を、ここでエージェント装置１２に再開させる。これに続いて、ジョブＫ１０をエージェント装置１２に転送して実行させる。
【００９６】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るジョブフロー実行管理方法は、ジョブフローを構成する各々のジョブを排他的リソースを持つエージェント装置１２に対して転送して実行を依頼してジョブの実行結果を該エージェント装置から受信するジョブフロー管理装置１１にあって、ジョブ定義データとして予め記憶されたジョブフローを構成する各々のジョブの前後関係および各々のジョブが排他的リソースを使用するか否かをフロー制御部５１が読み出し、目標終了時刻の設定されているジョブの完了する予想終了時刻を算出して予想終了時刻が目標終了時刻より遅れるか否かを予想終了時刻判定部５４が判別し（図５：ステップＳ１０１〜１０２）、予想終了時刻が目標終了時刻より遅れる場合に、ジョブフロー内の複数のジョブで構成される経路を目標終了時刻が設定されているジョブを含んでいてかつ最も多くの処理時間を必要とするクリティカルパス、目標終了時刻が設定されているジョブを含んでいてかつクリティカルパスに該当しない準クリティカルパス、およびクリティカルパスと準クリティカルパスのいずれにも該当しないその他の経路にパス判定部５２が分類すると共に各々のジョブがいずれの経路に含まれるかを判定し（図５：ステップＳ１０３）、ジョブ定義データベースに定義された内容に基づいてクリティカルパスおよび準クリティカルパスに属するジョブで使用される排他的リソースの一覧をフロー制御部５１が抽出し（図６：ステップＳ２０１）、その他のパスに属するジョブの中で排他的リソースを使用するジョブの一覧をフロー制御部が抽出し（図６：ステップＳ２０２）、抽出された該ジョブが実行中であればフロー制御部がこれを停止し、該ジョブが実行前であればフロー制御部がこれの実行を保留し（図６：ステップＳ２０３〜２０５）、ジョブをジョブフローの定義に従ってフロー制御部がエージェント装置に転送する（図５：ステップＳ１１３）。
【００９７】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるジョブフロー管理装置１１に実行させるようにしてもよい。
この構成および動作により、本実施形態は以下のような効果を奏する。
【００９８】
本実施形態によれば、排他的リソースを使用する処理が必要であるエージェント装置にジョブを転送して実行させる際にも、目標終了時刻の設定されているクリティカルパスに含まれるジョブに優先してその排他的リソースを使用させることができるので、該クリティカルパスが目標終了時刻までに完了する可能性を高めることができる。さらに、クリティカルパスに含まれるジョブに対しては、排他的リソースに該当しないコンピュータ資源も優先して割り当てられるので、この点でも該クリティカルパスが目標終了時刻までに完了する可能性を高めることができる。
【００９９】
以上で説明した「より詳細な動作例」では、各ジョブの終了時刻が「予想より早く完了した」または「予想通りに完了した」ものとしたが、実際には各ジョブの終了時刻はその時点でのデータの量や各コンピュータ資源の状態などに依存するので、毎回このように良い状態で処理が行われるとは限らない。しかしながら、本実施形態の目的は、目標終了時刻の設定されているジョブを「必ずその時刻までに終わらせる」ことではなく、「その時刻までに終了する可能性を高める」ことにある。本実施形態では、その効果については前述した通りに発揮される。
【０１００】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【０１０１】
本発明はバッチジョブを管理して実行するコンピュータシステムに適用することができる。
【符号の説明】
【０１０２】
１  バッチジョブ実行システム
１１  ジョブフロー管理装置
１２  エージェント装置
１３  ディスク
１４  プリンタ
２１、３１  ＣＰＵ
２２、３２  記憶手段
２３、３３  通信手段
５１  フロー制御部
５２  パス判定部
５３  リソース優先度制御部
５４  予想終了時刻判定部
５５  ジョブ定義ＤＢ
５５ｅ  パラメータ
５６  実行フロー管理ＤＢ
５６ｇ  排他制御フラグ
６１  ジョブ実行制御部
６２  実行ジョブ管理ＤＢ
４００  ジョブフロー
４０１  表
４０１ｂ  予想実行時間
４０１ｃ  ＣＰＵ使用率
４０１ｄ  メモリ使用率
４０１ｅ  ディスクＩ／Ｏ使用率
４０１ｆ  プリンタ使用
【図１】
0005509814.tif 000002
【図２】
0005509814.tif 000003
【図３】
0005509814.tif 000004
【図４】
0005509814.tif 000005
【図５】
0005509814.tif 000006
【図６】
0005509814.tif 000007
【図７】
0005509814.tif 000008
【図８】
0005509814.tif 000009
【図９】
0005509814.tif 000010