(57)【要約】【課題】  作業スケジューリングシステムで，異常終了の場合のスケジュールを低計算コストで動的に変更できるようにする。【解決手段】  作業スケジューリングシステム１は，データ処理の各システムの作業スケジュールを生成する静的スケジューリング部１１と，オペレータ端末４の作業の終了通知を収集するオペレータモニタ部１３と，収集した終了通知が異常終了である場合に，作業スケジュールをもとに，終了通知を収集した作業に後続する異常系作業を選択し，その作業スケジュールにもとづいて現時刻で未実行の正常系作業ごとに，正常系作業の開始を遅延させた場合にその正常系作業に後続する作業の実行を遅延させる可能性を示す開始遅延リスクの有無を評価し，そのリスクがないと評価した正常系作業に対応するオペレータ端末を選択し，選択したオペレータ端末に前記選択した異常系作業を通知するシステムスケジューリング部１２とを備える。【選択図】  図１
2012256307.tif 000002
【特許請求の範囲】
【請求項１】
作業をスケジューリングするために，コンピュータに，
データ処理用システムごとに，該システムが実行するバッチ作業，オペレータが正常時に実行する正常系作業，および，オペレータが異常時に実行する異常系作業を含む複数の作業について，各作業の実行条件ならびに前記複数の作業のうち当該作業の前または後に実行する作業，及び，前記正常系作業ごとに，複数のオペレータ端末のうち当該正常系作業に割り当てるオペレータ端末が対応付けられた，前記データ処理用システムごとの実行スケジュールを示す作業スケジュールが記憶された記憶部を参照して，前記データ処理用システムごとに，前記作業スケジュールをもとにスケジューリングされた正常系作業を選択して，当該作業に対応するオペレータ端末に当該作業を通知する第１の通知処理と，
前記オペレータ端末から，該オペレータ端末に通知した作業の終了通知を収集する処理と，
前記オペレータ端末から収集された前記作業の終了通知が異常終了であるか否かを判定する処理と，
前記作業の終了通知が異常終了であると判定した場合に，前記記憶部を参照して，前記作業スケジュールをもとに，前記終了通知を収集した作業に後続する異常系作業を選択し，前記データ処理用システムごとに前記作業スケジュールにもとづいて現時刻で未実行の正常系作業ごとに，当該正常系作業の開始を遅延させた場合に当該正常系作業に後続する作業の実行を遅延させる可能性を示す開始遅延リスクの有無を評価し，該リスクがないと評価した正常系作業に対応するオペレータ端末を選択して，該選択したオペレータ端末に前記選択した異常系作業を通知する第２の通知処理とを，
実行させるための作業スケジューリングプログラム。
【請求項２】
前記第２の通知処理による前記異常系作業の通知先のオペレータ端末から収集された前記異常系作業の終了通知が正常終了であるか否かを判定する処理と，
前記異常系作業の終了通知が異常終了であると判定した場合に，前記記憶部を参照して，前記作業スケジュールをもとに，当該異常系作業に後続する正常系作業を選択し，該正常系作業の実行条件をもとに該正常系作業の実行可否を判定する処理と，
前記正常系作業が実行可能と判定した場合に前記第１の通知処理を実行し，前記正常系作業が実行不可能と判定した場合に前記第２の通知処理を実行する処理とを，
実行させることを特徴とする請求項１に記載の作業スケジューリングプログラム。
【請求項３】
前記開始遅延リスクの有無を評価する際に，前記現時刻で未実行の正常系作業のうち，該正常系作業に後続する作業がバッチ作業である場合，または，該正常系作業がバッチ作業の後続である場合のいずれかである正常系作業を前記開始遅延リスクがあると評価する
ことを特徴とする請求項１または請求項２に記載の作業スケジューリングプログラム。
【請求項４】
前記記憶部には，前記正常系作業ごとに当該作業を開始可能な時刻，前記異常系作業ごとに当該作業の平均実行時間の情報が対応付けて記憶され，前記正常系作業のリスクを評価する際に，前記スケジューリングされた正常系作業であって，現時刻から該作業の開始可能な時刻までの時間が，前記異常系作業の平均実行時間より短い作業を前記リスクがあると評価する
ことを特徴とする請求項１ないし請求項３のいずれか一項に記載の作業スケジューリングプログラム。
【請求項５】
作業をスケジューリングするために，コンピュータが，
データ処理用システムごとに，該システムが実行するバッチ作業，オペレータが正常時に実行する正常系作業，および，オペレータが異常時に実行する異常系作業を含む複数の作業について，各作業の実行条件ならびに前記複数の作業のうち当該作業の前または後に実行する作業，および，前記正常系作業ごとに，複数のオペレータ端末のうち当該正常系作業に割り当てるオペレータ端末が対応付けられた，前記データ処理用システムごとの実行スケジュールを示す作業スケジュールが記憶された記憶部を参照して，前記データ処理用システムごとに，前記作業スケジュールをもとにスケジューリングされた正常系作業を選択して，当該作業に対応するオペレータ端末に当該作業を通知する第１の通知を行い，
前記オペレータ端末から，該オペレータ端末に通知した作業の終了通知を収集し，
前記オペレータ端末から収集された前記作業の終了通知が異常終了であるか否かを判定し，
前記作業の終了通知が異常終了であると判定した場合に，前記記憶部を参照して，前記作業スケジュールをもとに，前記終了通知を収集した作業に後続する異常系作業を選択し，前記データ処理用システムごとに前記作業スケジュールにもとづいて現時刻で未実行の正常系作業ごとに，当該正常系作業の開始を遅延させた場合に当該正常系作業に後続する作業の実行を遅延させる可能性を示す開始遅延リスクの有無を評価し，該リスクがないと評価した正常系作業に対応するオペレータ端末を選択して，該選択したオペレータ端末に前記選択した異常系作業を通知する第２の通知を行う
ことを特徴とする作業スケジューリング方法。
【請求項６】
作業をスケジューリングする作業スケジューリングシステムであって，
データ処理用システムごとに，該システムが実行するバッチ作業，オペレータが正常時に実行する正常系作業，および，オペレータが異常時に実行する異常系作業を含む複数の作業について，各作業の実行条件ならびに前記複数の作業のうち当該作業の前または後に実行する作業，および，前記正常系作業ごとに，複数のオペレータ端末のうち当該正常系作業に割り当てるオペレータ端末が対応付けられた，前記データ処理用システムごとの実行スケジュールを示す作業スケジュールが記憶された記憶部と，
前記記憶部を参照して，前記データ処理用システムごとに，前記作業スケジュールをもとにスケジューリングされた正常系作業を選択して，当該作業に対応するオペレータ端末に当該作業を通知する第１の通知を行い，前記オペレータ端末から，該オペレータ端末に通知した作業の終了通知を収集し，前記オペレータ端末から収集された前記作業の終了通知が異常終了であるか否かを判定し，前記作業の終了通知が異常終了であると判定した場合に，前記作業スケジュールをもとに，前記終了通知を収集した作業に後続する異常系作業を選択し，前記データ処理用システムごとに前記作業スケジュールにもとづいて現時刻で未実行の正常系作業ごとに，当該正常系作業の開始を遅延させた場合に当該正常系作業に後続する作業の実行を遅延させる可能性を示す開始遅延リスクの有無を評価し，該リスクがないと評価した正常系作業に対応するオペレータ端末を選択して，該選択したオペレータ端末に前記選択した異常系作業を通知する第２の通知を行うシステムスケジューリング部とを，備える
ことを特徴とする作業スケジューリングシステム。
【請求項７】
前記コンピュータに，
実行中のバッチ作業を構成する各ジョブから取得した少なくとも実行中またはリカバリ中または終了を示す状態と処理時間の残り時間とを含む進捗情報，および，予め備えられた前記バッチ作業の各ジョブの処理時間と異常発生確率とを示すバッチ構成情報にもとづいて計算された前記バッチ作業の正常終了確率と予測終了時間とを含む予測通知を取得する予測通知取得処理と，
前記第２の通知処理において，前記未実行の正常系作業の前記開始遅延リスクの有無を評価する際に，実行中の該バッチ作業の前記正常終了確率が予め定められた閾値より小さい場合に，該バッチ作業に後続する正常系作業の前記開始遅延リスクの評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間より短い場合に前記評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間を超える場合に前記評価をリスクなしと評価する処理を，
実行させることを特徴とする請求項１ないし請求項４のいずれか一項に記載の作業スケジューリングプログラム。
【請求項８】
前記コンピュータに，
前記第２の通知処理において，前記未実行の正常系作業の前記開始遅延リスクの有無を評価する際に，前記正常終了確率が０であるバッチ作業について，実行中の該バッチ作業に後続する正常系作業を前記開始遅延リスクの評価の対象から除外し，該除外した正常系作業に割り当てられているオペレータ端末を解除する処理とを，
実行させる実行させることを特徴とする請求項７に記載の作業スケジューリングプログラム。
【請求項９】
前記コンピュータに，
前記予測通知に含まれる正常終了確率が０であるバッチ作業について，作業スケジュールに示された該バッチ作業に後続する正常系作業の開始時刻を，前記予測通知に含まれる予測終了時刻に変更する処理を，
実行させることを特徴とする請求項７または請求項８に記載の作業スケジューリングプログラム。
【請求項１０】
前記コンピュータが，
実行中のバッチ作業を構成する各ジョブから取得した少なくとも実行中またはリカバリ中または終了を示す状態と処理時間の残り時間とを含む進捗情報，および，予め備えられた前記バッチ作業の各ジョブの処理時間と異常発生確率とを示すバッチ構成情報にもとづいて計算された前記バッチ作業の正常終了確率と予測終了時間とを含む予測通知を取得し，
前記第２の通知をする処理において，前記未実行の正常系作業の前記開始遅延リスクの有無を評価する際に，実行中の該バッチ作業の前記正常終了確率が予め定められた閾値より小さい場合に，該バッチ作業に後続する正常系作業の前記開始遅延リスクの評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間より短い場合に前記評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間を超える場合に前記評価をリスクなしと評価する
ことを特徴とする請求項５に記載の作業スケジューリング方法。
【請求項１１】
前記システムスケジューリング部は，
実行中のバッチ作業を構成する各ジョブから取得した少なくとも実行中またはリカバリ中または終了を示す状態と処理時間の残り時間とを含む進捗情報，および，予め備えられた前記バッチ作業の各ジョブの処理時間と異常発生確率とを示すバッチ構成情報にもとづいて計算された前記バッチ作業の正常終了確率と予測終了時間とを含む予測通知を取得し，前記第２の通知をする処理において，前記未実行の正常系作業の前記開始遅延リスクの有無を評価する際に，実行中の該バッチ作業の前記正常終了確率が予め定められた閾値より小さい場合に，該バッチ作業に後続する正常系作業の前記開始遅延リスクの評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間より短い場合に前記評価をリスクありと評価し，前記正常終了確率が予め定められた閾値以上，かつ，現時刻から該正常系作業の開始可能な時刻までの時間が前記異常系作業の平均実行時間を超える場合に前記評価をリスクなしと評価する
ことを特徴とする請求項６に記載の作業スケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，データ処理システムによるバッチ作業とオペレータによる作業を含む作業スケジューリング技術に関する。
【背景技術】
【０００２】
データセンタは，データ処理システムを設置・運用してデータ処理に特化した施設である。データセンタに設定されるデータ処理システムは，予め定められたスケジュールにもとづいて，それぞれ無関係な複数の会社のデータ処理システムのバッチ作業を実行する。また，データ処理システムの運用は，データセンタに配属されるオペレータによって監視される。データ処理システムの各バッチ処理の開始時／完了時またはその処理中に，バッチ作業に合わせて予め指示された作業内容にもとづいて，オペレータが，処理完了の確認や連絡，作業データの設定等の作業を行う。データセンタでは，データ処理システムのバッチ作業とオペレータ作業とが連係して運用されるため，データ処理システムが実行するバッチ作業のスケジューリングとともに，これに合わせて，バッチ作業のデータの設定，確認，連絡等のオペレータによる作業がスケジューリングされて実行されている。
【０００３】
データセンタに配属される複数のオペレータは，データ処理システムごとの作業スケジュールにより，複数のデータ処理システムの作業が割り当てられる。データ処理システムのバッチ作業のスケジュールに影響を与えることなく，オペレータの作業スケジュールを見直して，各オペレータの稼働率を最適化し，もってデータセンタ全体の生産性や作業品質の向上を図ることが求められている。
【０００４】
具体的には，オペレータの作業は予めスケジューリングされるが，バッチ作業や関連作業の終了待ちや作業の連絡待ち等の待機時間をできる限り短くするようなスケジューリングが望まれる。また，オペレータは複数のデータ処理システムのスケジューリングによって作業が割り当てられるため，複雑な作業終了待ちが生じないように作業スケジュールを効率化したり，オペレータの作業負荷を適切にオペレータ間で均等化したり勤務時間内で平準化したりできるようなスケジューリングが望まれる。
【０００５】
従来，作業の内容，処理時間，実行の制約条件，作業の依存関係等の情報をもとに，静的スケジューリング手法を用いて，作業スケジューリングを行うことが知られている。
【０００６】
また，従来，データセンタで作業者と機器とのスケジュールを最適に連動させるため，各作業者の作業時間と機器の占有時間とをもとに，作業可能な作業者数を計算して，作業者数及び重複する作業数に従って機器の利用を割り当て，各作業者の作業状態を監視して，作業者が作業スケジュールから外れた場合に未実行の全作業を再スケジューリングするシステムが知られている。
【０００７】
また，静的スケジューリング手法のほかに動的スケジューリング手法が知られている。ラグランジェ（Ｌａｇｒａｎｇｅ）分解・調整法は，動的スケジューリング手法の１つであり，静的スケジュールを初期値に，周辺方向に，評価関数を変動に対して最適にする解を逐次探索して動的にスケジューリングする手法である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２８５７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
静的スケジューリング手法により決定される作業スケジュールでは，作業が正常に終了することを前提に，正常系作業をスケジューリングしている。そのため，作業が異常終了したり，終了が期限を越えたりするような場合には，異常系の作業に切り替える必要があり，異常状況の収束後に速やかに通常の作業スケジュールに戻す必要がある。
【００１０】
しかし，スケジューリングされる正常系作業についても，作業を開始するための条件，例えばその作業の開始前に終了すべき他の作業（バッチ作業やオペレータの作業）の実際の実行時間等にばらつきがある。そのため，予め実行時間を見積もって作業の実行順序を設定するという静的スケジューリングでは，異常系作業のスケジューリングに対応することができず，異常系の作業の開始以降の作業についての動的スケジューリングが必要となる。
【００１１】
しかし，既知の動的スケジューリング手法は，作業全体を再スケジューリングしなければならず，最適な作業スケジュールを得るためには計算時間が膨大なものになり，計算時間がかかり過ぎて現実的ではないという問題があった。また，動的スケジューリングの計算時間を制限して実際の作業進行に間に合わせようとすると，最適な作業スケジュールが得られない可能性があった。
【００１２】
さらに，異常系作業の実行後に通常系作業の作業スケジュール（静的スケジューリングによる作業スケジュール）に戻したいと考えても，動的スケジューリング手法による作業スケジュールからどのように通常の作業スケジュールに戻すかを自動的に行うことができないという問題があった。
【００１３】
本発明の目的は，バッチ作業やオペレータの作業を含む作業スケジュールにおいて，異常終了による異常系作業が必要となった場合に，異常系作業となった部分のスケジューリングを変更し，異常系作業の終了後に所定の作業スケジュールに自動的に戻ることができる作業スケジューリング技術を提供することである。
【課題を解決するための手段】
【００１４】
本発明の一態様として開示される作業スケジューリングプログラムは，作業スケジュールを管理するために，コンピュータに，１）データ処理用システムごとに，該システムが実行するバッチ作業，オペレータが正常時に実行する正常系作業，および，オペレータが異常時に実行する異常系作業を含む複数の作業について，各作業の実行条件ならびに前記複数の作業のうち当該作業の前または後に実行する作業，および，前記正常系作業ごとに，複数のオペレータ端末のうち当該正常系作業に割り当てるオペレータ端末が対応付けられた，前記データ処理用システムごとの実行スケジュールを示す作業スケジュールが記憶された記憶部を参照して，前記データ処理用システムごとに，前記作業スケジュールをもとにスケジューリングされた正常系作業を選択して，当該作業に対応するオペレータ端末に当該作業を通知する第１の通知処理と，２）前記オペレータ端末から，該オペレータ端末に通知した作業の終了通知を収集する処理と，３）前記オペレータ端末から収集された前記作業の終了通知が異常終了であるか否かを判定する処理と，４）前記作業の終了通知が異常終了であると判定した場合に，前記記憶部を参照して，前記作業スケジュールをもとに，前記終了通知を収集した作業に後続する異常系作業を選択し，前記データ処理用システムごとに前記作業スケジュールにもとづいて現時刻で未実行の正常系作業ごとに，当該正常系作業の開始を遅延させた場合に当該正常系作業に後続する作業の実行を遅延させる可能性を示す開始遅延リスクの有無を評価し，該リスクがないと評価した正常系作業に対応するオペレータ端末を選択して，該選択したオペレータ端末に前記選択した異常系作業を通知する第２の通知処理とを，実行させるためのものである。
【発明の効果】
【００１５】
上記した作業スケジューリングプログラムによれば，コンピュータは，静的スケジューリングにより設定した作業スケジュールを前提に，異常系作業を他の作業に影響を与えないオペレータで対処して，自動的に元の作業スケジュールに戻ることができる。よって，計算時間が少なく，現実的かつ効率的な作業スケジューリングを実現することができる。
【図面の簡単な説明】
【００１６】
【図１】開示する作業スケジューリングシステムの一実施例における構成例を示す図である。
【図２】静的スケジューリング部が生成する情報例を示す図である。
【図３】依存性グラフの例を示す図である。
【図４】作業のリスク評価の例を示す図である。
【図５】作業スケジューリングシステムの全体の処理フローを示す図である。
【図６】スケジューリング調整部の処理（ステップＳ７の調整処理）の処理フローを示す図である。
【図７】システムスケジューリング部の処理フローを示す図である。
【図８】システムスケジューリング部のオペレータ割り当て処理フローを示す図である。
【図９】リスク評価部のリスク評価処理フローを示す図である。
【図１０】リスク評価部のリスク評価リストの生成処理フローを示す図である。
【図１１】第２の実施例における，ジョブ管理システムの構成例を示す図である。
【図１２】バッチ構成データ構成例を示す図である。
【図１３】進捗データの受信例を示す図である。
【図１４】進捗データの例を示す図である。
【図１５】バッチ作業の各フェーズでの予測終了時刻および正常終了確率を説明するための図である。
【図１６】リカバリジョブの処理時間ＴＲｉの計算例を示す図である。
【図１７】予測通知の例を示す図である。
【図１８】進捗管理部の処理フロー例を示す図である。
【図１９】第２の実施例における作業スケジューリングシステムのシステムスケジューリング部での処理フローを示す図である。
【図２０】スケジュール変更処理のより詳細な処理フローを示す図である。
【図２１】スケジュール変更処理による依存性グラフの変更例を示す図である。
【図２２】第２の実施例における作業スケジューリングシステムのリスク評価部の処理フローを示す図である。
【図２３】リスク評価処理のより詳細な処理フローを示す図である。
【図２４】作業スケジューリングシステム１のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１７】
以下，本発明の一態様として開示する作業スケジューリングシステムについて説明する。本例において，開示する作業スケジューリングシステムは，本実施の形態において，データセンタに設置されるものとして説明する。
【００１８】
本実施の形態として説明するデータセンタでは，設定されるデータ処理用システムが，相互に独立するシステムのバッチ作業を予め設定されたスケジュールに従って実行する。また，データセンタに配属される複数のオペレータが，バッチ作業に合わせて設定かつスケジューリングされた作業指示にもとづいて，バッチ作業完了の確認や連絡，作業データの設定等の作業を行う。
【００１９】
まず，本発明者が考察したデータセンタの作業スケジューリングについての考察を説明する。
【００２０】
データセンタで実行される作業は，作業が正常に終了し続けている場合に実行される作業（正常系作業）と，作業が正常に終了しなかった場合に実行される作業（異常系作業）の２系統に大まかに分離される。さらに，オペレータが実行する作業には以下のような特徴がある。
【００２１】
（１）  作業内容として，データ処理システムのジョブ実行の監視に関する作業が多い。そして，作業時間は短く変動があまりないが，作業の締め切り（必ず終了させなければならない時刻）までの時間が比較的長い。そのため，正常系作業に割り当てられているオペレータは，比較的低リスクで他の作業のために融通させることができる。
【００２２】
（２）  異常系作業は，予め想定されており，正常系作業の流れのどの段階に復帰すればよいかがほとんど定まっている。また，異常系作業の作業時間は正常系作業に比べれば長いが，あまり変動しないことから，異常系作業から正常系作業への復帰時刻の予想確度が高い。
【００２３】
（３）  作業スケジュールに組み込まれるバッチ作業は，開始条件（開始時刻や締め切り）が変更しにくいため，異常系作業への変更に伴って大きくスケジューリングを変更することが困難である。
【００２４】
したがって，開示する作業スケジューリングシステムをデータセンタにおけるバッチ作業とオペレータの作業とのスケジューリングに適用することは好適な例であり，コストを削減してデータセンタ全体の生産性を向上させ，オペレータの負担を軽減して作業品質やリスク管理を向上させるという効果を奏する。
【００２５】
〔第１の実施例〕
図１は，開示する作業スケジューリングシステムの一実施例である，第１の実施例における構成例を示す図である。
【００２６】
作業スケジューリングシステム１は，データセンタに備えられ，データ処理用システムごとに作業をスケジューリングし，スケジューリングした各作業を複数オペレータがそれぞれ操作するオペレータ端末４（４ａ，４ｂ，４ｃ，…）に割り当てる。
【００２７】
作業スケジューリングシステム１は，静的スケジューリング部１１，システムスケジューリング部１２，オペレータモニタ部１３，バッチモニタ部１４，スケジューリング調整部１５を備える。
【００２８】
静的スケジューリング部１１は，データ処理用システムで実行される作業の内容，作業で使用される指示（コマンド）等が指定された作業指示書，データ処理用システムで実行されるバッチ作業の内容や実行の制約条件（開始時刻，終了期限等）を設定したバッチ設定情報と，バッチ作業や作業の平均実行時間を記録した作業統計情報とを取得して，既知の静的スケジューリング手法を用いて，データ処理用システムごとの作業スケジュールを生成する。
【００２９】
図２は，静的スケジューリング部１１が生成する情報例を示す図である。
【００３０】
図２（Ａ）は，作業表の例を示す図である。
【００３１】
静的スケジューリング部１１は，データ処理用システムごとに，作業指示書と作業統計情報とをデータ変換して作業表を生成する。作業指示書には，オペレータに割り当てられる作業ごとに，作業を識別する作業ＩＤ，作業の開始時刻，作業終了の期限を示す締め切り時刻，処理するバッチ作業および作業の内容，作業で使用されるコマンド等が指定されている。作業統計情報には，データ処理用システムのバッチ作業やオペレータの作業の実行時間などの統計情報が記録されている。
【００３２】
作業表は，作業ごとに，作業を識別する「作業ＩＤ」，作業が開始可能な時刻を示す「開始時刻」，作業の開始から終了までの平均的な作業時間を示す「平均作業時間（分）」，作業がそれまでに終了しなければならない時刻を示す「締め切り」，実行される作業の内容を示す「作業内容」のデータ項目を含む。
【００３３】
図２（Ｂ）は，バッチ表の例を示す図である。
【００３４】
静的スケジューリング部１１は，データ処理用システムごとに，バッチ設定情報と作業統計情報とをデータ変換してバッチ表を生成する。
【００３５】
バッチ表は，バッチ作業ごとに，処理を識別する「作業ＩＤ」，処理の開始時刻を示す「開始時刻」，処理の開始から終了までの平均的な実行時間を示す「平均実行時間（分）」，処理がそれまでに終了しなければならない時刻を示す「締め切り」，実行される処理を示す「バッチ内容」のデータ項目を含む。
【００３６】
図２（Ｃ）は，作業依存表の例を示す図である。
【００３７】
静的スケジューリング部１１は，データ処理用システムごとに，作業指示書とバッチ設定情報とをデータ変換して作業依存表を生成する。
【００３８】
作業依存表は，作業ごとに，「作業ＩＤ」，その作業に先行して実行される作業を示す「先行作業ＩＤ」，作業の系を示す「正常系／異常系」のデータ項目を含む。
【００３９】
「正常系／異常系」には，その作業が，正常時に実行される作業であることを示す“正常系”，異常処理として実行される作業であることを示す“異常系”のいずれかが設定される。
【００４０】
例えば，作業ＩＤ＝８の作業は，正常系作業であって，作業ＩＤ＝２または７の作業が先行して実行される関係にあることを示す。
【００４１】
図２（Ｄ）は，作業スケジュール表の例を示す図である。
【００４２】
静的スケジューリング部１１は，作業表，バッチ表，作業依存表をもとに，作業スケジュール表を生成する。
【００４３】
作業スケジュール表は，作業ごとに，「作業ＩＤ」，「先行作業ＩＤ」，「正常系／異常系」，「スケジュール時刻」，「平均作業時間」，「締め切り」，「作業内容」，「オペレータＩＤ」を含む。「スケジュール時刻」は，スケジューリングされた開始時刻を示す。「オペレータＩＤ」は，その作業が割り当てられたオペレータ端末４を識別する情報である。
【００４４】
システムスケジューリング部１２（１２ａ，１２ｂ，…）は，データ処理用システムに対応付けて備えられる。
【００４５】
システムスケジューリング部１２（１２ａ，１２ｂ，…）は，対応するデータ処理用システムの作業スケジュールをもとに，スケジューリングした作業の実行命令を実行可能な時間に，指定したオペレータ端末４に通知して，作業の実行を制御する。
【００４６】
システムスケジューリング部１２（１２ａ，１２ｂ，…）は，制御部１２０（１２０ａ，１２０ｂ，…），依存性グラフ部１２１（１２１ａ，１２１ｂ，…），スケジューリングモード部１２２（１２２ａ，１２２ｂ，…），リスク評価部１２３（１２３ａ，１２３ｂ，…），作業キュー１２４（１２４ａ，１２４ｂ，…）を備える。
【００４７】
依存性グラフ部１２１は，作業スケジュールから，各作業の依存性を示すグラフを生成する。
【００４８】
図３は，依存性グラフの例を示す図である。
【００４９】
図３に示す依存性グラフにおいて，数字がつけられた円形で表すノードは，バッチ作業を示し，数字がつけられた矩形で表すノードは，オペレータが実行する作業（正常系作業または異常系作業）を表している。各ノードをつなぐ矢印は，作業間の依存関係を示す。
【００５０】
図３では，作業ＩＤ＝７のバッチ作業が６：００に開始し，処理結果が正常であれば，作業ＩＤ＝１の作業（正常系作業）を実行し，処理結果が異常であれば作業ＩＤ＝２の作業（異常系作業）を実行して作業ＩＤ＝１の作業（正常系作業）へ戻り，次の作業ＩＤ＝８のバッチ作業が実行されることと，作業ＩＤ＝９のバッチ作業が実行され，その処理後（正常終了，異常終了のいずれでも）に作業ＩＤ＝３の作業（正常系作業）が実行されることが示されている。
【００５１】
依存性グラフ部１２１は，さらに，生成した依存性グラフ上の作業から，その時点で依存するノードを持たないルートの作業にアクティブのマークを付け，マークを付けた作業の中でその時点で実行可能となったもののＩＤを作業キュー１２４に格納する。また，依存性グラフ部１２１は，オペレータモニタ部１３やバッチモニタ部１４からの作業終了の通知に同期して，生成した依存性グラフから実行が終了した作業のノード（と不要となった矢印）を削除し，作業スケジュールをもとに，新しい作業を依存性グラフに設定する。
【００５２】
スケジューリングモード部１２２は，オペレータ端末４のイベントの監視結果として，実行命令により実行された作業の終了結果を示す通知が異常終了であった場合，または，作業の締め切りまでに処理が終了しなかった場合に，異常モードを設定する。
【００５３】
リスク評価部１２３は，他のシステムスケジューリング部１２からリスク評価依頼を受け取った場合に，その時点でスケジューリングされている未実行の正常系作業ごとに，開始遅延のリスクの有無を評価する。開始遅延のリスクは，その作業の実行開始を遅延させた場合に関連する他の作業の実行を遅延させる可能性をいい，遅延させる可能性が大きい場合をリスクがあると評価し，遅延させる可能性が小さい場合をリスクがないと評価する。
【００５４】
リスク評価部１２３は，実行されていないアクティブな作業，または，現時刻で実行中の作業が正常終了した後に実行される作業のそれぞれについて，リスクの有無を評価する。リスク評価部１２３は，自システムが異常モードを設定している場合は，リスク評価対象となる作業のすべてについて，リスクがあると評価する。
【００５５】
図４は，作業のリスク評価の例を示す図である。
【００５６】
依存性グラフに示される作業のうち，スケジューリングされて現時刻から一定の時間内に実行可能となるアクティブな作業（作業ＩＤ＝１，３，９，１５），現時刻で実行中の作業（作業ＩＤ＝１，９，１５）が正常終了した後に実行される作業（作業ＩＤ＝１２，２，１６）がリスク評価の対象となる。
【００５７】
例えば，作業ＩＤ＝３の作業のように，その後続の正常系作業の連なりにバッチ作業（作業ＩＤ＝７）が存在する場合は，バッチ作業の前処理作業であるため，「リスクがある」と評価される。また，作業ＩＤ＝１２の作業のように，その作業がバッチ作業の後続の正常系作業の連なりに存在する場合には，バッチ作業の後処理作業であるため，「リスクがある」と評価される。
【００５８】
また，作業ＩＤ＝２の作業のように，その作業の前後にバッチ作業が存在していない場合には，その作業はバッチ作業と無関係であるため，現時刻から開始時刻まで一定時間（例えば，異常系作業の平均作業時間）以上の時間があるときは，「リスクがない」と評価される。また，作業ＩＤ＝１６の作業のように，バッチ作業と無関係な作業であって，その開始時刻を遅らせることができ，かつ，遅らせた開始時刻まで一定時間以上の時間があるものは，「リスクがない」と評価される。
【００５９】
制御部１２０は，システムスケジューリング部１２が内部に備える処理部間の情報，要求等の受け渡しを制御する。また，制御部１２０は，作業キュー１２４に格納された作業ＩＤを順に取り出し，その作業の実行命令をスケジューリング調整部１５へ通知する。
【００６０】
また，制御部１２０は，異常モードが設定された場合に，他のシステムスケジューリング部１２から，各自の作業スケジュールの各作業に対するリスクの有無と，その作業に割り当てられているオペレータＩＤのリストを含むリスク評価通知を受け取り，リスクがないと評価された正常系作業に割り当てられているオペレータＩＤを選択する。
【００６１】
オペレータ端末４は，例えば，以下の順で選択される。
【００６２】
１．異常モードを設定しているシステムスケジューリング部１２によるスケジューリングの作業で，正常復帰待機中のオペレータ端末４を選択する。
【００６３】
２．正常（異常モードを設定していない）なシステムスケジューリング部１２によるスケジューリングの作業で，リスク評価が「リスクがない」，かつ，現時刻から正常系作業のスケジューリングされた開始時刻までの時間が異常系作業の平均作業時間より長い作業で待機中のオペレータ端末４を選択する。
【００６４】
３．正常（異常モードを設定していない）なシステムスケジューリング部１２によるスケジューリングの作業で，リスク評価が「リスクがない」，かつ，現時刻から正常系作業の締め切りまでの時間からその作業の作業時間を差し引いた残り時間が異常系作業の平均作業時間より長い作業で待機中のオペレータ端末４を選択する。
【００６５】
そして，制御部１２０は，選択したオペレータＩＤを割り当てた異常系作業（異常終了した正常系作業に対応する作業）の実行命令をスケジューリング調整部１５へ送る。
【００６６】
制御部１２０は，実行命令に係る異常系作業および後続の異常系作業の正常終了の作業終了通知を，対応する正常系作業の締め切り前に受け取った場合に，その時点で作業スケジューリングに復帰する。または，制御部１２０は，正常に終了した異常系作業に対応する正常系作業の終了の時点で作業スケジュールへ復帰するようにしてもよい。作業スケジュールの復帰と同期して，スケジューリングモード部１２２は，異常モードの設定を解除する。
【００６７】
オペレータモニタ部１３（１３ａ，１３ｂ，１３ｃ，…）は，オペレータ端末４（４ａ，４ｂ，４ｃ，…）に対応付けて備えられ，対応するオペレータ端末４で実行されるイベントの監視結果を収集する。オペレータ端末４から収集されるイベントは，例えば，オペレータ端末４での作業開始，作業終了（正常終了または異常終了）等である。
【００６８】
バッチモニタ部１４は，データ処理用システムのジョブ実行を管理するジョブ実行管理システム３から，各データ処理用システムのイベントの監視結果を収集する。ジョブ実行管理システム３から収集されるイベントは，例えば，データ処理用システムで実行されるバッチ作業に関するバッチ開始通知，バッチ終了通知（正常または異常）等である。
【００６９】
スケジューリング調整部１５は，各システムスケジューリング部１２（１２ａ，１２ｂ，…）から送られた作業の実行命令を調整し，オペレータモニタ部１３，バッチモニタ部１４が得たモニタ情報をシステムスケジューリング部１２へ分配する。
【００７０】
スケジューリング調整部１５は，各システムスケジューリング部１２（１２ａ，１２ｂ，…）から送られた作業の実行命令を受け付けて，受け付けた実行命令を開始時刻にもとづいて調整し，指定されたオペレータ端末４へ通知する。
【００７１】
スケジューリング調整部１５は，調整部１５０，システムスケジューラインタフェース１５１，モニタインタフェース１５２，オペレータ割り当て部１５３を備える。
【００７２】
システムスケジューラインタフェース１５１は，各システムスケジューリング部１２とのインタフェース処理を行う。システムスケジューラインタフェース１５１は，システムスケジューリング部１２からスケジューリングされた作業の実行命令，リスク評価依頼等を受け付け，モニタ情報，リスク評価依頼に対するリスク評価通知等を送る。
【００７３】
モニタインタフェース１５２は，オペレータモニタ部１３とバッチモニタ部１４とのインタフェース処理を行い，オペレータモニタ部１３から作業開始通知，作業終了通知（正常終了または異常終了）を，バッチモニタ部１４からバッチ開始通知，バッチ終了通知（正常終了または異常終了）を受け付ける。
【００７４】
オペレータ割り当て部１５３は，調整部１５０の調整にもとづいて指定されたオペレータ端末４へ作業（作業内容）を通知する。
【００７５】
調整部１５０は，システムスケジューリング部１２から受け付けた作業の実行命令を調整し，オペレータ割り当て部１５３へ作業通知を依頼する。
【００７６】
以下に，作業スケジューリングシステム１の処理の流れを説明する。
【００７７】
図５は，作業スケジューリングシステム１の全体の処理フローを示す図である。
【００７８】
作業スケジューリングシステム１の静的スケジューリング部１１は，データ処理用システムごとに，作業統計情報を読み込み（ステップＳ１），作業指示書を読み込み（ステップＳ２），バッチ設定情報を読み込み（ステップＳ３），全体の作業スケジュールを仮組みする（ステップＳ４）。
【００７９】
システムスケジューリング部１２は，作業スケジュールをもとに依存性グラフを生成し（ステップＳ５），先頭のバッチ作業と作業にアクティブのマークを付ける（ステップＳ６）。スケジューリング調整部１５は，各システムスケジューリング部１２から受け付けた実行命令の調整処理を行う（ステップＳ７）。そして，処理していない作業が残っているか調べ（ステップＳ８），作業が残っていれば（ステップＳ８のＹ），ステップＳ７の処理を繰り返し，作業が残っていなければ（ステップＳ８のＮ），処理を終了する。
【００８０】
図６は，スケジューリング調整部１５の処理（ステップＳ７の調整処理）の処理フローを示す図である。
【００８１】
スケジューリング調整部１５は，バッチモニタ部１４からバッチ作業の状態（バッチ開始／バッチ終了）が通知されたら（ステップＳ１０のＹ），そのバッチ作業が属するシステムの識別情報（システムＩＤ）を取得する（ステップＳ１１）。バッチモニタ部１４からバッチ作業の状態の通知ではなく（ステップＳ１０のＮ），スケジューリング調整部１５は，オペレータモニタ部１３からオペレータの作業の状態（作業開始／作業終了）の通知であれば（ステップＳ１２のＹ），その作業が属するシステムＩＤを取得する（ステップＳ１３）。スケジューリング調整部１５は，取得したシステムＩＤに対応するシステムスケジューリング部１２が処理を実行し（ステップＳ１４），処理を終了する。
【００８２】
図７は，システムスケジューリング部１２での処理フローを示す図である。
【００８３】
システムスケジューリング部１２では，図６に示す処理フローのステップＳ１４の処理として，以下の処理を行う。
【００８４】
制御部１２０は，入力がバッチ作業の終了通知であれば（ステップＳ２０のＹ），ステップＳ２２の処理へ進み，バッチ作業の終了通知でなければ（ステップＳ２０のＮ），オペレータの作業の終了通知であるかを調べる（ステップＳ２１）。オペレータの作業の終了通知であれば（ステップＳ２１のＹ），ステップＳ２２の処理へ進み，作業の終了通知でなければ（ステップＳ２１のＮ），ステップＳ２１０の処理へ進む。
【００８５】
制御部１２０は，ステップＳ２２の処理で，依存性グラフから該当するバッチ作業または作業を削除し（ステップＳ２２），該当する終了通知が異常終了であれば（ステップＳ２３のＹ），依存性グラフでその作業の異常系の後続の作業にアクティブをマークする（ステップＳ２４）。終了通知が異常終了でなければ（ステップＳ２３のＮ），制御部１２０は，依存性グラフでその作業の正常系の後続の作業にアクティブをマークする（ステップＳ２５）。
【００８６】
制御部１２０は，入力がオペレータの作業の終了通知でなければ（ステップＳ２１のＮ），入力がバッチ作業の開始通知であるかを調べる（ステップＳ２１０）。バッチ作業の開始通知であれば（ステップＳ２１０のＹ），ステップＳ２１１の処理へ進み，バッチ作業の開始通知でなければ（ステップＳ２１０のＮ），ステップＳ２２０の処理へ進む。
【００８７】
依存性フラグ部１２１は，依存性フラグの該当するバッチ作業に実行中をマークする（ステップＳ２１１）。さらに，依存性フラグ部１２１は，オペレータの作業の開始通知であれば（ステップＳ２２０のＹ），依存性フラグの該当する作業に実行中をマークする（ステップＳ２１２）。
【００８８】
さらに，スケジューリングモード部１２２は，開始通知が異常系作業であれば（ステップＳ２１３のＹ），異常モードを設定して（ステップＳ２１４），ステップＳ２６の処理へ進む。スケジューリングモード部１２２は，開始通知が異常系作業でなければ（ステップＳ２１３のＮ），さらに，作業が締め切りを超過しているかを調べる（ステップＳ２１５）。スケジューリングモード部１２２は，作業が締め切りを超過していれば（ステップＳ２１５のＹ），ステップＳ２１４の処理を行い，作業が締め切りを超過していなければ（ステップＳ２１５のＮ），異常モードを解除して（ステップＳ２１６），ステップＳ２６の処理へ進む。
【００８９】
リスク評価部１２３は，オペレータの作業の開始通知でなければ（ステップＳ２２０のＮ），リスク評価の依頼であるかを調べ（ステップＳ２２１），リスク評価の依頼であれば（ステップＳ２２１のＹ），リスク評価を行い（ステップＳ２２２），ステップＳ２６の処理へ進む。リスク評価の依頼でなければ（ステップＳ２２１のＮ），そのままステップＳ２６の処理へ進む。
【００９０】
その後，制御部１２０は，依存性グラフから，実行可能となったアクティブの作業を作業キュー１２４にコピーし（ステップＳ２６），オペレータ割り当て処理を行い（ステップＳ２７），処理を終了する。
【００９１】
図８は，システムスケジューリング部１２でのオペレータ割り当て処理フローを示す図である。
【００９２】
制御部１２０は，図７に示す処理フローのステップＳ２７により，以下の処理を行う。
【００９３】
制御部１２０は，作業キュー１２４に作業があれば（ステップＳ３０のＹ），予め指定されたオペレータ端末４が待機中であるか調べる（ステップＳ３１）。指定されたオペレータ端末４が待機中であれば（ステップＳ３１のＹ），制御部１２０は，静的スケジューリング部１１の作業スケジュールで指定されているオペレータ端末４に作業を割り当てる（ステップＳ３２）。
【００９４】
指定されたオペレータ端末４が待機中でなければ（ステップＳ３１のＮ），制御部１２０は，スケジューリングモードで異常モードが設定されていなければ（ステップＳ３３のＮ），スケジューリングモードに異常モードを設定する（ステップＳ３４）。スケジューリングモードで異常モードが設定されていれば（ステップＳ３３のＹ），制御部１２０は，作業スケジュールで割り当てられている予定で，現在待機中のオペレータ端末のリストを作成する（ステップＳ３５）。
【００９５】
リスク評価部１２３は，作成したリストが空であれば（ステップＳ３６のＹ），他のシステムスケジューリング部１２にリスク評価を依頼する（ステップＳ３７）。システムスケジューリング部１２は，収集したリスク評価の結果から，リスクがないと評価された作業に割り当てられているオペレータ端末４で，かつ，リスクがあると評価された作業に割り当てられていないオペレータ端末４の中から１つを選択して作業に割り当て（ステップＳ３８），処理を終了する。
【００９６】
システムスケジューリング部１２は，作成したリストが空でなければ（ステップＳ３６のＮ），リストされたオペレータ端末４で待機時間が一番長いものを作業に割り当て（ステップＳ３９），処理を終了する。
【００９７】
このように，作業が割り当てられているオペレータであっても，その作業についてのリスク評価を行い，リスクがないと評価されれば，異常モードの作業に割り当てることが可能となる。したがって，従来の静的スケジューリングのように，予め実行時間を見積もって作業全体の実行順序を設定したり，ラグランジェ（Ｌａｇｒａｎｇｅ）分解・調整法のように，静的スケジュールを初期値に，周辺方向に，評価関数を変動に対して最適にする解を逐次探索して作業全体の動的なリスケジューリングを行うことなく，静的スケジューリングにより作成されたスケジュールは維持したまま，異常作業に伴うリスケジューリング範囲を局所に留め，この局所に閉じたスケジューリングを実現することが可能となる。
【００９８】
図９は，リスク評価部１２３のリスク評価処理フローを示す図である。
【００９９】
リスク評価部１２３は，リスク評価の依頼を受け付けて，以下の処理を行う。
【０１００】
リスク評価部１２３は，自システムに異常モードが設定されているかを調べて（ステップＳ４０），異常モードが設定されていれば（ステップＳ４０のＹ），作業キュー１２４内の実行可能な作業をすべてリスクがある作業としてリストに追加し，リスク評価として通知する（ステップＳ４１）。異常モードが設定されていなければ（ステップＳ４０のＮ），リスク評価部１２３は，リスク評価対象となる全作業に対し，遅延リスクの有無を判定して，リストを作成し（ステップＳ４２），リスク評価として，作成したリストを通知する（ステップＳ４３）。
【０１０１】
図１０は，リスク評価部１２３のリスク評価リストの生成処理フローを示す図である。
【０１０２】
リスク評価部１２３は，図９の処理フローのステップＳ４２の処理として，以下の処理を行う。
【０１０３】
リスク評価部１２３は，依存性グラフ内で，アクティブであるが実行中でない作業，または実行中の作業の正常終了後に実行予定となる作業の中から，新しい作業を選択する（ステップＳ５０）。リスク評価部１２３は，選択する新しい作業がなくなるまで（ステップＳ５１のＹ），この作業の後続の正常系作業の連なりにバッチ作業があるかを探す（ステップＳ５２）。そして，後続の正常系作業の連なりにバッチ作業がなければ（ステップＳ５３のＮ），リスク評価部１２３は，さらに，この作業の前に実行中のバッチ作業があるかを探す（ステップＳ５４）。前に実行中のバッチ作業がなければ（ステップＳ５５のＮ），リスク評価部１２３は，その作業の開始までに対応する異常系作業の実行時間があるかを調べる（ステップＳ５６）。その作業の開始までに異常系作業の実行時間がなければ（ステップＳ５６のＮ），リスク評価部１２３は，その作業の開始時刻を遅らせ，遅らせた開始時刻までに異常系作業の実行時間があるかを調べる（ステップＳ５７）。遅らせた開始時刻までに異常系作業の実行時間があれば（ステップＳ５７のＹ），この作業をリスクなしの作業としてリスク評価のリストに追加して（ステップＳ５８），ステップＳ５０の処理へ戻る。
【０１０４】
後続の正常系作業の連なりにバッチ作業があるか（ステップＳ５３のＹ），または，前に実行中のバッチ作業があるか（ステップＳ５５のＹ），または，遅らせた開始時刻までに異常系作業の実行時間がなければ（ステップＳ５７のＮ），この作業をリスクありの作業としてリスク評価のリストに追加する（ステップＳ５９）。
【０１０５】
〔第２の実施例〕
次に，開示する作業スケジューリングシステムの別の一実施例である，第２の実施例について説明する。
【０１０６】
第２の実施例において，作業スケジューリングシステム１は，ジョブ実行管理システム３から，データ処理用システムで実行される各バッチ作業の進捗情報を取得し，第１の実施例に比べてより高精度の予測を実行してオペレータの作業の動的スケジューリングを構築できるようにする。
【０１０７】
第１の実施例では，作業スケジューリングシステム１は，ジョブ実行管理システム３からバッチ作業の開始／終了の通知を受けるだけであるため，ジョブ実行管理システム３側の構成改変が不要であるものの，データ処理用システムであるバッチ作業が実行されている間は，そのバッチ作業が正常終了するか異常終了するか分からない。
【０１０８】
そのため，スケジューリングされた後続の作業のリスク評価が高いままで固定されてしまい，実際にはほとんど生じない異常終了に備えて，後続の作業に対するオペレータの確保が行われる。その結果，融通可能として検出されるオペレータ数が少なく，最適化の余地が少ない場合がある。
【０１０９】
特に，バッチ作業中に通常のジョブが異常終了してリカバリ処理が実行されている場合には，バッチ作業が異常終了となり，さらに，リカバリ処理に要する時間が数十分〜数時間になることがある。したがって，このバッチ作業の後続の正常系作業に割り当てられているオペレータを解放したり，オペレータがリカバリ処理の間待機し続けることを避けたりできるが，作業スケジューリングシステム１は，バッチ作業の終了通知を受けるまで，バッチ作業が通常の実行中であるのかリカバリ中であるのかを知ることができない。
【０１１０】
第２の実施例では，バッチ作業の実行を管理するジョブ実行管理システム３側で，各バッチ作業の進捗情報として，バッチ作業が正常終了する確率（正常終了確率）および予測する終了時刻（予測終了時刻）を算出し，作業スケジューリングシステム１に通知する。よって，作業スケジューリングシステム１は，ジョブ実行管理システム３から得た高精度の予測情報によりリスク評価の精度を向上させ，融通可能なオペレータをより多く抽出することができ，全体としてより最適な動的スケジュールを作成することができる。
【０１１１】
第２の実施例において，作業スケジューリングシステム１の構成例は，第１の実施例における構成例とほぼ同じであるが，ジョブ実行管理システム３が，各バッチ作業の正常終了確率および予測終了時刻を算出する処理部を備える点が異なる。また，ジョブ実行管理システム３の構成の相違に伴い，作業スケジューリングシステム１のバッチモニタ部１４，制御部１２０，リスク評価部１２３の処理動作が，第１の実施例における処理と若干異なる。
【０１１２】
図１１は，第２の実施例における，ジョブ管理システム３の構成例を示す図である。
【０１１３】
ジョブ管理システム３は，進捗管理部３１を備える。進捗管理部３１は，データ処理用システムにおいてバッチ作業を実行中のジョブ５から進捗データを取得する。
【０１１４】
進捗管理部３１は，バッチ構成記憶部３１０，進捗データ受信部３１１，進捗データ記憶部３１２，時刻・確率計算部３１３，タイマ３１４，および予測通知部３１５を備える。
【０１１５】
バッチ構成記憶部３１０は，バッチ作業を構成する各ジョブに関するバッチ構成データを記憶する。バッチ構成データは，各バッチ作業を構成する各ジョブの，異常発生確率，平均処理時間などを記録するデータである。
【０１１６】
進捗データ受信部３１１は，例えばＡＰＩを用いて，ジョブ５からそのジョブの進捗状況を示す進捗データを受信し，進捗データを受信時刻に対応付けて進捗データ記憶部３１２に蓄積する。
【０１１７】
時刻・確率計算部３１３は，タイマ３１４により通知される所定の契機をトリガとして，進捗データ記憶部３１２に記憶されている進捗データをもとに，予測終了時刻および正常終了確率を計算する。
【０１１８】
予測通知部３１５は，予測終了時刻および正常終了確率を示す予測通知をバッチモニタ部１４へ通知する。
【０１１９】
図１２は，バッチ構成データ構成例を示す図である。
【０１２０】
バッチ構成記憶部３１０が記憶するバッチ構成データは，バッチ作業のジョブごとに，「異常発生確率」および「平均処理時間」が記録される。異常発生確率は，そのジョブが異常終了する確率を示し，例えば，過去の実行回数と生じた異常回数にもとづいて算出された値，設計者によって設定された値などである。平均処理時間は，そのジョブの実行に要する時間を示し，例えば，過去の実行時の処理時間の平均値である。
【０１２１】
次に，進捗管理部３１の処理を，より詳細に説明する。
【０１２２】
図１３は，進捗データの受信例を示す図である。
【０１２３】
あるバッチ作業が，開始から終了までに順に実行するジョブ５として，本来のジョブである「処理１」，「処理２」，…，「処理ｎ」，および，各ジョブのリカバリのための「リカバリ処理１」，「リカバリ処理２」，…，「リカバリ処理ｎ」で構成されているとする。この場合に，データ処理用システムは，バッチ作業を開始して「処理１」を実行し，「処理１」が正常終了した場合には次の「処理２」を実行し，「処理１」が異常終了した場合には「リカバリ処理１」を実行してエラーコードを出力する。
【０１２４】
「処理１」から「処理ｎ」までの処理が実行された場合には，バッチ作業は正常終了となり，リカバリジョブが実行された場合には，そのリカバリジョブの終了後にバッチ作業が終了し，異常終了となる。
【０１２５】
バッチ作業で実行中のジョブ５は，進捗通知機能を備えて，ＡＰＩを介して自ジョブの進捗データを進捗管理部３１の進捗データ受信部３１１へ通知する。進捗データは，例えば，バッチ作業およびジョブ５の識別情報，自ジョブの状態（実行中，リカバリ中，正常終了，異常終了など），処理に必要な残り時間，進捗の度合い等を含む。
【０１２６】
進捗データ受信部３１１は，受信した進捗データを受信時刻と対応付けて進捗データ記憶部３１２に記憶する。
【０１２７】
図１４は，進捗データ記憶部３１２に記憶される進捗データの例を示す図である。
【０１２８】
進捗データは，バッチ作業を識別する「バッチＩＤ」，ジョブを識別する「処理ＩＤ」，受信日時を示す「タイムスタンプ」，ジョブの状態（実行中，正常終了，異常終了，リカバリ中など）を示す「状態」，進捗の度合い（パーセント）で示す「進捗」などのデータ項目を有する。ジョブの状態の「実行中」は本来のジョブの実行中を示し，「リカバリ中」はリカバリジョブの実行中を示す。
【０１２９】
図１４に示す進捗データの第１行目のデータは，バッチＩＤ＝１のバッチ作業において，処理ＩＤ＝１のジョブが，実行中かつジョブの９０％が処理済みの状態であることを表している。また，第４番目のデータは，バッチＩＤ＝２のバッチ作業において，処理ＩＤ＝Ｒ−１のジョブが，実行中（リカバリ中）かつリカバリジョブの２０％が処理済みの状態であることを表している。
【０１３０】
時刻・確率計算部３１３は，タイマ３１４の所定時間ごとのタイム通知をトリガに，バッチ構成記憶部３１０のバッチ構成データおよび進捗データ記憶部３１２の進捗データをもとに，予測終了時刻および正常終了確率を計算する。
【０１３１】
図１５は，バッチ作業の各フェーズでの予測終了時刻および正常終了確率を説明するための図である。
【０１３２】
あるバッチ作業において，通常のジョブ５が「データ入力」，「前処理Ａ」，「前処理Ｂ」，…，「前処理データ受け取り」，「後処理Ａ」，「後処理Ｂ」，…，「データ出力」の順で実行されるように構成され，また，各ジョブ５に対応する「リカバリ処理１」，…，「リカバリ処理ｎ」が構成されているとする。通常のジョブ５の実行期間を，フェーズと呼び，１番目のジョブ５から，順に，フェーズ１，フェーズ２，フェーズ３，…，フェーズｎとする。
【０１３３】
図１５に示すＴｉ（１，…，ｋ，…，ｎ）は，ｉ番目のジョブの平均処理時間である。Ｐｉ（１，…，ｋ，…，ｎ）は，ｉ番目のジョブの異常発生確率である。ジョブの平均処理時間と異常発生確率は，当該ジョブの実績値から計算され，予め，バッチ構成データとして記録されている。
【０１３４】
フェーズｋにおいて，時刻・確率計算部３１３は，例えば以下のようにして，フェーズｋでの予測終了時刻および正常終了確率を求める。
【０１３５】
（１）  フェーズｋにおいて正常終了時，すなわち，ジョブ「前処理データ受取り」が実行中である場合に，正常終了確率は，そのフェーズ以降の（１−異常終了確率）の総乗により求める。予測終了時刻は，現時刻に未実行のジョブ処理時間の総和を加算して求める。
【０１３６】
正常終了確率＝Πｎｉ＝ｋ（１−Ｐｉ）
予測終了時刻＝現時刻＋Σｎｉ＝ｋＴｉ
（２）  フェーズｋにおいて異常終了時，すなわち，リカバリジョブ「前処理データ受け取り」が実行中である場合に，正常終了確率を“０”とする。予測終了時刻は，現時刻とフェーズｋのジョブ５に対するリカバリジョブの処理時間であるリカバリ時間ＴＲｋとをもとに求める。
【０１３７】
終了時刻＝現時刻＋リカバリ時間ＴＲｋ
ここで，リカバリ時間ＴＲｋは，設定値，または，リカバリジョブが対応付けられている通常のジョブの処理時間を用いて求めた値であってもよい。
【０１３８】
図１６は，リカバリジョブの処理時間ＴＲｉの計算例を示す図である。
【０１３９】
あるバッチ作業において，ジョブ５の各ジョブが，フェーズ１で「バックアップ処理１」，フェーズ２で「データ入力」，フェーズ３で「バックアップ処理２」，フェーズ４で「後処理２」，フェーズ５で「後処理２」，…，フェーズｎ＋３で「後処理ｎ」，フェーズｎ＋４で「データ出力」で構成されているとする。また，リカバリジョブとして，フェーズ１で「リカバリ処理１（何もしないで終了）」，フェーズ２で「リカバリ処理２（バックアップ処理１を巻き戻す処理）」，フェーズ３で「リカバリ処理２（バックアップ処理２を巻き戻す処理）」…で構成されているとする。
【０１４０】
時刻・確率計算部３１３は，進捗データ記憶部３１２を参照して，各ジョブの終了時に，その処理時間を記録しておき，フェーズｋでの予測値を計算する場合に，以下のようにして求める。
【０１４１】
時刻・確率計算部３１３は，進捗データ記憶部３１２を参照し，フェーズｋのジョブ５の「状態」が“リカバリ中”であれば，異常処理時と判断し，記録していた通常ジョブの処理時間を用いて計算する。
【０１４２】
リカバリ時間ＴＲｋ＝（バックアップ処理１の処理時間＋バックアップ処理２の処理時間）×（１＋調整係数α），
もしくは，時刻・確率計算部３１３は，最初に「バックアップ処理を巻き戻す処理」リカバリジョブが実行される際に，巻き戻し処理の処理量と処理時間とを記録しておき，リカバリ時間ＴＲｋを以下のようにして計算する。
【０１４３】
リカバリ時間ＴＲｋ＝Σｉ（巻き戻すテーブルｉの処理時間），
ここで，テーブルｉは，リカバリ対象のテーブル変数を表す。
【０１４４】
時刻・確率計算部３１３は，リカバリ時間ＴＲｋの計算に用いるバックアップ処理の処理量と処理時間を，１回目のリカバリ処理の場合にのみ記録し，２回目以降のリカバリ処理の場合には，記録した値にデータ増加率を掛けた値を用いてリカバリ時間ＴＲｋを計算するようにしてもよい。または，時刻・確率計算部３１３は，バックアップ処理の実行の度に処理量と処理時間を記録して，リカバリ時間ＴＲｋの計算に用いるようにしてもよい。
【０１４５】
なお，時刻・確率計算部３１３は，正常終了確率＝０とする。また，時刻・確率計算部３１３は，フェーズｋのジョブ５の「状態」が“実行中”であれば，正常処理時と判断して，
正常終了確率＝Πｎ＋４ｉ＝ｋ（１−Ｐｉ）
予測終了時刻＝現時刻＋Σｎ＋４ｉ＝ｋＴｉ
とする。
【０１４６】
予測通知部３１５は，時刻・確率計算部３１３で計算された正常終了確率と予測終了時刻を得て，これらを含む予測通知を生成し，作業スケジューリングシステム１のバッチモニタ部１４に送信する。
【０１４７】
図１７は，予測通知の例を示す図である。
【０１４８】
予測通知は，バッチ作業を識別する「バッチＩＤ」，算出された予測終了時刻を示す「予測終了時刻」が算出された正常終了確率を示す「正常終了確率」のデータ項目を有する。
【０１４９】
図１７（Ａ）に示す予測通知は，バッチＩＤ＝１のバッチ作業は，予測される終了時刻が，２０１１年１０月１０日の０９：５５：１１であり，正常終了確率が９８％であることを表す。この通知によって，このバッチ作業が，ほぼ正常終了する見込みであることが分かる。
【０１５０】
また，図１７（Ｂ）に示す予測通知は，バッチＩＤ＝２のバッチ作業は，予測される終了時刻が，２０１１年１０月１０日の１１：０６：３９であり，正常終了確率０％であることを表す。これにより，このバッチ作業が，実行中のリカバリジョブの終了後にバッチ作業が異常終了することが分かる。
【０１５１】
したがって，作業スケジューリングシステム１は，上記のバッチ作業について，より高い精度で予測された終了時刻の情報を得ることができる。また，作業スケジューリングシステム１は，実際のバッチ終了通知を取得する前に，作業バッチＩＤ＝１のバッチ作業については「バッチ終了通知（正常）」が通知される可能性が高いこと，作業バッチＩＤ＝２のバッチ作業については「バッチ終了通知（異常）」が通知されることを判断する情報を得ることができる。よって，作業スケジューリングシステム１は，高精度の進捗情報にもとづいて，オペレータの作業スケジュールを動的に再構築することができる。
【０１５２】
図１８は，進捗管理部３１の処理フロー例を示す図である。
【０１５３】
進捗管理部３１は，データ受信を待機し，進捗データ受信部３１１が，ジョブ５から進捗データを受信すると（ステップＳ６０のＹ），進捗データ受信部３１１は，受信した進捗データを進捗データ記憶部３１２に書き込み（ステップＳ６１）。ステップＳ６０の処理へ戻る。進捗データの受信がなく（ステップＳ６０のＮ），時刻・確率計算部３１３がタイマ３１４からタイムを受信すると（ステップＳ６２のＹ），予測終了時刻と正常終了確率を計算する（ステップＳ６３）。次に，予測通知部３１５は，計算された予測終了時刻と正常終了確率を含む予測通知を生成して，バッチモニタ部１４へ送信して（ステップＳ６４），ステップＳ６０の処理へ戻る。
【０１５４】
図１９は，第２の実施例における作業スケジューリングシステム１のシステムスケジューリング部１２での処理フローを示す図である。
【０１５５】
図１９に示す処理フローは，図７に示す処理フローに，２つの処理（Ｓ２３０，Ｓ２３１）が追加されているものである。したがって，上記２つの処理ステップ以外の処理については，説明を省略する。
【０１５６】
ステップＳ２３０の処理は，ステップＳ２０の処理に先立って行われる。ステップＳ２３０の処理において，制御部１２０は，入力がバッチ作業の予測通知であれば（ステップＳ２３０のＹ），ステップＳ２３１の処理へ進む。
【０１５７】
ステップ２３１の処理において，依存性グラフ部１２１は，受信された予測通知に関連する作業の依存性グラフを変更する。
【０１５８】
入力がバッチ作業の予測通知でなければ（ステップＳ２３０のＮ），ステップＳ２０の処理へ進む。
【０１５９】
図２０は，スケジュール変更処理（ステップＳ２３１）のより詳細な処理フローを示す図である。
【０１６０】
依存性グラフ部１２１は，依存性グラフ内に，予測通知がされたバッチ作業の実行中の作業に関連付けて正常終了確率を記録する（ステップＳ７０）。予測通知の正常終了確率が０％であれば（ステップＳ７１のＹ），依存性グラフ部１２１は，異常処理時と判断し，依存性グラフ内で，そのバッチ作業の後続の正常系作業を消去する（ステップＳ７２）。
【０１６１】
さらに，依存性グラフ部１２１は，依存性グラフ内で，そのバッチ作業の後続の異常系作業について，図２（Ｄ）に示す作業スケジュール表の該当する作業の開始時刻である「スケジュール時刻」を予測終了時刻に変更し（ステップＳ７３），処理を終了する。
【０１６２】
一方，予測通知の正常終了確率が０％でなければ（ステップＳ７１のＮ），依存性グラフ部１２１は，依存性グラフ内で，そのバッチ作業の後続の正常系作業について，図２（Ｄ）に示す作業スケジュール表の該当する「スケジュール時刻」を予測終了時刻に変更し（ステップＳ７４），処理を終了する。
【０１６３】
図２１は，スケジュール変更処理による依存性グラフの変更例を示す図である。
【０１６４】
図２１に示す依存性グラフにおいて，バッチ作業，オペレータ作業，依存関係は，図４と同様に表している。
【０１６５】
依存性グラフ内で，作業ＩＤ＝９，２０，２５のバッチ作業が，現在アクティブかつ実行中であるとする。
【０１６６】
進捗管理部３１から通知された予測通知により，作業ＩＤ＝９のバッチ作業に対し正常終了確率６０％が，作業ＩＤ＝２０のバッチ作業に対し正常終了確率９０％が，作業ＩＤ＝２５のバッチ作業に対し正常終了確率０％が，それぞれ記録されているとする。
【０１６７】
依存性グラフ部１２１は，正常終了確率０％が記録された作業ＩＤ＝２５のバッチ作業に対し，後続の正常系のオペレータ作業（作業ＩＤ＝２６）を削除し，作業スケジュール表の作業ＩＤ＝２６の「スケジュール時刻」を，正常終了確率＝０％とともに通知されている予測終了時刻に変更する。
【０１６８】
作業ＩＤ＝２５のバッチ終了通知が受信されまでは，スケジューリングモード部１２２による作業モードは，正常モードであるが，作業ＩＤ＝２６の作業自体は消去され，リスク評価の対象から除外される。作業ＩＤ＝２６の作業に割り当てられていたオペレータ端末４は割り当てが解除される，他の作業への割り当てが可能となる。
【０１６９】
図２２は，第２の実施例における作業スケジューリングシステム１のリスク評価部１２３の処理フローを示す図である。
【０１７０】
図２２に示す処理フローは，図１０に示す処理フローに，１つの処理（Ｓ５１０）が追加されているものである。したがって，上記の処理ステップ以外の処理については，説明を省略する。
【０１７１】
図２２に示す処理フローで，ステップＳ５５の処理において，依存性グラフ内で，選択されている作業の前に実行中のバッチ作業があると判断された場合に（ステップＳ５５のＹ），リスク評価部１２３は，正常終了確率によるリスク評価を行う（ステップＳ５１０）。リスク評価の結果，その作業がリスクありと評価された場合に（ステップＳ５１０の“リスクあり”），ステップＳ５９の処理へ進み，リスクなしと評価された場合に（ステップＳ５１０の“リスクなし”），ステップＳ５８の処理へ進む。
【０１７２】
図２３は，リスク評価処理（ステップＳ５１０）のより詳細な処理フローを示す図である。
【０１７３】
リスク評価部１２３は，選択された作業が，バッチ作業の後続である正常系作業の連なり（パス）上の作業であれば（ステップＳ８０のＹ），そのバッチ作業の正常終了確率が閾値ｔｈより小さいかを調べる（ステップＳ８１）。正常終了確率が閾値ｔｈより小さければ（ステップＳ８１のＹ），リスク評価部１２３は，その作業の返り値を“リスクあり”に設定する（ステップＳ８２）。正常終了確率が閾値ｔｈより小さくなければ（ステップＳ８１のＮ），ステップＳ８５の処理へ進む。
【０１７４】
選択された作業が，バッチ作業の後続である正常系作業の連なり（パス）上の作業でなければ（ステップＳ８０のＮ），リスク評価部１２３は，そのバッチ作業の正常終了確率が０であるかを調べる（ステップＳ８３）。正常終了確率が０でなければ（ステップＳ８３のＮ），リスク評価部１２３は，その作業の返り値を“リスクあり”に設定し（ステップＳ８４），正常終了確率が０であれば（ステップＳ８３のＹ），ステップＳ８５の処理へ進む。
【０１７５】
ステップＳ８５の処理において，リスク評価部１２３は，作業の開始時刻までに所定の余裕があるかを調べ，作業の実行までに余裕時間があれば（ステップＳ８５のＹ），リスク評価部１２３は，その作業の返り値を“リスクなし”に設定し（ステップＳ８６），作業の実行までに余裕がなければ（ステップＳ８５のＮ），その作業の返り値を“リスクあり”に設定する（ステップＳ８２）。なお，余裕時間は，図１０に示す処理フローのステップＳ５７の処理と同様とする。
【０１７６】
図２１に示す依存性グラフにおいて，作業ＩＤ＝１２の作業に先行するバッチ作業（作業ＩＤ＝９）の正常終了確率が，閾値ｔｈより小さい（６０％＜ｔｈ）。この場合に，作業ＩＤ＝１２の作業は，バッチ作業（作業ＩＤ＝９）が異常終了となる可能性がある程度高いとして，リスクありと評価される。
【０１７７】
また，作業ＩＤ＝２２の作業に先行するバッチ作業（作業ＩＤ＝２０）の正常終了確率が閾値ｔｈ以上である（９０％≧ｔｈ）。この場合に，作業ＩＤ＝２２の作業は，作業開始までに所定の余裕時間があれば，リスクなしと評価される。したがって，作業ＩＤ＝２２の作業は，評価リストに追加される。これにより，作業ＩＤ＝２２の作業のオペレータは融通可能となる。
【０１７８】
また，作業ＩＤ＝２６の作業の前のバッチ作業（作業ＩＤ＝２５）は，正常終了確率が０％である。この場合に，作業ＩＤ＝２６の作業は消去されてリスク評価対象外となる。作業ＩＤ＝２６の作業のオペレータは，作業キャンセル時に解放されており，その時点から融通可能となる。
【０１７９】
なお，作業ＩＤ＝２７の作業については，評価リスク処理により，リスクなしと評価されるがオペレータは割り当てられていない状態である。バッチ作業（作業ＩＤ＝２５）のバッチ終了通知（異常）を受けて，オペレータ割り当て部１５３が，オペレータの割り当てを行う。
【０１８０】
以上説明した作業スケジューリングシステム１は，ＣＰＵおよびメモリ等を有するハードウェアと，ソフトウェアプログラムとを備えるコンピュータ・システム，または専用ハードウェアによって実現される。
【０１８１】
図２４は，作業スケジューリングシステム１のハードウェア構成例を示す図である。
【０１８２】
作業スケジューリングシステム１は，演算装置（ＣＰＵ）１０１，一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）１０２，永続性記憶装置（ＨＤＤ，フラッシュメモリ等）１０３，およびネットワークＮとのネットワークインタフェース１０４を有するコンピュータ１００と，入力装置（キーボード，マウス等）１２０と出力装置（ディスプレイ，プリンタ等）１３０とによって実施することができる。
【０１８３】
また，作業スケジューリングシステム１は，コンピュータ１００が実行可能なプログラムによって実施することができる。この場合に，作業スケジューリングシステム１が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムをコンピュータ１００が実行することによって，上記説明した作業スケジューリングシステム１の処理機能がコンピュータ１００上で実現される。
【０１８４】
すなわち，作業スケジューリングシステム１の静的スケジューリング部１１，システムスケジューリング部１２，オペレータモニタ部１３，バッチモニタ部１４，スケジューリング調整部１５等は，プログラムで構成することができ，これらのプログラムが一時記憶装置１０２にロードされて実行されることにより，各処理部の機能が実現される。また，作業スケジューリング１で使用される作業表，バッチ表，作業依存表，作業スケジュール，依存性グラフ，リスク評価等のデータは一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）１０２や永続性記憶装置１０３に格納される。
【０１８５】
なお，コンピュータ１００は，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。また，このプログラムは，コンピュータ１００で読み取り可能な記録媒体に記録しておくことができる。
【０１８６】
以上説明したように，開示する作業スケジューリングシステム１は，静的スケジューリング手法により正常系作業にもとづく作業スケジュールを決定し，異常系作業が発生した場合にのみ局所的にスケジュールを変更し，異常系作業が正常に終了したときは，正常系作業へ速やかに復帰することができる。そのため，少ない計算時間で動的にスケジューリングを変更することができ，さらに自動的に本来の作業スケジュールに戻ることができるため，効率的かつ実際的な運用に適用することができる。
【０１８７】
さらに，作業スケジューリングシステム１は，ジョブ実行管理システム３から通知された，バッチ作業を構成するジョブの予測終了時刻と正常終了確率を用いてリスク評価を行えるため，より精度が高い予測終了時刻により動的にスケジューリングを変更することができるため，より最適なスケジューリングを実現することができる。
【０１８８】
また，正常終了予測により，バッチ作業の異常終了を，バッチ終了通知前に予測することができるため，より最適なスケジューリングを実現することができる。
【符号の説明】
【０１８９】
１  作業スケジューリングシステム
１１  静的スケジューリング部
１２  システムスケジューリング部
１２０  制御部
１２１  依存性グラフ部
１２２  スケジューリングモード部
１２３  リスク評価部
１２４  作業キュー
１３  オペレータモニタ部
１４  バッチモニタ部
１５  スケジューリング調整部
１５０  調整部
１５１  システムスケジューラインタフェース
１５２  モニタインタフェース
１５３  オペレータ割り当て部
３  ジョブ実行管理システム
３１  進捗管理部
３１０  バッチ構成記憶部
３１１  進捗データ受信部
３１２  進捗データ記憶部
３１３  時刻・確率計算部
３１４  タイマ
３１５  予測通知部
４  オペレータ端末
５  ジョブ
【図１】
2012256307.tif 000003
【図２】
2012256307.tif 000004
【図３】
2012256307.tif 000005
【図４】
2012256307.tif 000006
【図５】
2012256307.tif 000007
【図６】
2012256307.tif 000008
【図７】
2012256307.tif 000009
【図８】
2012256307.tif 000010
【図９】
2012256307.tif 000011
【図１０】
2012256307.tif 000012
【図１１】
2012256307.tif 000013
【図１２】
2012256307.tif 000014
【図１３】
2012256307.tif 000015
【図１４】
2012256307.tif 000016
【図１５】
2012256307.tif 000017
【図１６】
2012256307.tif 000018
【図１７】
2012256307.tif 000019
【図１８】
2012256307.tif 000020
【図１９】
2012256307.tif 000021
【図２０】
2012256307.tif 000022
【図２１】
2012256307.tif 000023
【図２２】
2012256307.tif 000024
【図２３】
2012256307.tif 000025
【図２４】
2012256307.tif 000026