(57)【特許請求の範囲】
【請求項１】
複数のジョブの実行手順を規定するジョブネットを記録する記憶部と、
同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する判定部と、
前記判定部により肯定する判定がなされた場合に、前記複数のジョブに規定される先行後続関係に基づき、前記ジョブネットを再構成する構成処理部と、
を備え、
前記構成処理部による前記ジョブネットの再構成は、先行後続関係を有するジョブ間において新たな接続関係を構築することを含み、
前記新たな接続関係の構築は、先行ジョブについて新たな接続関係の構築が可能か否かを示す情報、又は、後続ジョブについて新たな接続関係の構築が可能か否かを示す情報に基づいて実行される、ジョブネット管理装置。
【請求項２】
前記判定部による判定は、前記ジョブネットに基づく前記複数のジョブの実行中に行われる、請求項１に記載のジョブネット管理装置。
【請求項３】
前記複数のジョブそれぞれのステータスを管理するステータス管理部をさらに備える、請求項１又は２に記載のジョブネット管理装置。
【請求項４】
前記判定部は、現在実行中のジョブの数が前記予め決められた個数であって、かつ、新たなジョブを起動する命令が発せられたとき、同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定する、請求項１乃至３のいずれか１項に記載のジョブネット管理装置。
【請求項５】
前記構成処理部による前記ジョブネットの再構成は、さらに前記複数のジョブそれぞれの優先度に基づいて実行される、請求項１乃至４のいずれか１項に記載のジョブネット管理装置。
【請求項６】
コンピュータを、
複数のジョブの実行手順を規定するジョブネットを記録する記憶部と、
同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する判定部と、
前記判定部により肯定する判定がなされた場合に、前記複数のジョブに規定される先行後続関係に基づき、前記ジョブネットを再構成する構成処理部として機能させるプログラムであって、
前記構成処理部による前記ジョブネットの再構成は、先行後続関係を有するジョブ間において新たな接続関係を構築することを含み、
前記新たな接続関係の構築は、先行ジョブについて新たな接続関係の構築が可能か否かを示す情報、又は、後続ジョブについて新たな接続関係の構築が可能か否かを示す情報に基づいて実行される、プログラム。
【請求項７】
前記判定部による判定は、前記ジョブネットに基づく前記複数のジョブの実行中に行われる、請求項６に記載のプログラム。
【請求項８】
前記コンピュータを、
前記複数のジョブそれぞれのステータスを管理するステータス管理部としてさらに機能させる、請求項６又は７に記載のプログラム。
【請求項９】
前記判定部に、現在実行中のジョブの数が前記予め決められた個数であって、かつ、新たなジョブを起動する命令が発せられたとき、同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定させる、請求項６乃至８のいずれか１項に記載のプログラム。
【請求項１０】
前記構成処理部による前記ジョブネットの再構成は、さらに前記複数のジョブそれぞれの優先度に基づいて実行される、請求項６乃至９のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブの実行手順を定義するジョブネットに基づいて複数のジョブを管理するジョブネット管理装置に関する。
【背景技術】
【０００２】
近年、企業内における様々な定型業務を自動化する技術として、ジョブネットワークが知られている。ジョブネットワークは、定型業務を自動化するにあたって必要となるジョブを体系的にまとめたものであり、ジョブネットを含む階層構造を有している。ジョブネットとは、ジョブネットワークを構成する最小単位であるジョブの集まりであり、各ジョブの実行手順が規定されたものを指す。つまり、ジョブネットは、互いに関連する複数のジョブについて、各ジョブの処理内容、実行すべき時刻、実行結果の出力先、ジョブ間の先行後続関係等を規定している。
【０００３】
ジョブ管理装置は、ジョブネットワークの実行を管理するための装置であり、例えば企業内サーバの形態で企業内に配置される。ジョブ管理装置は、ジョブネットに従って個々のジョブの実行制御を行い、ジョブネットワークの実行を総合的に管理して、企業内における日常の定型業務を遂行する。これにより、日常の定型業務の効率化と、それら定型業務の管理負担の低減とを実現することができる。
【０００４】
このようなジョブ管理装置には、限られたハードウェア・リソースの効率的な利用を図るために、同時に実行可能なジョブの数を制限するものがある。特許文献１に記載された技術は、ジョブ管理装置に、同時に実行可能なジョブの数（多重度）を特定する機能を設け、実行中のジョブ数が最大限の数に達している場合、新たなジョブの起動を見送るものである。これにより、強制的に、制限を超えた数のジョブが同時に実行されないようにすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−４４５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載された技術は、実行中のジョブ数が最大限の数に達していると、新たなジョブの起動を見送ることしかできない。この場合、起動を見送られたジョブは、予定していた時刻にジョブを実行することができないという問題がある。また、特許文献１には、実行中のジョブが終了して多重度条件が解除されると、その時点で保留しているジョブを起動することができる旨の記載がある。この場合においても、起動が見送られたジョブは、他の実行中のジョブが終了するまで単に待機するしかできない。
【０００７】
このように、特許文献１に記載された技術では、実行中のジョブ数を制限することによってハードウェア・リソースの効率的な利用を図るという目的は一応果たせるものの、重要なジョブの遅延を招く恐れがあるという問題がある。特に、起動を見送られたジョブの終了を条件とする後続のジョブが存在する場合には、さらに後続するジョブにまで遅延が伝播してしまうという問題がある。
【０００８】
本発明は、このような問題を克服するために、ハードウェア・リソースの効率的な利用を図りつつ、ジョブネットワークにおけるジョブの遅延を低減することを課題とする。
【課題を解決するための手段】
【０００９】
本発明の一実施形態によるジョブ管理装置は、複数のジョブの実行手順を規定するジョブネットを記録する記憶部と、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する判定部と、前記判定部により肯定する判定がなされた場合に、前記複数のジョブに規定される先行後続関係に基づき、前記ジョブネットを再構成する構成処理部と、を備える。
【００１０】
ジョブ管理装置は、前記記憶部に記録された前記ジョブネットを参照して、前記複数のジョブの実行を制御する実行制御部をさらに備えてもよいし、前記複数のジョブそれぞれのステータスを管理するステータス管理部をさらに備えてもよい。
【００１１】
前記判定部は、前記ジョブネット及び前記複数のジョブそれぞれのステータスに基づいて、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定してもよい。また、現在実行中のジョブの数が前記予め決められた個数であって、かつ、新たなジョブを起動する命令が発せられたとき、同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定してもよい。
【００１２】
前記ジョブネットは、前記先行後続関係の解消が可能か否かを示すフラグ及び前記複数のジョブそれぞれの優先度の少なくともいずれかを含んでもよい。さらに、前記構成処理部は、前記フラグ又は前記優先度の少なくともいずれかに基づいて、前記ジョブネットを再構成してもよい。
【００１３】
また、本発明の他の実施形態によるプログラムは、コンピュータを、複数のジョブの実行手順を規定するジョブネットを記録する記憶部と、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する判定部と、前記判定部により肯定する判定がなされた場合に、前記複数のジョブに規定される先行後続関係に基づき、前記ジョブネットを再構成する構成処理部として機能させる。
【００１４】
プログラムは、前記コンピュータを、前記記憶部に記録された前記ジョブネットを参照して、前記複数のジョブの実行を制御する実行制御部としてさらに機能させてもよいし、前記複数のジョブそれぞれのステータスを管理するステータス管理部としてさらに機能させてもよい。
【００１５】
前記プログラムは、前記判定部に、前記ジョブネット及び前記複数のジョブそれぞれのステータスに基づいて、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定させてもよい。また、現在実行中のジョブの数が前記予め決められた個数であって、かつ、新たなジョブを起動する命令が発せられたとき、同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定させてもよい。さらに、前記構成処理部に、前記記憶部に記録された前記先行後続関係の解消が可能か否かを示すフラグ又は前記複数のジョブそれぞれの優先度の少なくともいずれかに基づいて、前記ジョブネットを再構成させてもよい。
【発明の効果】
【００１６】
本発明によれば、ハードウェア・リソースの効率的な利用を図りつつ、ジョブネットワークにおけるジョブの遅延を低減することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態に係るジョブ管理システムを示すブロック図である。
【図２】第１実施形態におけるジョブネットテーブルの一例を示す図である。
【図３】第１実施形態におけるステータステーブルの一例を示す図である。
【図４】第１実施形態のジョブネットにおける各ジョブの先行後続関係の一例を示す図である。
【図５】第１実施形態のジョブネットにおける再構成後の各ジョブの先行後続関係の一例を示す図である。
【図６】第１実施形態における再構成後のジョブネットテーブルの一例を示す図である。
【図７】第１実施形態における管理マネージャの処理の流れを示すフローチャート図である。
【図８】第２実施形態におけるジョブネットテーブルの一例を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施形態に係る携帯端末について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。なお、本実施形態で参照する図面において、同一部分または同様な機能を有する部分には同一の符号または類似の符号（数字の後にａ、ｂなどを付しただけの符号）を付し、その繰り返しの説明は省略する場合がある。また、構成の一部が図面から省略されたりする場合がある。
【００１９】
（第１実施形態）
＜システム構成＞
図１は、本発明の第１実施形態に係るジョブ管理システム１０を示すブロック図である。ジョブ管理システム１０は、管理マネージャ１００、実行エージェント２００ａ、及び実行エージェント２００ｂが、ネットワーク３００を介して相互に接続されている。なお、ネットワークは、識別子を用いて宛先指定が可能なネットワークを指し、例えばインターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）を用いることができる。
【００２０】
管理マネージャ１００は、ジョブネットワークを構成する複数のジョブの実行を統括的に管理する役割を果たす。本実施形態では、管理マネージャとしての機能をコンピュータに実行させるプログラムをインストールしたコンピュータ（ジョブ管理装置）として説明するが、そのようなプログラム自体を管理マネージャ１００として捉えてもよい。図１に示す管理マネージャ１００は、実行制御部１１０、記憶部１２０、判定部１３０、及び構成処理部１４０を備える。実行制御部１１０は、具体的な機能ブロックとして、実行処理部１１２、及びステータス管理部１１４を含む。また、記憶部１２０には、ジョブネットテーブル１２２、及びステータステーブル１２４を含む。
【００２１】
実行エージェント２００ａ及び２００ｂは、ジョブネットワークを構成する複数のジョブを実行する役割を果たす。本実施形態では、実行エージェントとしての機能をコンピュータに実行させるプログラムをインストールしたコンピュータ（ジョブ実行装置）として説明するが、そのようなプログラム自体を実行エージェント２００ａ及び２００ｂとして捉えてもよい。なお、図１では、２台の実行エージェントを例示しているが、台数に制限はなく、３台以上の実行エージェントが接続されていてもよい。
【００２２】
図１に示す実行エージェント２００ａは、業務処理部２１０ａ及び業務データ２１０ｂを含み、実行エージェント２００ｂは、業務処理部２２０ａ及び業務データ２２０ｂを含む。業務処理部２１０ａ及び２２０ａは、管理マネージャ１００から取得したジョブを実際に実行する機能ブロックであり、それぞれ業務データ２１０ｂ及び２２０ｂを用いて予め決められた業務（ジョブ）を実行する。なお、業務データ２２０ａ及び２２０ｂは、実際の業務に関する文書データだけでなく、業務用アプリケーションをも含む。これら業務データ２１０ｂ及び２２０ｂは、データベースの形式で記憶媒体に記憶されていてもよいし、ネットワーク３００を介して外部サーバから取得したものであってもよい。
【００２３】
ここで、図１を用いて管理マネージャ１００の具体的な構成について説明する。実行制御部１１０は、実行エージェント２００ａ及び２００ｂに実行させる各ジョブの制御を行う機能を有する。具体的には、実行処理部１１２による各ジョブにおける実行処理の制御と、ステータス管理部１１４による各ジョブにおける状態管理制御とを協働させて、各ジョブの全体的な実行制御を行う機能を有する。なお、ここでは実行処理部１１２及びステータス管理部１１４という形態で具体的な機能を示しているが、このような形態に限定する趣旨ではない。例えば、実行制御部１１０に対して「毎朝８時からジョブＡを実行する」などの処理サイクル（スケジュール）を管理するスケジュール管理部を設け、記憶部１２０に、そのスケジュール管理部が参照するカレンダー（日時テーブル）を記憶しておくことも可能である。
【００２４】
上述の実行処理部１１２は、記憶部１２０にジョブネットテーブル１２２として記憶されたジョブネットを参照して各ジョブの実行手順を取得する。そして、取得した実行手順に従って各ジョブの実行処理を制御する。各ジョブの実行処理は、例えば、実行エージェント２００ａ又は２００ｂに対するキューを生成し、当該キューを介して実行エージェント２００ａ又は２００ｂにジョブを転送することにより実現することができる。勿論、これは一例であり、公知の如何なる方法でジョブの実行処理を実現してもよい。
【００２５】
図２は、第１実施形態におけるジョブネットテーブル１２２の一例を示す図である。図２に示すジョブネットテーブル１２２は、ジョブ名を示す列１２２１、先行ジョブ名を示す列１２２２、後続ジョブ名を示す列１２２３、開始予定時刻を示す列１２２４、終了予定時刻を示す列１２２５、その他の情報を示す列１２２６を含む。ただし、ジョブネットテーブル１２２に記憶する項目は、これらの項目に限らず、任意に設定可能である。
【００２６】
ジョブ名を示す列１２２１には、実行対象となるジョブの名前が記憶される。ここでは、「Job-a」等の記述が各ジョブの名前を表している。なお、図２に示すジョブネットテーブル１２２では、ジョブ名を例示しているが、ジョブ名に代えて、ジョブを一意に特定する識別子を用いても良い。また、実行対象がジョブではなく、複数のジョブの集合体を単位とするジョブネットである場合は、ジョブネット名を記憶しておいてもよい。
【００２７】
先行ジョブ名を示す列１２２２には、実行対象となるジョブの直前に実行されるジョブ名が記憶される。先行ジョブ名が記憶されている場合、実行対象となるジョブは、先行ジョブが終了したことを条件として、処理が実行されることを意味する。先行ジョブは、１つに限らず、複数の先行ジョブを有する場合もある。
【００２８】
後続ジョブ名を示す列１２２３には、実行対象となるジョブの直後に実行されるジョブ名が記憶される。後続ジョブ名が記憶されている場合、実行対象となるジョブの終了を条件として、後続ジョブが実行されることを意味する。後続ジョブは、１つとは限らず、複数の後続ジョブを有する場合もある。
【００２９】
開始予定時刻を示す列１２２４には、実行対象となるジョブの処理が開始される予定時刻、すなわちジョブの起動予定時刻が記憶される。また、終了予定時刻を示す列１２２５には、実行対象となるジョブの処理が終了する予定時刻が記憶される。これら開始予定時刻を示す列１２２４及び終了予定時刻を示す列１２２５にそれぞれ記憶された開始予定時刻及び終了予定時刻に従って、各ジョブの実行開始及び実行終了の制御がなされる。
【００３０】
その他の情報を示す列１２２６には、ジョブの実行手順に関する他の情報を記憶させておくことが可能である。例えば、ジョブの種別（例えば、単一のジョブであるかジョブネットであるか等）、実行対象のジョブの終了期限、実行プログラム、実行先のエージェント名などを例示することができる。
【００３１】
上述の実行処理部１１２は、以上説明したジョブネットテーブル１２２に基づいて、各ジョブの実行手順を取得し、実行手順に示される先行ジョブの終了や開始予定時刻といった条件を満たした場合にジョブの起動処理を行い、当該ジョブの終了や終了予定時刻といった条件を満たした場合に後続ジョブを起動する。
【００３２】
図１に戻って、ステータス管理部１１４は、記憶部１２０にステータステーブル１２４として記憶された各ジョブのステータスを管理する。具体的には、ステータス管理部１１４は、実行処理部１１２による各ジョブの実行処理の状況を把握し、各ジョブの過去及び現在の状態をステータスとして記録する。具体的には、実行処理部１１２の処理内容に基づいて各ジョブにおける過去の実行結果、現在の処理状況、実際の開始時刻及び終了時刻などを取得し、それらの情報に基づいてステータステーブル１２４を更新することにより、逐次各ジョブの状態の推移を管理する。
【００３３】
図３は、第１実施形態におけるステータステーブル１２４の一例を示す図である。図３に示すステータステーブル１２４は、ジョブ名を示す列１２４１、ステータスを示す列１２４２、開始時刻を示す列１２４３、終了時刻を示す列１２４４、その他の情報を示す列１２４５を含む。ただし、ステータステーブル１２４に記憶する項目は、これらの項目に限らず、任意に設定可能である。なお、図３に示したステータステーブル１２４は、具体的には、「08:10」時点での各ジョブのステータスを示している。
【００３４】
ジョブ名を示す列１２４１には、実行対象となるジョブの名前が記憶される。ここでは、「Job-a」等の記述が各ジョブの名前を表している。なお、図３に示すステータステーブル１２４では、ジョブ名を例示しているが、ジョブ名に代えて、ジョブを一意に特定する識別子を用いても良い。また、実行対象がジョブではなく、複数のジョブの集合体を単位とするジョブネットである場合は、ジョブネット名を記憶しておいてもよい。
【００３５】
ステータスを示す列１２４２には、実行対象となるジョブの過去又は現在の状態を示す情報が記憶される。図３に示す一例において、「正常終了」とは、ジョブがジョブネットに規定される実行手順どおりに実行され、正常に完了していることを意味する。「遅延」とは、ジョブが何らかの理由により遅れて実行されていることを意味する。「実行中」とは、ジョブがジョブネットに規定される実行手順どおりに正常に実行されていることを意味する。「待機中」とは、ジョブが実行処理の開始を待っていることを意味する。また、ここでは例示していないが、ジョブがジョブネットに規定される実行手順どおりに実行されなかった場合は「異常終了」のステータスを記憶させてもよい。なお、ここに例示した各ステータスは一例に過ぎず、必要とするステータスを任意に設定すればよい。
【００３６】
開始時刻を示す列１２４３には、実行対象となるジョブの処理が開始された時刻、すなわちジョブの実際の起動時刻が記憶される。また、終了時刻を示す列１２４４には、実行対象となるジョブの処理が終了した時刻が記憶される。例えば、ジョブ「Job-a」及び「Job-b」の処理は、「07:00」に開始され、「07:15」に終了している。図２に示したジョブネットテーブル１２２を参照すると、各ジョブ「Job-a」及び「Job-b」は、開始予定時刻に実行され、終了予定時刻に完了していることが分かる。したがって、各ジョブ「Job-a」及び「Job-b」のステータスは「正常終了」になっている。他方、ジョブ「Job-g」の処理は、「07:20」に開始され、未だに完了していないため終了時刻が記憶されていない。図２に示したジョブネットテーブル１２２を参照すると、ジョブ「Job-g」は、開始予定時刻に実行されたものの、終了予定時刻を経過しても処理が継続中であるため、何らかの理由で処理が遅れていることが分かる。したがって、ジョブ「Job-g」のステータスは「遅延」になっている。このように、開始時刻を示す列１２４３及び終了時刻を示す列１２４４において、空欄となっている部分は、未だにジョブの実行結果が確定していないことを意味する。
【００３７】
その他の情報を示す列１２４５には、ジョブのステータスに関する他の情報を記憶させておくことが可能である。例えば、ジョブの実行に関して、開始予定時刻と実際の開始時刻の差分、終了予定時刻と実際の終了時刻の差分などを例示することができる。
【００３８】
上述のステータス管理部１１４は、実行処理部１１２から取得した情報に基づいて、以上説明したステータステーブル１２４の更新を行う。このように各ジョブのステータスをステータステーブル１２４に基づいて管理することにより、現時点におけるジョブネットワークの構成を把握することができ、後述するジョブネットテーブル１２２の更新処理に活用することができる。なお、ステータステーブル１２４として記憶された情報は、実行処理部１１２が参照してもよい。各ジョブの実行タイミングに関しては、ジョブネットテーブル１２２だけでなく、ステータステーブル１２４をも参照した方がより細やかな実行制御が可能となるからである。
【００３９】
また、本実施形態では、ジョブネットテーブル１２２とステータステーブル１２４とを区別して記載しているが、両者は、１つのテーブルであってもよい。ジョブネットテーブル１２２及びステータステーブル１２４は、いずれもハードウェア資源としてのメモリにおける所定の記憶領域に記憶された情報であるから、それらが物理的に単一のメモリに記憶されていても別々のメモリに記憶されていても機能的には変わりはない。ただし、両者を別個のメモリに分けることにより、ジョブネットテーブル１２２及びステータステーブル１２４に対して並列に（同時に）アクセスすることが可能となるため、処理の高速化という観点からは、別々のテーブルとして異なるメモリに記憶した方が良い場合もある。
【００４０】
再び図１に戻って、判定部１３０について説明する。判定部１３０は、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する機能を有する。「同一時刻」は、現在から所定期間先の未来までのどの時刻であってもよい。つまり、ある時刻において、同時に実行されているジョブの個数が予め決められた個数（制限値）を超えるか否かを事前に予測する機能と捉えてもよい。なお、予め決められた個数は、複数のジョブが実行される実行先における管理者によって予め設定された個数であってもよいし、ジョブ管理システム１０の管理者によって予め設定された個数であってもよい。本実施形態では、予め決められた個数は「５」とする場合を例示するが、この個数に限定されるものではない。
【００４１】
判定部１３０は、記憶部１２０に記憶されたジョブネットテーブル１２２及びステータステーブル１２４の少なくともいずれか一方を参照して、同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かを判定する。例えば、ジョブネットテーブル１２２から取得したジョブネット（各ジョブの実行手順）と、ステータステーブル１２４から取得した各種情報（各ジョブのステータス、実際の開始時刻等）に基づいて、同時に実行されるジョブの個数が予め決められた個数を超えるか否かを判定することができる。
【００４２】
同一時刻に実行されるジョブの個数が予め決められた個数を超えるか否かの判定は、様々な手法を採用することができる。一例としては、まず、ステータステーブル１２４を参照して現在実行中のジョブの個数を確認する。このとき、現在実行中のジョブの個数が上述した予め決められた個数である場合、もう１つでもジョブが起動されると制限を超えることになる。したがって、判定部１３０は、現在実行中のジョブの個数が予め決められた数（例えば「５」）であって、かつ、新たなジョブを起動する命令が実行処理部１１２から発せられたとき、実行中のジョブが「６」に達すると判断し、同一時刻に実行されるジョブの個数が予め決められた個数を超えるとの判定を行うことができる。
【００４３】
また、他の一例としては、ジョブネットテーブル１２２から取得した各ジョブの開始予定時刻等の各種情報と、ステータステーブル１２４から取得した各ジョブの現在のステータス等の各種情報とに基づいて、所定期間先の時点（時刻）における各ジョブのステータスを予測し、その予測に基づいて同一時刻に実行されるジョブの個数が予め決められた個数を超えるとの判定を行うことができる。
【００４４】
以上説明した判定部１３０の機能は、ＣＰＵ等のハードウェア資源が、ハードウェア資源としての記憶部１２０に記憶された各種テーブルから情報を取得することにより、上述した判定部１３０としての機能に応じた演算処理又は加工を行うことにより実現される。すなわち、ジョブネットテーブル１２２及びステータステーブル１２４の少なくともいずれか一方を読み込んでジョブの開始予定時刻等の実行手順、ステータス、実際の開始時刻等の情報を取得し、ある時刻において実行し得るジョブの個数を求め、その個数が所定値を超えるか否かの比較演算を行った結果として、肯定又は否定の判定結果を出力することができる。
【００４５】
次に、構成処理部１４０について説明する。構成処理部１４０は、判定部１３０により肯定する判定がなされた場合（同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定された場合）に、各ジョブに規定される先行後続関係に基づき、ジョブネットを再構成する機能を有する。具体的には、同一時刻に実行されるジョブの個数が予め決められた個数を超える場合に、その時刻において実行されるジョブの個数が予め決められた個数を超えないように各ジョブの実行手順（すなわちジョブネット）を変更する機能を有している。なお、本実施形態の場合、ジョブネットを再構成するとは、ジョブネットテーブル１２２を更新することを意味する。すなわち、ジョブネットを再構成するとは、予め設定されたジョブネットを、判定部１３０の判定に基づいて変更し、新たなジョブネットを再構築することを意味する。
【００４６】
構成処理部１４０におけるジョブネットの再構成処理は、予め決められた再構成ルールに従って実行される。再構成ルールは、ジョブネットを変更するルールを定義したものであり、ジョブ管理システム１０の管理者が適宜設定することができる。ここで、構成処理部１４０が実行する再構成処理について、図４〜６を用いて説明する。
【００４７】
図４は、第１実施形態のジョブネットにおける各ジョブの先行後続関係の一例を示す図である。図４に示す例では、アルファベット順にジョブ（Job-a）２１からジョブ（Job-t）４０まで合計２０個のジョブの先行後続関係が表されている。なお、図４に示す各ジョブの先行後続関係は、図２に示したジョブネットテーブル１２２として記憶されたジョブネットに対応する。例えば、図２に示すジョブ名を示す列１２２１、先行ジョブ名を示す列１２２２及び後続ジョブ名を示す列１２２３によれば、「Job-b」には先行ジョブはなく、後続ジョブとして「Job-e」及び「Job-f」が記憶されている。これに関し、図４には、ジョブ（Job-b）２２の前にジョブはなく、後続ジョブとしてジョブ（Job-e）２５及びジョブ（Job-f）２６が示されている。また、ジョブネットテーブル１２２よれば、「Job-l」の先行ジョブは「Job-j」であり、後続ジョブとして「Job-o」、「Job-p」、「Job-q」、「Job-r」など複数のジョブが記憶されている。これに関し、図４には、ジョブ（Job-l）３２の前にはジョブ（Job-j）３０が存在し、後続ジョブとしてジョブ（Job-o）３５、ジョブ（Job-p）３６、ジョブ（Job-q）３７及びジョブ（Job-r）３８が示されている。
【００４８】
このような先行後続関係を有するジョブネットにおいて、例えば、ジョブ（Job-n）３４〜ジョブ（Job-s）３９までの合計６個のジョブの実行開始予定時刻が「08:15」であったとする。この場合、時刻が「08:15」になった時点で、実行中のジョブの個数が予め決められた個数（５個）を超えることとなる。また、図２に示されるようにジョブ（Job-g）２７は時刻「07:30」の時点で終了する予定となっているが、何らかの問題が生じて処理に遅延が生じた場合、時刻「08:15」までジョブ（Job-g）２７がずれ込むことも考えられる。この場合には、最大で７個のジョブが同時に実行されてしまうこととなる。これらは一例に過ぎず、他にも様々な要因によって同時に実行されるジョブの個数が制限数（予め決められた個数）を超える場合があり得る。
【００４９】
本実施形態のジョブ管理システム１０における構成処理部１４０は、そのような場合（すなわち、判定部１３０により同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定された場合）に、例えば図５に示すようにジョブネットの再構成を行うことができる。図５は、本実施形態のジョブネットにおける各ジョブの先行後続関係の一例を示す図である。具体的には、図４に示すジョブネットを再構成した後のジョブネットの先行後続関係を示している。
【００５０】
図５に示すように、まずジョブ（Job-q）３７がジョブ（Job-l）３２との先行後続関係を解消し、新たにジョブ（Job-p）３６との間で先行後続関係を形成している。具体的には、ジョブ（Job-q）３７は、ジョブ（Job-l）３２の後続ジョブであった状態から、ジョブ（Job-p）３６の後続ジョブへと変更されている。これにより、ジョブ（Job-q）３７は、少なくともジョブ（Job-p）３６が終了しない限り実行されることはなく、上述の同時に実行されるジョブの個数が６個になってしまう状態を回避することができる。
【００５１】
また、図５に示す一例では、ジョブ（Job-g）２７とジョブ（Job-l）３２との間に新たな先行後続関係を形成している。具体的には、ジョブ（Job-l）３２は、ジョブ（Job-j）３０のみの後続ジョブであった状態から、ジョブ（Job-j）３０に加えてジョブ（Job-g）２７の後続ジョブへと変更されている。これにより、ジョブ（Job-l）３２及びその後続ジョブであるジョブ（Job-o）３５、ジョブ（Job-p）３６、及びジョブ（Job-r）３８は、少なくともジョブ（Job-g）２７が終了しない限り実行されることはない。つまり、上述のようにジョブ（Job-g）２７の遅延により、ジョブ（Job-g）２７と他のジョブ（Job-p）３６等とが同じタイミングで実行されることがなくなるため、同時に実行されるジョブの個数が７個になってしまう状態を回避することができる。
【００５２】
ここで、構成処理部１４０による再構成処理が行われた後のジョブネットテーブルについて図６を用いて説明する。図６は、再構成後のジョブネットテーブル１２６の一例を示す図である。具体的には、図６に示すジョブネットテーブル１２６は、図２に示したジョブネットテーブル１２２に対し、図５を用いて説明したジョブネットの再構成を反映させて更新した後のジョブネットテーブルに相当する。なお、図２に示すジョブネットテーブル１２２との比較において、変更点は二重線の枠内の項目である。
【００５３】
図６に示されるように、ジョブ名を示す列１２２１における「Job-g」を見ると、後続ジョブが「Job-l」に変更されている。また、ジョブ名を示す列１２２１における「Job-l」及び「Jo-q」を見ると、「Job-l」については先行ジョブ名が「Job-j」及び「Job-g」の２つに変更され、「Job-q」については先行ジョブ名が「Job-p」に変更されている。さらに、「Job-q」については、「Job-p」の終了が実行開始の条件となったことに伴い、開始予定時刻及び終了予定時刻が変更されている。
【００５４】
以上のように、本実施形態の管理マネージャ１００は、実行制御部１１０によりジョブネットワークを構成する各ジョブの実行を制御しつつ、判定部１３０により同一時刻に実行されるジョブの個数が予め決められた個数を超えないように監視する。そして、判定部１３０により超えると判定された場合に、構成処理部１４０が動的にジョブネットを再構成し、同時に実行されるジョブの個数が予め設定された制限数を超えないように制御することができる。
【００５５】
図７は、第１実施形態における管理マネージャ１００の処理の流れを示すフローチャート図である。まず、ジョブネットワークにおける先頭のジョブが起動されたタイミングで図７に示すフローが開始される。例えば、図４に示すジョブ（Job-a）２１、ジョブ（Job-b）２２、及びジョブ（Job-c）２３が起動した時点で処理が開始される。ただし、これに限らず、予め設定した任意のタイミングで図７に示す処理を開始させてもよい。
【００５６】
次に、判定部１３０が、実行中のジョブの個数を確認する（ステップＳ５１）。具体的には、記憶部１２０に記憶されたステータステーブル１２４（例えば、図３示したにステータステーブル１２４におけるステータスを示す列１２４２）を参照して、ある時刻において実行中のジョブを検出してカウントする。なお、ここではステータステーブル１２４を参照する例を示したが、ジョブネットテーブル１２２を併せて参照することもできる。
【００５７】
実行中のジョブの個数を確認したら、判定部１３０は、同一時刻に実行されるジョブの個数が予め決められた個数（制限数）を超えるか否かが判定される（ステップＳ５２）。この処理では、例えば上述したように、現在実行中のジョブの個数が予め決められた数であって、かつ、新たなジョブを起動する命令が実行処理部１１２から発せられたとき、同一時刻に実行されるジョブの個数が予め決められた個数を超えるとの判定を行うことができる。
【００５８】
ステップＳ５１における判定が否定の場合（Ｎｏの場合）は、再びステップＳ５１に戻って実行中のジョブの個数を確認する。なお、図７に示す処理では、実行中のジョブの個数を常に監視する形となっているが、これに限らず、一旦フローを終了し、再び何らかのタイミングで図７に示す処理を行うことも可能である。
【００５９】
ステップＳ５１における判定が肯定の場合（Ｙｅｓの場合）は、構成処理部１４０によるジョブネットの再構成処理が行われる（ステップＳ５３）。これにより、同一時刻に実行されるジョブの個数が予め決められた個数を超えると判定された場合にはただちにジョブネットが再構成され、同一時刻に実行されるジョブの個数を減らすことができる。
【００６０】
以上のように、第１実施形態によれば、同時に実行されるジョブ数を制限してハードウェア・リソースの効率的な利用を図ることができる。さらに、実行中のジョブの個数が制限数を超える場合において、従来のように単にジョブの起動を禁止するのではなく、ジョブネットを再構成してジョブの継続的な起動又は処理を確保することにより、ジョブネットワークにおけるジョブの遅延を低減することができる。
【００６１】
（第２実施形態）
本発明の第２実施形態では、第１実施形態とは異なるジョブネットテーブルを用いた例について説明する。図８は、第２実施形態におけるジョブネットテーブル１２８の一例を示す図である。なお、図２に示すジョブネットテーブル１２２と同一の項目については、同一の符号を用いて示し、ここでの説明は省略する。本実施形態では、ジョブネットテーブル１２２との違いに着目して説明する。
【００６２】
本実施形態におけるジョブネットテーブル１２８には、新たに解消フラグを示す列１２８１及び優先度を示す列１２８２が追加されている。解消フラグとは、実行対象となるジョブ（図８において、ジョブ名を示す列１２２１に記憶されたジョブ）と当該実行対象となるジョブに関連付けられた先行ジョブ又は後続ジョブとの先行後続関係を解消できるか否かを示すフラグである。つまり、解消フラグが「ＯＫ」であれば、先行ジョブ又は後続ジョブとの関係を解消し、新たな接続関係を構築することが可能である。逆に、解消フラグが「ＮＧ」であれば、先行ジョブ又は後続ジョブとの接続関係を解消することはできず、一体不可分なものとして取り扱う必要がある。また、優先度とは、実行対象となるジョブの処理としての優先度である。本実施形態では、５段階に優先度が振り分けられ、値が大きいほど（５に近いほど）優先度が高いものとする。
【００６３】
これらの解消フラグや優先度を用いると、構成処理部１４０による再構成処理の効率とジョブネットワークの処理能力の維持との向上を図ることができる。例えば、解消フラグがＯＫであれば、その解消フラグに関連付けられたジョブについての先行後続関係は自由に解消することができることを意味する。したがって、構成処理部１４０による再構成処理の際に、解消フラグがＯＫであるジョブの先行後続関係を優先的に変更することができる。逆に、解消フラグがＮＧであれば、その解消フラグに関連付けられたジョブについての先行後続関係は一体不可分なものとして取り扱うことになるため、ジョブ間の関連性を損なうことなくジョブネットの再構成を行うことができる。さらに、優先度をパラメータとして加えると、低い優先度に関連付けられたジョブを後方に移動させ、優先度の高いジョブの処理を優先的に進めることが可能となる。
【００６４】
なお、本実施形態では、ジョブネットテーブル１２８に対して解消フラグを示す列１２８１と優先度を示す列１２８２を共に設けているが、少なくともいずれか一方を有していてもよい。勿論、両方を設けることにより、より細やかなジョブの実行制御を行うことが可能となることは言うまでもない。
【００６５】
また、本実施形態では、実行対象となるジョブと先行ジョブとの関係と、実行対象となるジョブと後続ジョブとの関係を区別せずに解消フラグを関連付けているが、より細やかな制御を行うためには、それらを区別して二種類の解消フラグを設けることが好ましい。例えば、実行対象となるジョブが、先行ジョブとの関係は解消できるが、後続ジョブとの関係は解消できないといった場合に、両者を区別しておくことは有効である。これにより、ジョブ間の関連性を極力損なうことなく、よりジョブネットの再構成の自由度を高めることが可能となる。
【００６６】
以上のように、第２実施形態によれば、第１実施形態と同様の効果に加えて、ジョブ間の関連性を損なうことなくジョブネットの再構成を行うことができるという効果を奏することができる。さらに、優先度をパラメータとして加えた場合には、優先度の高いジョブの処理を優先的に進めることできるという効果を付加することができる。
【図１】
0006302103.tif 000002
【図２】
0006302103.tif 000003
【図３】
0006302103.tif 000004
【図４】
0006302103.tif 000005
【図５】
0006302103.tif 000006
【図６】
0006302103.tif 000007
【図７】
0006302103.tif 000008
【図８】
0006302103.tif 000009