(57)【特許請求の範囲】
【請求項１】
ジョブフローを構成する各々のジョブを予め設定された実行装置に対し転送しその実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置であって、
各々の前記ジョブの属性を示すジョブ属性データを予め記憶する記憶手段と、前記ジョブ属性データに予め設定されたスケジュールの通りに前記ジョブフローの実行開始を指示するスケジュール管理手段と、各々の前記ジョブの予想開始時刻を計算するジョブフロー定義解釈手段と、各々の前記ジョブを前記実行装置に対して転送して実行を依頼してその実行結果を該ジョブ実行装置から受信するジョブ投入手段と、前記ジョブの実行状況をユーザに対して表示するイベント通知手段とを備えると共に、
前記ジョブフローが、ジョブもしくは合流点を示す各ノードによって表され、
前記ジョブ属性データが、前記ジョブの中の特定のジョブを必ず実行する時刻について示す時刻制約と、各々の前記ジョブの実行を開始する時刻の目標について示す目標実行時刻と、各々の前記ジョブの実行にかかると予想される時間である予想実行時間とを含み、
前記ジョブフロー定義解釈手段が、
前記ジョブフローで特定の前記合流点に合流する各ジョブの間の実行順序を前記ジョブ属性データに基づいて判定する実行順序判定部と、前記ジョブフローの終点から前記各ノードを辿りつつ前記時刻制約および前記予想実行時間を利用して前記実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算する予想開始時刻計算部と、この計算された前記予想開始時刻が前記目標実行時刻と比較して所定の時間以上遅れる場合に前記イベント通知手段を介して警告を発信させる警告発信部と
を有することを特徴とするジョブフロー管理装置。
【請求項２】
前記予想開始時刻計算部が、前記ジョブに他の特定のジョブとの間で同時に実行することができないという排他条件が設定されている場合に、前記ジョブ属性データに設定された前記ジョブと前記排他条件の対象となるジョブとの間での実行順序に基づき、該当ジョブの中でより遅く実行される側のジョブから実行時刻が重複しないように前記予想開始時刻を計算することを特徴とする、請求項１に記載のジョブフロー管理装置。
【請求項３】
前記予想開始時刻計算部が、前記ジョブに他の特定のジョブの実行が終了してから実行を開始するという待ち合わせ条件が設定されている場合に、前記ジョブの直後に処理されるジョブの開始時刻と前記待ち合わせ条件の対象となるジョブの開始時刻のうちより早い側の時刻に基づいて前記予想開始時刻を計算することを特徴とする、請求項１に記載のジョブフロー管理装置。
【請求項４】
前記ジョブフローを構成する各ノードの前記合流点に代えて分岐点を装備した構成とし、
前記予想開始時刻計算部が、前記ジョブフローの開始点から終点まで各々の前記ノードを辿り、前記時刻制約の設定された前記ノードに到達したら前記予想実行時間を利用して該ノードに該当するジョブの予想開始時刻を算出する機能と、この算出された該ノードの予想開始時刻から前記ジョブフローを逆に辿りつつその他の前記ノードに該当するジョブの前記予想実行時間を計算する機能とを備えたことを特徴とする、請求項１に記載のジョブフロー管理装置。
【請求項５】
ジョブもしくは合流点を示す各ノードによって表されるジョブフローを構成する各々の前記ノードの属性を示すジョブ属性データを予め記憶し、各々の前記ジョブを予め設定された実行装置に対して転送し実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置にあって、
前記ジョブ属性データとして、前記ジョブを必ず実行すべき時刻について示す時刻制約と、前記ジョブを実行すべき時刻の目標について示す目標実行時刻と、前記ジョブの実行にかかると予想される時間である予想実行時間とを含むデータを予め記憶し、
前記ジョブ属性データに予め設定されたスケジュールの通りにスケジュール管理手段が前記ジョブフローの実行開始を指示し、
前記ジョブ属性データに基づいて前記ジョブフローで特定の前記合流点に合流する各ジョブの間で最も遅く実行される順に実行順序判定部が実行順序を判定し、
前記ジョブフローの終点から前記各ノードを辿りつつ前記時刻制約および前記予想実行時間を利用して予想開始時刻計算部が前記実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算し、
算出した前記予想開始時刻が前記ジョブ属性データに予め設定された目標実行時刻と比較して所定の時間以上遅れる場合に警告発信部がユーザに対して警告を発信し、
各々の前記ジョブをジョブ投入手段が前記実行装置に対して転送して実行を依頼すると共にその実行結果を該実行装置から受信することを特徴とするジョブフロー実行開始時刻予測方法。
【請求項６】
ジョブもしくは合流点を示す各ノードによって表されるジョブフローを構成する各々の前記ノードの属性を示し、かつ前記ジョブを必ず実行すべき時刻について示す時刻制約と、前記ジョブを実行すべき時刻の目標について示す目標実行時刻と、前記ジョブの実行にかかると予想される時間である予想実行時間とを含むジョブ属性データを予め記憶し、各々の前記ジョブを予め設定された実行装置に対して転送し実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置にあって、
前記ジョブ属性データに予め設定されたスケジュールの通りに前記ジョブフローの実行開始を指示する手順、
前記ジョブ属性データに基づいて前記ジョブフローで特定の前記合流点に合流する各ジョブの間で最も遅く実行される順に実行順序を判定する手順、
前記ジョブフローの終点から前記各ノードを辿りつつ前記時刻制約および前記予想実行時間を利用して前記実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算する手順、
算出した前記予想開始時刻が前記ジョブ属性データに予め設定された目標実行時刻と比較して所定の時間以上遅れる場合にユーザに対して警告を発信する手順、
および各々の前記ジョブを前記実行装置に対して転送して実行を依頼すると共にその実行結果を該実行装置から受信する手順
をコンピュータに実行させることを特徴とするジョブフロー実行開始時刻予測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はジョブフロー管理装置、ジョブフロー実行開始時刻予測方法およびそのプログラムに関し、特に実行するジョブフローで各ジョブの開始時刻を正確に予測しうるジョブフロー管理装置、ジョブフロー実行開始時刻予測方法およびそのプログラムに関する。
【背景技術】
【０００２】
ジョブフロー管理装置は、複数のバッチジョブ（以後単にジョブという）をフロー状に定義したジョブフローで、各々のジョブをあらかじめ定義された順序の通りに、ネットワークを介して接続された他のコンピュータ装置に転送して実行させるコンピュータ装置である。各々のジョブは、ＵＮＩＸ（登録商標）のシェルスクリプトやウィンドウズ（登録商標）のバッチスクリプトなどのようなスクリプト言語で記述されている。
【０００３】
たとえば、コンピュータの利用者の少ない夜間や休日に、定型化されたバッチ処理を該コンピュータで一括して実行するなどのような用途に、このジョブフローによる処理が利用されることが多い。また、ジョブフローを構成するジョブの中には、目標終了時刻が設定されている場合があり、当該ジョブはその目標終了時刻までに完了している必要がある。具体的には、たとえば「毎日の始業時刻までに前日の売り上げに関するデータの集計が完了している必要がある」などのような場合に、目標終了時刻が設定される。
【０００４】
そのようなジョブが、エラーの発生や処理対象のデータ量の過大などのような理由で目標終了時刻までに完了しなかった場合、該組織の業務に遅滞を発生することとなる。そのため、ジョブフローにおいて特定のジョブの実行開始時刻および実行終了時刻を正確に予測し、それらの時刻が目標時刻より遅れそうな場合には該ジョブフローにより多くのコンピュータ資源を投入して実行を早めるなどのような対策を取ることが重要である。
【０００５】
ジョブフローの実行開始時刻もしくは実行完了時刻の予測について、次のような技術文献がある。このうち、下記の特許文献１には、実行済ジョブの履歴情報を用いて監視スケジュールを更新するというジョブ進捗監視システムが記載されている。特許文献２には、ネットワーク接続された複数の機器で実行される連携フローで、特定のジョブに係る時間設定が変更されても制限時間内にそのフローを処理するという技術が記載されている。特許文献３には、実行ログ情報に蓄積された過去の同一ジョブの実行時刻を利用して、処理終了時刻を予想するという処理実行制御システムが記載されている。
【０００６】
特許文献４には、ジョブチェーン（ジョブフロー）の最遅終了日時を求め、遅れているジョブの一覧を表示するというジョブ監視装置が記載されている。特許文献５には、予め設定された許容遅延時間を超えてジョブフローの実行が遅延する場合に警告を発するというジョブ実行監視方法が記載されている。そして特許文献６には、各タスク（ジョブ）の実行に際してＣＰＵにかかる「余裕度」を計算するという技術が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−００５２０５号公報
【特許文献２】特開２００７−１３３６９６号公報
【特許文献３】特開２００８−０５９４７０号公報
【特許文献４】特開平０５−３４６８６２号公報
【特許文献５】特開平０８−０９５９１６号公報
【特許文献６】特許３６６００８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
実際のジョブフローでは、たとえば合流処理（ＡＮＤ合流、ＯＲ合流など）、分岐処理（ＡＮＤ分岐、ＯＲ分岐など）、待ち合わせ条件、排他制約などのように、ジョブフローを構成する各ジョブの実行に際して種々の制約が設定されていることが多い。上記の特許文献１〜６には、各ジョブの実行に際してそれらの制約が設定されている場合の処理は何ら開示されていない。即ち、それらの制約が設定されている場合には、特許文献１〜６に記載の技術、あるいはこれらを組み合わせた技術では実行開始時刻を正確に予測できない。
【０００９】
本発明の目的は、ジョブフローを構成する各ジョブに対して実行上の制約条件が設定されている場合にも正確に実行開始時刻を予測し、これにより実行が遅延しているジョブについて確実に把握することを可能とするジョブフロー管理装置、ジョブフロー実行開始時刻予測方法およびそのプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明に係るジョブフロー管理装置は、ジョブフローを構成する各々のジョブを予め設定された実行装置に対し転送しその実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置であって、各々のジョブの属性を示すジョブ属性データを予め記憶する記憶手段と、ジョブ属性データに予め設定されたスケジュールの通りにジョブフローの実行開始を指示するスケジュール管理手段と、各々のジョブの予想開始時刻を計算するジョブフロー定義解釈手段と、各々のジョブを実行装置に対して転送して実行を依頼してその実行結果を該ジョブ実行装置から受信するジョブ投入手段と、ジョブの実行状況をユーザに対して表示するイベント通知手段とを備えると共に、ジョブフローが、ジョブもしくは合流点を示す各ノードによって表され、ジョブ属性データが、ジョブの中の特定のジョブを必ず実行する時刻について示す時刻制約と、各々のジョブの実行を開始する時刻の目標について示す目標実行時刻と、各々のジョブの実行にかかると予想される時間である予想実行時間とを含み、ジョブフロー定義解釈手段が、ジョブフローで特定の合流点に合流する各ジョブの間の実行順序をジョブ属性データに基づいて判定する実行順序判定部と、ジョブフローの終点から各ノードを辿りつつ時刻制約および予想実行時間を利用して実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算する予想開始時刻計算部と、この計算された予想開始時刻が目標実行時刻と比較して所定の時間以上遅れる場合にイベント通知手段を介して警告を発信させる警告発信部とを有することを特徴とする。
【００１１】
上記目的を達成するため、本発明に係るジョブフロー実行開始時刻予測方法は、ジョブもしくは合流点を示す各ノードによって表されるジョブフローを構成する各々のノードの属性を示すジョブ属性データを予め記憶し、各々のジョブを予め設定された実行装置に対して転送し実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置にあって、ジョブ属性データとして、ジョブを必ず実行すべき時刻について示す時刻制約と、ジョブを実行すべき時刻の目標について示す目標実行時刻と、ジョブの実行にかかると予想される時間である予想実行時間とを含むデータを予め記憶し、ジョブ属性データに予め設定されたスケジュールの通りにスケジュール管理手段がジョブフローの実行開始を指示し、ジョブ属性データに基づいてジョブフローで特定の合流点に合流する各ジョブの間で最も遅く実行される順に実行順序判定部が実行順序を判定し、ジョブフローの終点から各ノードを辿りつつ時刻制約および予想実行時間を利用して予想開始時刻計算部が実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算し、算出した予想開始時刻がジョブ属性データに予め設定された目標実行時刻と比較して所定の時間以上遅れる場合に警告発信部がユーザに対して警告を発信し、各々のジョブをジョブ投入手段が実行装置に対して転送して実行を依頼すると共にその実行結果を該実行装置から受信することを特徴とする。
【００１２】
上記目的を達成するため、本発明に係るジョブフロー実行開始時刻予測プログラムは、ジョブもしくは合流点を示す各ノードによって表されるジョブフローを構成する各々のノードの属性を示し、かつジョブを必ず実行すべき時刻について示す時刻制約と、ジョブを実行すべき時刻の目標について示す目標実行時刻と、ジョブの実行にかかると予想される時間である予想実行時間とを含むジョブ属性データを予め記憶し、各々のジョブを予め設定された実行装置に対して転送し実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置にあって、ジョブ属性データに予め設定されたスケジュールの通りにジョブフローの実行開始を指示する手順、ジョブ属性データに基づいてジョブフローで特定の合流点に合流する各ジョブの間で最も遅く実行される順に実行順序を判定する手順、ジョブフローの終点から各ノードを辿りつつ時刻制約および予想実行時間を利用して実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算する手順、算出した予想開始時刻がジョブ属性データに予め設定された目標実行時刻と比較して所定の時間以上遅れる場合にユーザに対して警告を発信する手順、および各々のジョブを実行装置に対して転送して実行を依頼すると共にその実行結果を該実行装置から受信する手順をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
上述したように本発明は、ワークフローの終点からノードを逆に辿りつつ、分岐ごとに予想開始時刻を算出するように構成したので、分岐処理などの制約があっても適切に実行順序を判断して予想開始時刻を算出することができ、これによって、各ジョブに対して実行上の制約条件が設定されている場合にも正確に実行開始時刻を予測し、実行が遅延しているジョブについて確実に把握することが可能であるという、優れた特徴を持つジョブフロー管理装置、ジョブフロー実行開始時刻予測方法およびそのプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るジョブフロー実行システムの構成を示す説明図である。
【図２】図１に示したジョブフロー実行システムで実行されるジョブフローの一例を示す説明図である。
【図３】図２で示したジョブフローをリスト構造形式で書き表した説明図である。
【図４】図２で示したジョブフローの各ノードの属性を示すジョブ属性データと、これに付随するリスト構造を示す説明図である。
【図５】図４で示したジョブ属性データ、リスト構造に対して、図１で示したジョブフロー管理装置が行う処理を示すフローチャートである。
【図６】図５で示した処理を行った後のジョブ属性データを示す説明図である。
【図７】本発明の第２の実施形態に係るジョブフロー実行システムの構成を示す説明図である。
【図８】図７に示したジョブフロー実行システムで実行されるジョブフローの一例を示す説明図である。
【図９】図８で示したジョブフローをリスト構造形式で書き表した説明図である。
【図１０】図８で示したジョブフローの各ノードの属性を示すジョブ属性データと、これに付随するリスト構造を示す説明図である。
【図１１】図７で示したジョブフロー定義解釈手段がジョブフローに対して行う処理の一例を示すプログラムのソースリストを示す説明図である。
【図１２】図１１の続きである。
【図１３】図１２の続きである。
【図１４】図１３の続きである。
【発明を実施するための形態】
【００１５】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るジョブフロー管理装置１１は、ジョブフローを構成する各々のジョブを予め設定された実行装置に対し転送しその実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置である。このジョブフロー管理装置１１は、各々のジョブの時刻制約および予想実行時間を含む属性を示すジョブ属性データ１１０を予め記憶する記憶手段２２と、ジョブ属性データに予め設定されたスケジュールの通りにジョブフローの実行開始を指示するスケジュール管理手段１０１と、各々のジョブの予想開始時刻を計算するジョブフロー定義解釈手段１０３と、各々のジョブをジョブ実行装置に対して転送して実行を依頼してその実行結果を該ジョブ実行装置から受信するジョブ投入手段１０４と、ジョブの実行状況をユーザに対して表示するイベント通知手段１０５とを備える。ここで、ジョブフローはジョブもしくは合流点を示す各ノードによって表され、ジョブ属性データ１１０は、ジョブを必ず実行すべき時刻について示す時刻制約と、ジョブを実行すべき時刻の目標について示す目標実行時刻と、ジョブの実行にかかると予想される時間である予想実行時間とを含む。そしてジョブフロー定義解釈手段１０３は、ジョブフローで特定の合流点に合流する各ジョブの間の実行順序をジョブ属性データに基づいて判定する実行順序判定部１０３ｂと、ジョブフローの終点から各ノードを辿りつつ時刻制約および予想実行時間を利用して実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算する予想開始時刻計算部（ＣＲＳＴ計算部１０３ａ）と、計算された予想開始時刻が目標実行時刻と比較して所定の時間以上遅れる場合にイベント通知手段を介して警告を発信させる警告発信部（ＣＲＳＴ判定部１０３ｃ）とを有する。
【００１６】
また予想開始時刻計算部（ＣＲＳＴ計算部１０３ａ）は、ジョブに他の特定のジョブとの間で同時に実行することができないという排他条件が設定されている場合に、実行順序判定部に判定されたジョブと排他条件の対象となるジョブとの間での実行順序に基づき、該当ジョブの中でより遅く実行される側のジョブから実行時刻が重複しないように予想開始時刻を計算する。
【００１７】
そして予想開始時刻計算部（ＣＲＳＴ計算部１０３ａ）は、ジョブに他の特定のジョブの実行が終了してから実行を開始するという待ち合わせ条件が設定されている場合に、ジョブの直後に処理されるジョブの開始時刻と待ち合わせ条件の対象となるジョブの開始時刻のうちより早い側の時刻に基づいて予想開始時刻を計算する。
【００１８】
以上の構成を備えることにより、このジョブフロー管理装置１１は、実行上の制約条件が設定されている場合にも正確に実行開始時刻を予測することが可能となる。
以下、これをより詳細に説明する。
【００１９】
図１は、本発明の第１の実施形態に係るジョブフロー実行システム１の構成を示す説明図である。ジョブフロー実行システム１は、ジョブフロー管理装置１１、ジョブ実行装置１２、およびジョブフロー定義装置１３という各々のコンピュータ装置がネットワーク１０を介して相互に接続されて構成される。
【００２０】
紙面の都合上、図１にはジョブ実行装置１２およびジョブフロー定義装置１３を各１台のみ図示しているが、実際には１つのバッチジョブ実行システム１の中に、複数台のジョブ実行装置１２が含まれていてもよい。また、ジョブフロー定義装置１３は、ジョブフロー管理装置１１もしくはジョブ実行装置１２と同一のコンピュータであっても構わない。
【００２１】
ジョブフロー管理装置１１は、コンピュータプログラムを実行する主体となるＣＰＵ（Central Processing Unit）２１と、プログラムおよびデータを記憶する記憶手段２２と、ネットワーク１０を介して他のコンピュータとデータ通信を行う通信手段２３とを備える。ジョブ実行装置１２も同様に、ＣＰＵ３１と、記憶手段３２と、通信手段３３とを備える。
【００２２】
ジョブフロー定義装置１３も、これらと同様に、ＣＰＵ４１と、記憶手段４２と、通信手段４３とを備えるが、これに加えてユーザにジョブフローの処理結果を表示してユーザからの操作を受け付ける入出力手段４４を備える。
【００２３】
ジョブフロー管理装置１１のＣＰＵ２１では、後述するスケジュール管理手段１０１、ジョブフロー定義保存手段１０２、ジョブフロー定義解釈手段１０３、ジョブ投入手段１０４、イベント通知部１０５が、各々コンピュータプログラムとして実行される。ジョブフロー管理装置１１の記憶手段２２では、後述するジョブ属性データ１１０と、これに付随するリスト構造１１１が記憶される。ジョブ実行装置１２のＣＰＵ３１ではジョブ実行手段１５１が、ジョブフロー定義装置１３のＣＰＵ４１ではフロー定義指示手段２０１が、各々コンピュータプログラムとして実行される。
【００２４】
ジョブフロー定義装置１３のフロー定義指示手段２０１は、入出力手段４４にＧＵＩ（Graphic User Interface）を表示して、ユーザにジョブフローの処理結果を表示すると共に、このＧＵＩを介したユーザからの操作によるジョブフローの定義、ジョブのスクリプト、ジョブの属性設定などの入力を受け付け、この入力内容をジョブフロー管理装置１１に転送する。
【００２５】
ジョブフロー管理装置１１のスケジュール管理手段１０１は、ジョブ属性データ１１０に保存されたジョブフローの実行スケジュールにしたがって、保存されているジョブフローの実行をジョブフロー定義解釈手段１０３に指示する。
【００２６】
ジョブフロー定義保存手段１０２は、フロー定義指示手段２０１から転送されたジョブフロー定義に対して、ジョブフロー定義解釈手段１０３に時刻設定の分析処理を行わせてから、このジョブフロー定義をジョブ属性データ１１０として保存する。
【００２７】
ジョブフロー定義解釈手段１０３は、スケジュール管理手段１０１からの指示を受けて該ジョブフローの内容を解釈した後、これをジョブ投入手段１０４に渡して実行させる。ここでいう「ジョブフローの内容を解釈する」とは、ジョブフローを構成する各ジョブ（ノード）の計算によって導出される開始時刻であるＣＲＳＴ（Calculated Restriction on Start Time）を算出し、算出したＣＲＳＴが所定の時間以上遅れるジョブの有無について判断するという処理である。
【００２８】
より具体的には、ジョブフロー定義解釈手段１０３は、ＣＲＳＴを算出するＣＲＳＴ計算部１０３ａと、ジョブフロー上の合流点に合流する各ノードの実行順序を判定する実行順序判定部１０３ｂと、算出したＣＲＳＴが所定の時間以上遅れる場合にイベント通知部１０５に警告を発信させるＣＲＳＴ判定部１０３ｃとに分かれる。
【００２９】
ジョブフロー管理装置１１のジョブ投入手段１０４は、ジョブフロー定義解釈手段１０３からの指示を受けて、該ジョブフローを構成する各ジョブの内容をジョブ実行装置１２のジョブ実行手段１５１に転送し、そこで実行された各ジョブの結果を受信する。そして、該ジョブフローの実行結果を、ジョブフロー定義保存手段１０２に通知し、ジョブ属性データ１１０として保存させる。
【００３０】
ジョブフロー管理装置１１のイベント通知部１０５は、ジョブフロー定義解釈手段１０３から通知されたイベントの内容について、フロー定義指示手段２０１に転送して入出力手段４４に表示させる。
【００３１】
ジョブ実行装置１２のジョブ実行手段１５１は、ジョブフロー管理装置１１のジョブ投入手段１０４から転送された各ジョブを実行し、その結果をジョブ投入手段１０４に返す。
【００３２】
図２は、図１に示したジョブフロー実行システム１で実行されるジョブフロー３００の一例を示す説明図である。ジョブフロー３００は、１０個のノードから成り、「Ｎ１」から「Ｎ８」までのジョブ（バッチ処理）を行うノードと、フローの合流を処理する２個のノードと、ＯＲ合流点「ＭＰ１」と、ＡＮＤ合流点「ＭＰ２」で構成される。
【００３３】
ＯＲ合流点とは、合流点のノードに向かって矢印が指し示すノードの少なくとも１つが完了すれば、後続のノードの処理を開始する制御を行う。ジョブフロー３００のＯＲ合流点「ＭＰ１」は、「Ｎ３」，「Ｎ４」，「Ｎ５」の各ジョブのうち少なくとも１つが完了すれば、後続の「Ｎ６」の処理を開始することができる。
【００３４】
ＡＮＤ合流点とは、合流点のノードに向かって矢印が指し示すノードの全ての処理が完了すれば、後続のノードの処理を開始する制御を行う。ジョブフロー３００のＡＮＤ合流点「ＭＰ２」は、「Ｎ６」および「Ｎ７」の各ジョブがいずれも完了してから、後続の「Ｎ８」の処理を開始することができる。
【００３５】
また、ジョブフロー３００では、「Ｎ７」は「Ｎ４」の完了を待ち合わせるという待ち合わせ条件が設定されている。「Ｎ４」が完了しない限り、「Ｎ７」の処理が開始されることはない。さらに、「Ｎ５」と「Ｎ７」に対して排他制約が設定されており、「Ｎ５」と「Ｎ７」の処理を同時に実行することは不可能である。「Ｎ５」が開始されている場合、「Ｎ７」は「Ｎ５」の完了を待ち合わせてから開始され、逆に「Ｎ７」が開始されている場合、「Ｎ５」は「Ｎ７」の完了を待ち合わせてから開始されることとなる。
【００３６】
さらに、ジョブフロー３００では、「Ｎ３」に対して終了時刻「Ｘ」の制約が設定されている。そして「Ｎ８」に対して開始時刻「Ｙ」の制約が設定されている。即ち、「Ｎ３」は時刻「Ｘ」までに処理が完了していなければならず、また「Ｎ８」は時刻「Ｙ」までに処理が開始していなければならない。
【００３７】
図３は、図２で示したジョブフロー３００をリスト構造形式で書き表した説明図である。そして図４は、図２で示したジョブフロー３００の各ノードの属性を示すジョブ属性データ１１０と、これに付随するリスト構造１１１を示す説明図である。ＩＤ１１０ａは図２の表示に対応する各ノードの識別子である。タイプ１１０ｂは、各ノードの種類を表す。「Node」は通常のジョブ（バッチ処理）、「OrMeetingPoint」はＯＲ合流点、「AndMeetingPoint」はＡＮＤ合流点を各々示す。
【００３８】
待ち合わせターゲット１１０ｃは、そのノードが待ち合わせ条件における待ち合わせの対象となるノードである場合に値が１となり、そうでない場合はnull値（図４では「−」で表す）となる。待ち合わせソースリスト１１０ｄは、そのノードが待ち合わせ条件における待ち合わせの対象となるノードである場合に、待機対象ノードの情報を格納するリスト構造１１１へのポインタを格納している。対象ノードが２つ以上ある場合は、リスト構造１１１に複数のノードの情報が格納される。
【００３９】
排他制約１１０ｅはノードに対して排他制約が設定されている場合に値が１となり、そうでない場合はnull値となる。排他制約リスト１１０ｆは、排他制約１１０ｅ＝１である場合に、どのノード群が排他関係にあるかを示すリスト構造１１１へのポインタ「Ｐｔ２」「Ｐｔ３」を格納している。
【００４０】
開始時刻（RST: Restriction on Start Time）１１０ｇは、そのノードに開始時刻の制約が設定されている場合に、その時刻を格納する。開始時刻の制約が設定されていない場合にはnull値となる。ＣＲＳＴ１１０ｈは、開始時刻１１０ｇの制約の影響を分析した結果、計算によって導出される該当ノードでの開始時刻の制約を格納する。ＣＲＳＴ−ＩＤ１１０ｉは、ＣＲＳＴ１１０ｈの値がどのノードに由来するものであるか、そのノードのＩＤ１１０ａに対応する値を格納する。
【００４１】
終了時刻（RFT: Restriction on Finish Time）１１０ｊは、そのノードに終了時刻の制約が設定されている場合に、その時刻を格納する。終了時刻の制約が設定されていない場合にはnull値となる。予想実行時間（EET: Estimated Execution Time）１１０ｋは、そのノードが実行するジョブ（バッチ処理）の実行にかかると予想される時間を格納する。各ジョブの予想実行時間は、同一ジョブの前回の実行時間の実績値を利用することができるし、他にも任意の公知技術を適用して算出することができる。
【００４２】
前ノード１１０ｌは、該ノードの前に処理されるノードのＩＤ１１０ａに対応する値を格納する。ただし、該ノードが合流点である場合には、前ノードとして複数のノードが該当するので、前ノード１１０ｌはnull値とする。リスト情報１１０ｍは、前ノードとして複数のノードが該当して前ノード１１０ｌがnull値である場合に、その前ノードを示すリスト構造１１１へのポインタ「Ｐｔ４」「Ｐｔ５」を格納する。
【００４３】
目標時刻（TT: Target Time）１１０ｎは、各ノードのＣＲＳＴ１１０ｈに対する目標値として設定された時刻である。ＣＲＳＴ１１０ｈが目標時刻１１０ｎと比べて所定の時間以上遅れる場合に、ＣＲＳＴ判定部１０３ｃがイベント通知部１０５を介して警告を発信する。
【００４４】
図５は、図４で示したジョブ属性データ１１０、リスト構造１１１に対して、図１で示したジョブフロー管理装置１１が行う処理を示すフローチャートである。フロー定義指示手段２０１からのフロー定義保存指示を受けたジョブフロー定義解釈手段１０３は、まず実行順序判定部１０３ｂが該ジョブフロー内に時刻制限があるか否かを確認する（ステップＳ２０１）。時刻制限がない場合は分析の必要がないため、ジョブフロー定義保存手段１０２が該ジョブフローを保存して（ステップＳ２０８）処理を終了する。
【００４５】
該ジョブフロー内に時刻制限がある場合は、次に実行順序判定部１０３ｂがそのジョブフロー内に排他制約があるか否かを確認する（ステップＳ２０２）。排他制約があれば、実行順序判定部１０３ｂがその排他制約のあるノードのリストを作成して（ステップＳ２０３）、ステップＳ２０４に進む。排他ノードのリストとは、排他実行の関係にあるジョブを実行開始時間が遅いと予定される順番にノード情報をリストに格納したものである。排他制約がなければ、そのままステップＳ２０４に進む。
【００４６】
その後、ＣＲＳＴ計算部１０３ａは各ノードの開始時刻制約を計算する（ステップＳ２０４）。このステップＳ２０４で算出された開始時刻制約が、図４に示したＣＲＳＴ１１０ｈおよびＣＲＳＴ−ＩＤ１１０ｉとなる。そして終了時刻１１０ｊの設定されているノードについて、ＣＲＳＴ判定部１０３ｃがこれと計算されたＣＲＳＴ１１０ｈとを比較する（ステップＳ２０５）。ＣＲＳＴ１１０ｈが、終了時刻１１０ｊと比べて予め与えられた所定の閾値以上遅れている場合には、ＣＲＳＴ判定部１０３ｃがこのことをイベント通知部１０５に通知して、ユーザに対して警告を表示させる（ステップＳ２０６）。
【００４７】
その後、ジョブフロー定義保存手段１０２がこのジョブフローと計算された開始時刻制約情報をジョブ属性データ１１０およびリスト構造１１１として保存して（ステップＳ２０７）処理を終了する。
【００４８】
このステップＳ２０４に係る計算について、図２〜４に示した例を用いてより詳しく説明する。この計算では、ジョブフロー３００の終点から各ノードをたどる形で処理を行う。まず図３の１行目に「End→N8」とあり、図４のジョブ属性データ１１０では開始時刻１１０ｇとして「時刻Ｘ」が設定されている。ノード「Ｎ８」はこれ以外の時刻制約の影響をうけないため、ＣＲＳＴ１１０ｈには「時刻Ｘ」が格納され、ＣＲＳＴ−ＩＤ１１０ｉには「Ｎ８」が格納される。
【００４９】
図３の２行目に「N8→MP2」とあり、またジョブ属性データ１１０でもノード「Ｎ８」の前ノード１１０ｌは「ＭＰ２」となっている。ノード「ＭＰ２」はＡＮＤ合流点であるので、前ノード１１０ｌはnull値であるが、リスト情報１１０ｍにその前ノードを示すリスト構造１１１へのポインタ「Ｐｔ５」が格納されている。リスト構造１１１でポインタ「Ｐｔ５」を参照すると、ノード「Ｎ６」および「Ｎ７」が格納されている。
【００５０】
ノード「Ｎ６」および「Ｎ７」の前ノード１１０ｌは、いずれも「ＭＰ１」である。従って、ジョブフロー定義解釈手段１０３はここでノード「ＭＰ１」に到達するまでの各ノードのＣＲＳＴ１１０ｈを計算する。ノード「Ｎ６」のＣＲＳＴ１１０ｈは、ノード「Ｎ８」のＣＲＳＴ１１０ｈである「時刻Ｘ」から、ノード「Ｎ６」の予想実行時間１１０ｋであるＥＥＴ６を引いた値、即ち「Ｘ−ＥＥＴ６」となる。ノード「Ｎ６」のＣＲＳＴ−ＩＤ１１０ｉには、「Ｎ８」が格納される。
【００５１】
一方、ノード「Ｎ７」は、排他制約１１０ｅの値が１であるので、排他制約が設定されていることがわかる。ＣＲＳＴの計算処理はジョブフロー３００の終点であるノード「Ｎ８」から、各ノードの前ノード１１０ｌを辿りつつ行っていく。ノード「Ｎ７」の排他制約リスト１１０ｆの値は「Ｐｔ３」であり、リスト構造１１１でこのポインタ「Ｐｔ３」を参照すると、ノード「Ｎ５」がこの排他処理の対象となっていることがわかる。
【００５２】
ジョブフロー３００で、ノード「Ｎ５」はノード「Ｎ７」より先に実行されるものであり、またノード「Ｎ５」のＣＲＳＴ１１０ｈがnull値、即ちまだ算出されていないので、予想される実行順序はノード「Ｎ７」が最も遅いことになる。そこで、この「Ｎ７」のＣＲＳＴ１１０ｈを計算する。
【００５３】
ノード「Ｎ７」のＣＲＳＴ１１０ｈは、ノード「Ｎ８」のＣＲＳＴ１１０ｈである「時刻Ｘ」から、ノード「Ｎ７」の予想実行時間１１０ｋであるＥＥＴ７を引いた値、即ち「Ｘ−ＥＥＴ７」となる。ノード「Ｎ７」のＣＲＳＴ−ＩＤ１１０ｉには、「Ｎ８」が格納される。
【００５４】
続いて、ノード「Ｎ６」および「Ｎ７」の先行ノードであるノード「ＭＰ１」のＣＲＳＴ−ＩＤ１１０ｉを分析する。ノード「ＭＰ１」はＡＮＤ合流点であるノード「ＭＰ２」の処理への分岐点である。そのため、ノード「ＭＰ２」を指し示すノード「Ｎ６」および「Ｎ７」のジョブがすべて完了してから次のノードに処理を進める必要がある。即ち、ノード「Ｎ６」ＣＲＳＴ１１０ｈである「Ｘ−ＥＥＴ６」と、ノード「Ｎ７」のＣＲＳＴ１１０ｈであるＸ−ＥＥＴ７のうち、いずれか早い方の時刻を監視に用いる必要がある。
【００５５】
ここで、複数の時刻である時刻１、時刻２…の中の最小値をＭＩＮ（時刻１，時刻２…）と表現すると、ノード「ＭＰ１」のＣＲＳＴ１１０ｈはＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７）である。ノード「ＭＰ１」のＣＲＳＴ−ＩＤ１１０ｉには、「Ｎ８」が格納される。
【００５６】
ノード「ＭＰ１」はＯＲ分岐点であるので、該ノードのリスト情報１１０ｍとして格納されているポインタ「Ｐｔ４」をリスト構造１１１の中から参照する。ポインタ「Ｐｔ４」は「Ｎ５」「Ｎ３」「Ｎ４」の各ノードを指している。そして、ジョブフロー３００の始点であるノード「Ｎ１」で初めてこれらの各経路が一致することになる。従って、ノード「ＭＰ１」から「Ｎ１」に至るまでの各経路で各ノードのＣＲＳＴ１１０ｈを計算する。
【００５７】
ノード「Ｎ５」は、排他制約１１０ｅ＝１であるので、排他制約が設定されていることがわかる。ノード「Ｎ５」の排他制約リスト１１０ｆはポインタ「Ｐｔ２」を示しており、ここからノード「Ｎ５」はノード「Ｎ７」との間での排他制約となっており、前述のようにこの両者の間で予想される実行順序は「Ｎ５」「Ｎ７」の順である。
【００５８】
従って、ノード「Ｎ５」のＣＲＳＴ１１０ｈは、ノード「ＭＰ１」のＣＲＳＴとノード「Ｎ７」のＣＲＳＴの開始時刻条件の早い方、即ちＭＩＮ（ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７），Ｘ−ＥＥＴ７）−ＥＥＴ５で表現される値となる。ノード「Ｎ５」のＣＲＳＴ−ＩＤ１１０ｉは「Ｎ８」が格納される。
【００５９】
ノード「Ｎ２」のＣＲＳＴ１１０ｈは、ノード「Ｎ５」のＣＲＳＴ１１０ｈからＥＥＴ２を引いた値、即ちＭＩＮ（ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７），Ｘ−ＥＥＴ７）−ＥＥＴ５−ＥＥＴ２  で表現される値となる。
【００６０】
また、ノード「Ｎ３」は、終了時刻１１０ｊが設定されている。このため、ノード「Ｎ３」のＣＲＳＴ１１０ｈは終了時刻１１０ｊと、ノード「ＭＰ１」のＣＲＳＴ１１０ｈのうち、開始時刻条件の早い方に基づいて計算される。
【００６１】
したがってノード「Ｎ３」のＣＲＳＴ１１０ｈは、該ノードの終了時刻１１０ｊ＝時刻Ｙとすると、ＭＩＮ（Ｙ，ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７））−ＥＥＴ３  で表現される値となる。ノード「Ｎ３」のＣＲＳＴ−ＩＤ１１０ｉには、採用した開始時刻条件の早い方に基づいて、「Ｎ３」または「Ｎ８」が格納される。
【００６２】
ノード「Ｎ４」は、待ち合わせターゲット１１０ｃが１なので待ち合わせ条件の対象ノードであることがわかる。このノードの待ち合わせソースリスト１１０ｄには、リスト構造１１１へのポインタ「Ｐｔ１」が格納されているので、これをリスト構造１１１で確認すると、待機対象ノードは「Ｎ７」である。ノード「Ｎ４」のＣＲＳＴ１１０ｈは、ノード「Ｎ７」と「ＭＰ１」のうち開始時刻の早い方に基づいて計算される。
【００６３】
したがってノード「Ｎ４」のＣＲＳＴ１１０ｈは、ＭＩＮ（Ｘ−ＥＥＴ７，ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７））−ＥＥＴ４  によって計算され、Ｎ４のＣＲＳＴ−ＩＤ１１０ｉは「Ｎ８」が格納される。
【００６４】
ノード「Ｎ１」は、ＯＲ合流点であるノード「ＭＰ１」の処理への分岐点でもある。ノード「ＭＰ１」はＯＲ合流点であるので、このノードを指し示す「Ｎ３」「Ｎ４」「Ｎ５」のジョブのうちいずれか１つが完了していれば処理が後続ノードに進む。そのため、「Ｎ２」「Ｎ３」「Ｎ４」のＣＲＳＴのうち最も遅い時刻条件を監視に用いることができる。
【００６５】
ここで、複数の時刻である時刻１、時刻２…の中の最大値をＭＡＸ（時刻１，時刻２…）と表現すると、ノード「Ｎ１」のＣＲＳＴ１１０ｈはＭＡＸ（ＭＩＮ（ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７），Ｘ−ＥＥＴ７）−ＥＥＴ５−ＥＥＴ２，ＭＩＮ（Ｙ，ＭＩＮ（ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７））−ＥＥＴ３，ＭＩＮ（Ｘ−ＥＥＴ７，ＭＩＮ（Ｘ−ＥＥＴ６，Ｘ−ＥＥＴ７））−ＥＥＴ４）−ＥＥＴ１によって計算できる。ノード「Ｎ１」のＣＲＳＴ−ＩＤ１１０ｉには、最大値をとる際に採用した値によって「Ｎ３」もしくは「Ｎ８」が格納される。
【００６６】
図６は、図５で示した処理を行った後のジョブ属性データ１１０を示す説明図である。ノード「Ｎ１」〜「Ｎ８」のＣＲＳＴ１１０ｈは、紙面の都合上、表の外に表記した式の通りに求められている。
【００６７】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るジョブフロー実行開始時刻予測方法は、ジョブもしくは合流点を示す各ノードによって表されるジョブフローを構成する各々のノードの属性を示すジョブ属性データを予め記憶し、各々のジョブを予め設定された実行装置に対して転送し実行を依頼すると共にその実行結果を該実行装置から受信するジョブフロー管理装置１１にあって、ジョブ属性データとして、ジョブを必ず実行すべき時刻について示す時刻制約と、ジョブを実行すべき時刻の目標について示す目標実行時刻と、ジョブの実行にかかると予想される時間である予想実行時間とを含むデータを予め記憶し、ジョブ属性データに予め設定されたスケジュールの通りにスケジュール管理手段がジョブフローの実行開始を指示し、ジョブ属性データに基づいてジョブフローで特定の合流点に合流する各ジョブの間で最も遅く実行される順に実行順序判定部が実行順序を判定し、ジョブフローの終点から各ノードを辿りつつ時刻制約および予想実行時間を利用して予想開始時刻計算部が実行順序の遅いジョブから順次該ジョブの予想開始時刻を計算し（図５：ステップＳ２０４）、算出した予想開始時刻がジョブ属性データに予め設定された目標実行時刻と比較して所定の時間以上遅れる場合に警告発信部がユーザに対して警告を発信し（図５：ステップＳ２０５〜２０６）、各々のジョブをジョブ投入手段が実行装置に対して転送して実行を依頼すると共にその実行結果を該実行装置から受信する。
【００６８】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるジョブフロー管理装置１１に実行させるようにしてもよい。
この構成および動作により、本実施形態は以下のような効果を奏する。
【００６９】
本実施形態は、排他制約が多数設定されているジョブフローの排他制約があるノード間について、その実行順序が一番遅いものから順次、開始時刻の制約を計算するように構成されている。かつ、より実行順序が遅いノードにおいてＣＲＳＴ値が計算されていない場合は、その値を計算してから該当ノードにおいて実行時間が重ならないようにＣＲＳＴ値を計算するように構成されている。そのため、排他制約があるフローについても各ノードでの開始時刻の制約に応じて適切にＣＲＳＴを算出することができる。
【００７０】
また、本実施形態ではさらに、待ち合わせ条件が設定されている場合に、その待ち合わせる対象ノードにて待つ側のノードのＣＲＳＴ値と待ち合わせる対象ノードの後続のノードのＣＲＳＴ値を比較して計算するように構成されているため、待ち合わせ条件が設定されているフローについても各ノードでの開始時刻の制約に応じて適切にＣＲＳＴを算出することができる。
【００７１】
（第２の実施形態）
本発明の第２の実施形態に係るジョブフロー管理装置４１１は、前述した第１の実施形態に係るジョブフロー管理装置１１の構成に加えて、ジョブフローを構成する各ノードの合流点に代えて分岐点を装備した構成とし、ジョブフロー定義解釈手段５０３の予想開始時刻計算部（ＣＲＳＴ計算部５０３ａ）が、ジョブフローの開始点から終点まで各々のノードを辿り、時刻制約の設定されたノードに到達したら予想実行時間を利用して該ノードに該当するジョブの予想開始時刻を算出する機能と、この算出された該ノードの予想開始時刻からジョブフローを逆に辿りつつその他のノードに該当するジョブの予想実行時間を計算する機能とを備えるように構成した。
【００７２】
この構成により、ジョブと分岐点とによって表されるジョブフローに対しても、第１の実施形態と同一の効果を得ることができる。
以下、これをより詳しく説明する。
【００７３】
図７は、本発明の第２の実施形態に係るジョブフロー実行システム４０１の構成を示す説明図である。ジョブフロー実行システム４０１は、ジョブフロー管理装置４１１、ジョブ実行装置１２、およびジョブフロー定義装置１３という各々のコンピュータ装置がネットワーク１０を介して相互に接続されて構成される。ジョブ実行装置１２およびジョブフロー定義装置１３は、第１の実施形態と同一である。
【００７４】
ジョブフロー管理装置４１１は、図１に示した第１の実施形態に係るジョブフロー管理装置１１と同じく、ＣＰＵ２１と、プログラムおよびデータを記憶する記憶手段２２と、ネットワーク１０を介して他のコンピュータとデータ通信を行う通信手段２３とを備える。
【００７５】
ジョブフロー管理装置４１１のＣＰＵ２１では、スケジュール管理手段１０１、ジョブフロー定義保存手段１０２、ジョブフロー定義解釈手段５０３、ジョブ投入手段１０４、イベント通知部１０５が、各々コンピュータプログラムとして実行される。ジョブフロー管理装置１１の記憶手段２２では、後述するジョブ属性データ５１０と、これに付随するリスト構造５１１が記憶される。図１で示したジョブフロー管理装置１１との相違点は、ジョブフロー定義解釈手段５０３の動作と、ジョブ属性データ５１０およびリスト構造５１１の内容のみであり、これ以外は全て同一である。
【００７６】
ジョブフロー定義解釈手段５０３は、ＣＲＳＴを算出するＣＲＳＴ計算部５０３ａと、ジョブフロー上の合流点に合流する各ノードの実行順序を判定する実行順序判定部５０３ｂと、算出したＣＲＳＴが所定の時間以上遅れる場合にイベント通知部１０５に警告を発信させるＣＲＳＴ判定部５０３ｃとに分かれる。これらの機能の分担は、原則として図１で示した第１の実施形態でのジョブフロー定義解釈手段１０３と同一である。
【００７７】
図８は、図７に示したジョブフロー実行システム４０１で実行されるジョブフロー６００の一例を示す説明図である。ジョブフロー６００は、１０個のノードから成り、「Ｎ１」から「Ｎ８」までのジョブ（バッチ処理）を行うノードと、フローの合流を処理する２個のノードと、ＯＲ分岐点「ＢＲ１」と、ＡＮＤ分岐点「ＢＲ２」で構成される。
【００７８】
ジョブフロー６００は、第１の実施形態で実行されたジョブフロー３００と、各ジョブ「Ｎ１」〜「Ｎ８」は同一であり、また各ジョブに設定された待ち合わせ条件、排他制約、終了時刻の制約、および開始時刻の制約の各々の内容も同一である。ただし、ジョブフロー３００は各ジョブ「Ｎ１」〜「Ｎ８」とＯＲ合流点「ＭＰ１」、ＡＮＤ合流点「ＭＰ２」で構成されていたのに対し、ジョブフロー６００は各ジョブ「Ｎ１」〜「Ｎ８」とＯＲ分岐点「ＢＲ１」、ＡＮＤ分岐点「ＢＲ２」で構成されている。
【００７９】
ＯＲ分岐点は、分岐した処理が１つのノードに合流する際に、合流点のノードに向かって矢印を指し示すノードの少なくとも１つが完了すれば、合流点のノードの処理を開始する制御を行う。ジョブフロー６００のＯＲ分岐点「ＢＲ１」は、「Ｎ３」，「Ｎ４」，および「Ｎ２」の後続ジョブであり他ジョブと合流する「Ｎ５」の各ジョブのうち少なくとも１つが完了すれば、合流後の「ＢＲ２」の処理を開始することができる。
【００８０】
ＡＮＤ分岐点とは、分岐した処理が１つのノードに合流する際に、合流点のノードに向かって矢印を指し示すノードの全ての処理が完了すれば、合流点のノードの処理を開始する制御を行う。ジョブフロー６００のＡＮＤ分岐点「ＢＲ２」は、「Ｎ６」および「Ｎ７」の各ジョブがいずれも完了するのを待ち合わせてから、合流後の「Ｎ８」の処理を開始することができる。
【００８１】
図９は、図８で示したジョブフロー６００をリスト構造形式で書き表した説明図である。そして図１０は、図８で示したジョブフロー６００の各ノードの属性を示すジョブ属性データ５１０と、これに付随するリスト構造５１１を示す説明図である。ジョブ属性データ５１０とリスト構造５１１の内容は、図４で示したジョブ属性データ１１０とリスト構造１１１とおよそ同一であるので、次に示す相違点以外については名称および参照番号を同一とする。
【００８２】
ジョブ属性データ５１０で、タイプ５１０ｂは各ノードの種類を表す。「Node」は通常のジョブ（バッチ処理）、「OrBrunch」はＯＲ分岐点、「AndBrunch」はＡＮＤ分岐点を各々示す。後続ノード５１０ｌは、該ノードの終了後に処理されるノードのＩＤ１１０ａに対応する値を格納する。ただし、該ノードが分岐点である場合には、後続ノードとして複数のノードが該当するので、後続ノード５１０ｌはnull値とする。リスト情報５１０ｍは、後続ノードとして複数のノードが該当して前ノードがnull値である場合に、その後続ノードを示すリスト構造５１１へのポインタ「Ｐｔ４」「Ｐｔ５」を格納する。
【００８３】
このジョブフロー６００のジョブ属性データ５１０とリスト構造５１１に対してジョブフロー定義解釈手段５０３が行うジョブフローの時刻設定の分析処理および該ジョブフローの保存の処理は、図５に示したフローチャートと同一である。
【００８４】
図１１〜１４は、図７で示したジョブフロー定義解釈手段５０３が図８で示したジョブフロー６００に対して行う処理の一例を示すプログラムのソースリストを示す説明図である。このソースリストはＣ言語をベースとして書かれたものであるが、表記を簡単にするため関数型の厳密な定義や行末の「；」などを省略している。図１１〜１４のリスト内で、「//」で囲われている部分は、処理とは直接関係のないコメント行であるが、実際のその部分で行われている処理について説明するコメントを表記している。プログラムの記述には、これ以外にも任意のプログラム言語を使用することができる。
【００８５】
図１１〜１４のソースリストで、ジョブフローを構成する各ノードを「Node」構造体とし、その中でも現在演算処理の対象として扱っているノードを「CurrentNode」、その一つ前のノードを「PreviousNode」と定義する。また、「Node」構造体には図３および図１０に示した各々の属性がある。ＩＤ１１０ａは「Node.ID」、タイプ５１０ｂは「Node.Type」、待ち合わせターゲット１１０ｃは「Node.WaitingTarget」、待ち合わせソースリスト１１０ｄは「Node.WaitingSourceList」、排他制約１１０ｅは「Node.Exclusion」、排他制約リスト１１０ｆは「Node.ExclusionList」、開始時刻１１０ｇは「Node.RST」、ＣＲＳＴ１１０ｈは「Node.CRST」、ＣＲＳＴ−ＩＤ１１０ｉは「Node.CRST_ID」、終了時刻１１０ｊは「Node.RFT」、予想実行時間１１０ｋは「Node.EET」、リスト情報５１０ｍは「Node.SequenceList」と表される。「CurrentNode」や「PreviousNode」についても同様である。後続ノードに処理対象を移す場合は「Node->Next」とする。
【００８６】
また、図１１〜１４のソースリストでは、「ExclusionList」「WaitingSourceList」というリスト構造を定義している。前者は排他関係にあるノードについて、後者は待ち合わせの対象となるノードについて、共にそのノードとそれに続くリスト（ポインタ）を格納している。
【００８７】
ジョブフロー定義解釈手段５０３は、ジョブフローの最初のノードから再帰的に開始時刻制約を計算する処理を行う。まず関数GetCRST(Node)に対して、引数を「N1」として実行する。
【００８８】
引数「N1」として指定されたノードＮ１には後続ジョブ５１０ｌがあるのでUseNextCRST(Node)が呼ばれ、ノード「Ｎ１」の後続ノード５１０ｌ、即ちノード「ＢＲ１」の開始時刻制約を求める関数GetCRST（BR1）の結果からノード「Ｎ１」の予想実行時間ＥＥＴ１を引いた「GetCRST(BR1)−ＥＥＴ１」によってノード「Ｎ１」の開始時刻制約を計算する。
【００８９】
ノード「ＢＲ１」のタイプ５１０ｂは「OrBrunch」、即ちＯＲ分岐点であるので、GetMaxCRST(SequenceList)が呼ばれる。GetMaxCRSTは、リスト構造５１１に格納されている各ノードに対してGetCRST(Node)を呼び出し、最大値を戻り値とする関数である。リスト構造５１１で、ノード「ＢＲ１」のポインタ「Ｐｔ４」には、「Ｎ２」「Ｎ３」「Ｎ４」の各ノードが格納されているので、これらの各々に対してGetCRST(N2)、GetCRST(N3)、GetCRST(N4)が呼ばれる。
【００９０】
ノード「Ｎ３」では、後続ノード５１０ｌの開始時刻制約GetCRST(BR2)からノード「Ｎ３」の予想実行時間１１０ｋであるＥＥＴ３を引いたものをＣＲＳＴ１１０ｈとして書き込むが、ここでノード「Ｎ３」自体に終了時刻１１０ｊとして終了時刻制約Ｙが設定されている。このため、終了時刻制約についての処理を行う。
【００９１】
終了時刻制約ＹからＥＥＴ３を引いた時刻がGetCRST(BR2)−ＥＥＴ３より小さい場合、終了時刻制約の方がより厳しい条件であることになる。この場合は、UseCurrentNodeRFT(N3)を呼び、その時刻をノード「Ｎ３」のＣＲＳＴ１１０ｈに上書きする。
【００９２】
一方、ノード「Ｎ４」は待ち合わせの対象のノードであるため、GetMinCRST_Waiting(N4)が呼ばれる。この関数では、ノード「Ｎ４」の待ち合わせソースリスト１１０ｄが取り出され、ノード「Ｎ４」の待ち合わせの対象である「Ｎ７」についてGetCRST(N7)が呼ばれる。ノード「Ｎ７」ではノード「Ｎ５」との間の排他制約１１０ｅが設定されているため、GetCRST_Exclusion(N7)が呼ばれる。
【００９３】
処理中のノードを示す構造体であるCurrentNodeには、まず実行順序が遅いノード「Ｎ７」が該当し、ノード「Ｎ７」のＣＲＳＴ１１０ｈはnull値であるため、ノード「Ｎ７」の排他制約１１０ｅが０に設定されて、再度GetCRST(N5)が呼ばれる。GetCRST(N7)の処理では、今度は、排他制約１１０ｅが０に設定されてため、GetCRST(N8)−ＥＥＴ７が計算される。
【００９４】
ノード「Ｎ８」では開始時刻１１０ｇが設定されており、ＣＲＳＴ１１０ｈがnull値であるため、UseCurrentNodeRST(N8)が呼ばれてＣＲＳＴ１１０ｈに時刻Ｘが設定される。それにより、ノード「Ｎ７」のＣＲＳＴ１１０ｈがＸ−ＥＥＴ７として計算されて処理がGetCRST_Exclusion(N7)に戻る。GetCRST_Exclusion(N7)では、CurrentNodeとNodeがいずれも「Ｎ７」となって一致するので、同関数での処理はここで完了し、GetMinCRST_Waiting(N4)に処理が戻る。
【００９５】
GetMinCRST_Waiting(N4)では、ノード「Ｎ７」のＣＲＳＴ１１０ｈと、ノード「ＢＲ２」のＣＲＳＴ１１０ｈが比較され、これらのうち小さい方の値からＥＥＴ４を引いたものが、ノード「Ｎ４」のＣＲＳＴ１１０ｈとして設定される。
【００９６】
ノード「Ｎ２」は、ノード「ＢＲ１」までに後続ノード５１０ｌ「Ｎ５」があるので、ＣＲＳＴ１１０ｈとしてGetCRST(N5)−ＥＥＴ２がＣＲＳＴ値として計算される。GetCRST(N5)の処理では、ノード「Ｎ５」にノード「Ｎ７」との間の排他制約１１０ｅがあるため、GetCRST_Exclusion(N5)が呼ばれる。CurrentNodeとして最初はノード「Ｎ７」が設定されるが、ノード「Ｎ７」のＣＲＳＴ１１０ｈはすでに設定されており、かつCurrentNodeとNodeの各々の構造体が指し示すノードが異なるため、PreviousNodeをノード「Ｎ７」として、CurrentNodeをノード「Ｎ５」とするよう処理が行われる。
【００９７】
この処理の後では、CurrentNodeとNodeの各々の構造体が指し示すノードが一致するので、時刻制約の確認対象となっているノードについて計算が行われる。具体的には、ノード「Ｎ５」の排他制約１１０ｅがnullとなり、ノード「Ｎ５」の後続ノード５１０ｌであるノード「ＢＲ２」とノード「Ｎ７」で各々のＣＲＳＴ１１０ｈが比較され、小さい方の値からＥＥＴ５を引いたものがノード「Ｎ５」のＣＲＳＴ１１０ｈとなる。
【００９８】
ノード「ＢＲ２」ではGetCRST(BR2)が計算されるが、BR2はＡｎｄ分岐点であるため、GetMinCRST(SequenceList)が呼ばれる。GetMinCRSTは、リスト構造５１１に格納されている各ノードに対してGetCRST(Node)を呼び出し、最小値を戻り値とする関数である。
【００９９】
リスト構造５１１で、ノード「ＢＲ２」のポインタ「Ｐｔ５」には、「Ｎ６」「Ｎ７」の各ノードが格納されているので、これらの各々に対してGetCRST(N6)、GetCRST(N7)が呼ばれ、それらの値の中から最小値が選択される。GetCRST(N7)は既に計算済であるので、GetCRST(N6)をノード「Ｎ８」のＣＲＳＴ１１０ｈからノード「Ｎ６」の予想実行時間ＥＥＴ６を引いた「GetCRST(BR1)−ＥＥＴ６」によって計算し、これをノード「ＢＲ２」のＣＲＳＴ１１０ｈとする。
【０１００】
ここまでの計算で、GetCRST(N8)、GetCRST(N6)およびGetCRST(N7)を具体的な数値で求めることができた。GetCRST(Node)として計算された前述の各々の数値は、これによって具体化され、GetCRST(N1)までが具体的な数値として算出される。最終的にノード「Ｎ１」〜「Ｎ８」のＣＲＳＴ１１０ｈは、図６に示した第１の実施形態と同じようにして、同じ値として求められる。
【０１０１】
以上で説明したように、本実施形態では、分岐点によって表現されたジョブフローについても、第１の実施形態で説明した処理と同じように処理を行い、同一の効果を得ることができる。即ち、排他制約や待ち合わせ条件を考慮してＣＲＳＴを算出することが可能となる。
【０１０２】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【０１０３】
本発明は、ジョブフロー実行システムに適用することができる。
【符号の説明】
【０１０４】
１、４０１  ジョブフロー実行システム
１０  ネットワーク
１１、４１１  ジョブフロー管理装置
１２  ジョブ実行装置
１３  ジョブフロー定義装置
２１、３１、４１  ＣＰＵ
２２、３２、４２  記憶手段
２３、３３、４３  通信手段
４４  入出力手段
１０１  スケジュール管理手段
１０２  ジョブフロー定義保存手段
１０３、５０３  ジョブフロー定義解釈手段
１０３ａ、５０３ａ  ＣＲＳＴ計算部
１０３ｂ、５０３ｂ  実行順序判定部
１０３ｃ、５０３ｃ  ＣＲＳＴ判定部
１０４  ジョブ投入手段
１０５  イベント通知部
１１０、５１０  ジョブ属性データ
１１０ａ  ＩＤ
１１０ｂ、５１０ｂ  タイプ
１１０ｃ  待ち合わせターゲット
１１０ｄ  待ち合わせソースリスト
１１０ｅ  排他制約
１１０ｆ  排他制約リスト
１１０ｇ  開始時刻
１１０ｈ  ＣＲＳＴ
１１０ｉ  ＣＲＳＴ−ＩＤ
１１０ｊ  終了時刻
１１０ｋ  予想実行時間
１１０ｌ  前ノード
１１０ｍ、５１０ｍ  リスト情報
１１０ｎ  目標時刻
１１１  リスト構造
１５１  ジョブ実行手段
２０１  フロー定義指示手段
３００、６００  ジョブフロー
５１０ｌ  後続ノード
【図１】
0005445124.tif 000002
【図２】
0005445124.tif 000003
【図３】
0005445124.tif 000004
【図４】
0005445124.tif 000005
【図５】
0005445124.tif 000006
【図６】
0005445124.tif 000007
【図７】
0005445124.tif 000008
【図８】
0005445124.tif 000009
【図９】
0005445124.tif 000010
【図１０】
0005445124.tif 000011
【図１１】
0005445124.tif 000012
【図１２】
0005445124.tif 000013
【図１３】
0005445124.tif 000014
【図１４】
0005445124.tif 000015