(57)【特許請求の範囲】
【請求項１】
複数のジョブの組み合わせからなる複数のジョブフローに対し、これを管理してかつそのジョブ内容を順次実行するジョブフロー実行装置であって、
各々の前記ジョブを実行する複数のジョブ実行手段と、
前記ジョブフローを構成する各々のジョブを前記ジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、
あらかじめ設定された時刻の到来に反応して前記各ジョブフローを前記仮想ジョブ管理手段に管理させるジョブフロー管理手段とを備え、
前記仮想ジョブ管理手段が、
前記ジョブフローを構成する各々のジョブをいずれの前記ジョブ実行手段に実行させるかを決定する第１のフロー制御部と、
各々の前記ジョブ実行手段に実行させる前記ジョブの実行状態および結果についての情報を前記ジョブフロー管理手段に転送する第１のジョブ投入部とを有し、
前記ジョブフロー管理手段が、
前記ジョブフローをいずれの前記仮想ジョブ管理手段に管理させるかを決定して当該仮想ジョブ管理手段に前記各ジョブの内容および実行先を含むジョブフローの定義情報を送信する第２のフロー制御部と、
前記ジョブの実行状態および結果についての情報を前記第１のジョブ投入部から受信し、前記ジョブを前記ジョブ実行手段に実行させる第２のジョブ投入部とを有することを特徴とするジョブフロー実行装置。
【請求項２】
前記仮想ジョブ管理手段が、各々の前記ジョブ実行手段に実行させる前記ジョブについての情報を記憶させる第１のキューを有し、
前記ジョブフロー管理手段が、前記第１のジョブ投入部から受信した前記ジョブについての情報を記憶させる第２のキューを有することを特徴とする、請求項１に記載のジョブフロー実行装置。
【請求項３】
前記仮想ジョブ管理手段が、前記ジョブ実行手段によるジョブの実行状態である実行結果情報を記憶する第１の実行結果情報記憶部を有すると共に、前記第１のフロー制御部が、前記ジョブ実行手段から前記実行結果情報を受信して前記第１の実行結果情報記憶部の内容を更新する機能を有し、
前記ジョブフロー管理手段が、前記実行結果情報を記憶する第２の実行結果情報記憶部を有すると共に、前記第２のフロー制御部が、前記ジョブ実行手段から前記実行結果情報を受信して前記第２の実行結果情報記憶部の内容を更新する機能を有することを特徴とする、請求項１に記載のジョブフロー実行装置。
【請求項４】
前記ジョブフロー管理手段が、
各々の前記仮想ジョブ管理手段が実行している前記ジョブフローについての情報である仮想ジョブ管理情報を記憶する仮想ジョブ管理情報記憶部と、
ユーザの操作に応じて前記仮想ジョブ管理手段を追加および削除し、これに応じて仮想ジョブ管理情報を更新する仮想管理部とを有することを特徴とする、請求項１に記載のジョブフロー実行装置。
【請求項５】
前記仮想管理部が、前記仮想ジョブ管理手段を削除する際に削除対象の前記仮想ジョブ管理手段で実行されていた前記ジョブフローを、他の前記仮想ジョブ管理手段に移動させて継続させる機能を有することを特徴とする、請求項４に記載のジョブフロー実行装置。
【請求項６】
ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブを前記ジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して前記各ジョブフローを前記仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、複数のジョブフローを管理してかつそのジョブ内容を順次実行する方法であって、
前記ジョブフロー管理手段が、前記ジョブフローをいずれの前記仮想ジョブ管理手段に管理させるかを決定し、
前記ジョブフロー管理手段が、前記決定した仮想ジョブ管理手段に前記各ジョブの内容および実行先を含む当該ジョブフローの定義情報を送信し、
前記仮想ジョブ管理手段が前記ジョブフローを構成する各々のジョブをいずれの前記ジョブ実行手段に実行させるかを決定し、
前記仮想ジョブ管理手段が各々の前記ジョブの実行状態および結果についての情報を前記ジョブフロー管理手段に転送し、
前記ジョブフロー管理手段が、前記仮想ジョブ管理手段から前記ジョブの実行状態および結果についての情報を受信し、
前記ジョブフロー管理手段が、当該ジョブを前記ジョブ実行手段に実行させる
ことを特徴とするジョブフロー実行方法。
【請求項７】
ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブを前記ジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して前記各ジョブフローを前記仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、前記ジョブフロー管理手段が備えているコンピュータに、
前記ジョブフローをいずれの前記仮想ジョブ管理手段に実行させるかを決定する手順と、
前記決定した仮想ジョブ管理手段に前記各ジョブの内容および実行先を含む当該ジョブフローの定義情報を送信する手順と、
前記仮想ジョブ管理手段から前記ジョブ実行手段のいずれに実行させるかを決定した前記ジョブの実行状態および結果についての情報を受信する手順と、
当該ジョブを前記ジョブ実行手段に実行させる手順と
を実行させることを特徴とするジョブフロー実行プログラム。
【請求項８】
ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブを前記ジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して前記各ジョブフローを前記仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、前記仮想ジョブ管理手段が備えているコンピュータに、
前記ジョブフロー管理手段から受信した前記ジョブフローを構成する各々のジョブをいずれの前記ジョブ実行手段に実行させるかを決定する手順と、
前記ジョブ実行手段のいずれに実行させるかを決定した前記ジョブの実行状態および結果についての情報を前記ジョブフロー管理手段に転送する手順と
を実行させることを特徴とするジョブフロー実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はジョブフローの実行に関し、特にジョブフローの実行にかかる負荷の軽減に関する。
【背景技術】
【０００２】
ジョブフローとは、コンピュータで実行される複数のジョブを相互に実行順序および関連を付け、その流れを示すものである。１つのジョブフローの中に、複数のジョブを同時に実行する並列実行や、特定のジョブの実行結果に基づいて以後の実行内容が変化する条件分岐などが含まれる場合もある。たとえば、コンピュータの利用者の少ない夜間や休日に、定型化されたいわゆるバッチ処理を該コンピュータで一括して実行するなどのような用途に、このジョブフローによる処理が利用される。
【０００３】
図１０は、既存のジョブフロー制御分散実行装置４００の一例を示す説明図である。ここで示すジョブフロー制御分散実行装置４００は、１個のプロセッサのみを備える１台のコンピュータであってもよいし、複数個のプロセッサを備えた（いわゆるマルチプロセッサの）コンピュータであってもよく、またネットワークで相互に接続された複数台のコンピュータであってもよく、さらにいわゆる仮想マシンであってもよい。
【０００４】
ここでは、ジョブフロー制御分散実行装置４００は、１個のプロセッサ４１１と、記憶手段４１２と、入出力手段４１３とを備える１台のコンピュータであるという例を示す。
【０００５】
ジョブフロー制御分散実行装置４００は、実行されるジョブフローを管理するジョブ管理手段４２０と、ジョブフローを構成する各々のジョブを実行するジョブ実行手段４３０とが各々プロセッサ４１１で実行されることによって構成される。１つのジョブフロー管理手段４２０に対して、ジョブ実行手段４３０は複数個存在しうる。
【０００６】
図１１は、図１０で示したジョブフロー制御分散実行装置４００のソフトウェアとしての構成について示す説明図である。ジョブ管理手段４２０は、時刻を契機としてジョブフローを実行させるスケジュール判断部４２１、入出力手段４１３を介したユーザからの要求を契機としてジョブフローを実行させるユーザ要求受付部４２２、ジョブフローの実行結果を管理するフロー制御部４２３、ジョブフローに定義された通りに各々のジョブをジョブ実行手段４３０に実行させるジョブ投入部４２４の各々を備える。ジョブ実行手段４３０は、実際にジョブを実行するジョブ実行部４３１を備える。
【０００７】
これに関連する技術文献として、次に示す各々がある。特許文献１には、複数のプロセッサが同一のメモリを共有する構成のコンピュータで、その中の１つのプロセッサをローカルホストとして、その他のプロセッサに仮想ホストを生成し、ローカルホストでジョブの転送先を設定してそれらを各々の仮想ホストに転送して実行させるというジョブ管理システムが記載されている。
【０００８】
また特許文献２には、複数のプロセッサが結合されたコンピュータで、各々のプロセッサの「貢献度」から各ジョブを実行するプロセッサを決定するという分散処理システムが記載されている。特許文献３には、サーバに集中しているジョブフローの制御にかかる負荷をクライアントにも分散するというジョブ制御方式について記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−０５２６７３号公報
【特許文献２】特開平０２−２１３９７７号公報
【特許文献３】特開平０７−３１１７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
図１０〜１１に示したジョブフロー制御分散実行装置４００では、フロー制御部４２３は実行中のジョブフローをすべて管理し、終了したジョブから次にジョブをいずれのジョブ実行手段４３０に実行させるかを決定し、その決定結果をジョブ投入部４２４に通知するという構成である。従って、実行すべきジョブフローが多くなると、フロー制御部４２３に負荷が集中して、ジョブフローの実行に遅延が生じることとなる。
【００１１】
また、ジョブフロー制御分散実行装置４００であるコンピュータが、このジョブフローに関わる処理以外の外部要因によってプロセッサやディスク装置の入出力などにかかる負荷が上がった場合も、同様にジョブフローの実行に遅延が生じる。
【００１２】
この点を解決するために、ジョブフロー間で実行開始時間が重ならないようにスケジュールを最適化することが考えられる。しかしながら、ジョブフローを構成するジョブの中には実行可能な時間帯に制限があるものもあるので、そのようなジョブを含むジョブフローの実行開始時間の設定には制約がある。そのような制約を含む多数のジョブフローを実行するスケジュールの最適化には、高度な技量とノウハウを持つ設計者がその作業を行う必要がある。
【００１３】
また、実際にジョブを実行するジョブ実行手段４３０となるコンピュータを増設し、同時に多数のジョブを実行可能とすることも考えられる。しかしながら、そのような多くのジョブ実行手段４３０を増設するには、物理的に多数のコンピュータを必要とするので、それに必要なコストが増大するばかりか、それらの多数のコンピュータのうちのいずれかに負荷が集中してジョブフローの実行に遅延が生じないよう、実行するジョブフローの分散が最適となるようにスケジュールの最適化を行う必要がある。そこでも高度な技量とノウハウを持つ設計者がその作業を行う必要があり、またその作業にかかる負荷が大きくなる。
【００１４】
特許文献１に記載の技術では、ローカルホストでジョブの転送先を設定してそれらを各々の仮想ホストに転送して実行させるという構成として、ジョブフローの管理にかかる負荷を軽減しようとしている。しかしながら、この構成だとジョブの転送先を設定するローカルホストは１つしか設定できないので、ジョブフローの管理にかかる負荷そのものを軽減したことにはならない。
【００１５】
特許文献２に記載の技術では、各プロセッサ間で相互に「貢献度」を送信しあい、そこから該ジョブを実行するプロセッサについて計算する処理が必要となるので、ジョブフローの管理にかかる負荷を軽減するには不十分である。また、特許文献３に記載の技術では、ジョブフローにかかる負荷をサーバから「クライアントにも分散する」ので、これはジョブフローの管理にかかる負荷に対する本質的な解決ではない。
【００１６】
本発明の目的は、ジョブフローの管理にかかる負荷を軽減して、コンピュータ資源を有効に利用できるジョブフロー実行装置、ジョブフロー実行方法およびジョブフロー実行プログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明に係るジョブフロー実行装置は、複数のジョブの組み合わせからなる複数のジョブフローに対し、これを管理してかつそのジョブ内容を順次実行するジョブフロー実行装置であって、各々のジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段とを備え、仮想ジョブ管理手段が、ジョブフローを構成する各々のジョブをいずれのジョブ実行手段に実行させるかを決定する第１のフロー制御部と、各々のジョブ実行手段に実行させるジョブの実行状態および結果についての情報をジョブフロー管理手段に転送する第１のジョブ投入部とを有し、ジョブフロー管理手段が、ジョブフローをいずれの仮想ジョブ管理手段に管理させるかを決定して当該仮想ジョブ管理手段に各ジョブの内容および実行先を含むジョブフローの定義情報を送信する第２のフロー制御部と、ジョブの実行状態および結果についての情報を第１のジョブ投入部から受信し、ジョブをジョブ実行手段に実行させる第２のジョブ投入部とを有することを特徴とする。
【００１８】
上記目的を達成するため、本発明に係るジョブフロー実行方法は、ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、複数のジョブフローを管理してかつそのジョブ内容を順次実行する方法であって、ジョブフロー管理手段が、ジョブフローをいずれの仮想ジョブ管理手段に管理させるかを決定し、ジョブフロー管理手段が、決定した仮想ジョブ管理手段に各ジョブの内容および実行先を含む当該ジョブフローの定義情報を送信し、仮想ジョブ管理手段がジョブフローを構成する各々のジョブをいずれのジョブ実行手段に実行させるかを決定し、仮想ジョブ管理手段が各々のジョブの実行状態および結果についての情報をジョブフロー管理手段に転送し、ジョブフロー管理手段が、仮想ジョブ管理手段からジョブの実行状態および結果についての情報を受信し、ジョブフロー管理手段が、当該ジョブをジョブ実行手段に実行させることを特徴とする。
【００１９】
上記目的を達成するため、本発明に係るジョブフロー実行プログラムは、ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、ジョブフロー管理手段が備えているコンピュータに、ジョブフローをいずれの仮想ジョブ管理手段に実行させるかを決定する手順と、決定した仮想ジョブ管理手段に各ジョブの内容および実行先を含む当該ジョブフローの定義情報を送信する手順と、仮想ジョブ管理手段からジョブ実行手段のいずれに実行させるかを決定したジョブの実行状態および結果についての情報を受信する手順と、当該ジョブをジョブ実行手段に実行させる手順とを実行させることを特徴とする。
【００２０】
上記目的を達成するため、本発明に係る他のジョブフロー実行プログラムは、ジョブを実行する複数のジョブ実行手段と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段とを有するジョブフロー実行装置にあって、仮想ジョブ管理手段が備えているコンピュータに、ジョブフロー管理手段から受信したジョブフローを構成する各々のジョブをいずれのジョブ実行手段に実行させるかを決定する手順と、ジョブ実行手段のいずれに実行させるかを決定したジョブの実行状態および結果についての情報をジョブフロー管理手段に転送する手順とを実行させることを特徴とする。
【発明の効果】
【００２１】
本発明は仮想ジョブ管理手段を設けて、これに各ジョブを実行するジョブ実行手段を決定させるように構成したので、ジョブ実行手段の決定にかかる負荷を有効に分散することができる。これによって、ジョブフローの管理にかかる負荷を軽減して、コンピュータ資源を有効に利用できるという、優れた特徴を持つジョブフロー実行装置、ジョブフロー実行方法およびジョブフロー実行プログラムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係るジョブフロー制御分散実行装置のソフトウェアとしての構成について示す説明図である。
【図２】本発明の実施形態に係るジョブフロー制御分散実行装置のハードウェアとしての構成について示す説明図である。
【図３】図１に示した定義・実行結果情報の記憶内容を示す表である。
【図４】図１に示した実行結果情報およびジョブ実行情報の記憶内容を示す表である。
【図５】図１〜２に示したジョブフロー制御分散実行装置で、仮想ジョブ管理手段を追加する際の動作を示すフローチャートである。
【図６】図１に示した仮想ジョブ管理情報の記憶内容を示す表である。
【図７】図７は、図５のステップＳ１０３で作成されたキュー情報の記憶内容を示す表である。
【図８】図１〜２に示したジョブフロー制御分散実行装置で、ジョブフロー管理手段が仮想ジョブ管理手段にジョブフローを実行させる際の動作を示すフローチャートである。
【図９】図１〜２に示したジョブフロー制御分散実行装置で、ジョブフロー管理手段が仮想ジョブ管理手段を削除する際の動作を示すフローチャートである。
【図１０】既存のジョブフロー制御分散実行装置の一例を示す説明図である。
【図１１】図１０で示したジョブフロー制御分散実行装置のソフトウェアとしての構成について示す説明図である。
【発明を実施するための形態】
【００２３】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１〜２に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るジョブフロー実行装置（ジョブフロー制御分散実行装置１０）は、複数のジョブの組み合わせからなる複数のジョブフローに対し、これを管理してかつそのジョブ内容を順次実行するジョブフロー実行装置であって、各々のジョブを実行する複数のジョブ実行手段３０と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段４０と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段２０とを有する。ここで仮想ジョブ管理手段４０は、ジョブフローを構成する各々のジョブをいずれのジョブ実行手段に実行させるかを決定する第１のフロー制御部４２と、各々のジョブ実行手段に実行させるジョブについての情報をジョブフロー管理手段２０に転送する第１のジョブ投入部４３とを有する。そしてジョブフロー管理手段２０は、ジョブフローをいずれの仮想ジョブ管理手段に管理させるかを決定して当該仮想ジョブ管理手段にこのジョブフローの定義情報を送信する第２のフロー制御部２３と、ジョブについての情報を第１のジョブ投入部から受信し、ジョブをジョブ実行手段に実行させる第２のジョブ投入部２４とを有する。
【００２４】
そして、仮想ジョブ管理手段４０は、各々のジョブ実行手段３０に実行させるジョブについての情報を記憶させる第１のキュー（キュー情報４５）を有し、ジョブフロー管理手段２０は、第１のジョブ投入手段から受信したジョブについての情報を記憶させる第２のキュー（キュー情報２８）を有する。
【００２５】
さらに、仮想ジョブ管理手段４０は、ジョブ実行手段３０によるジョブの実行状態である実行結果情報を記憶する第１の実行結果情報記憶部（実行結果情報４４）を有すると共に、第１のフロー制御部４２が、ジョブ実行手段３０から実行結果情報を受信して第１の実行結果情報記憶部の内容を更新する機能を有する。ジョブフロー管理手段２０は、実行結果情報を記憶する第２の実行結果情報記憶部（定義・実行結果情報２６）を有すると共に、第２のフロー制御部２３が、ジョブ実行手段から実行結果情報を受信して第２の実行結果情報記憶部の内容を更新する機能を有する。
【００２６】
その一方でジョブフロー管理手段２０は、各々の仮想ジョブ管理手段４０が実行しているジョブフローについての情報である仮想ジョブ管理情報を記憶する仮想ジョブ管理情報記憶部（仮想ジョブ管理情報２７）と、ユーザの操作に応じて仮想ジョブ管理手段を追加および削除し、これに応じて仮想ジョブ管理情報を更新する仮想管理部２５とを有する。この仮想管理部２５は、仮想ジョブ管理手段を削除する際に削除対象の仮想ジョブ管理手段４０で実行されていたジョブフローを、他の仮想ジョブ管理手段４０に移動させて継続させる機能を有する。
【００２７】
この構成を備えることにより、本実施形態に係るジョブフロー実行装置は、ジョブフローの管理にかかる負荷を軽減することが可能となる。
以下、これをより詳細に説明する。
【００２８】
図２は、本実施形態に係るジョブフロー制御分散実行装置１０のハードウェアとしての構成について示す説明図である。ジョブフロー制御分散実行装置１０は、一般的なコンピュータ装置であり、コンピュータプログラムを実行する主体となるプロセッサ１１と、コンピュータプログラムおよびデータを記憶する記憶手段１２と、データの入出力を行う（ディスプレイ、キーボードなどの）入出力手段１３とを備える。
【００２９】
図２では、本実施形態をわかりやすく説明するため、ジョブフロー制御分散実行装置１０は１個のプロセッサ１１のみを備える１台のコンピュータである例を示している。しかしながら、ジョブフロー制御分散実行装置１０は複数個のプロセッサを備えた（いわゆるマルチプロセッサの）コンピュータであってもよく、またネットワークで相互に接続された複数台のコンピュータであってもよい。さらに、ジョブフロー制御分散実行装置１０はいわゆる仮想マシンであってもよい。
【００３０】
図１は、図２で示したジョブフロー制御分散実行装置１０のソフトウェアとしての構成について示す説明図である。ジョブフロー制御分散実行装置１０では、実行されるジョブフローを管理するジョブフロー管理手段２０、ジョブフローを構成する各々のジョブを実行するジョブ実行手段３０、ジョブフローを制御してこのジョブフローに定義された各々のジョブをジョブ実行手段３０に実行させる仮想ジョブ管理手段４０の各々が、プロセッサ１１でコンピュータプログラムとして実行される。
【００３１】
以後、ジョブフロー管理手段２０がジョブフローを仮想ジョブ管理手段４０に実行させることを「ジョブフローを仮想ジョブ管理手段４０に投入する」という場合がある。また、仮想ジョブ管理手段４０がジョブをジョブ実行手段３０に実行させることを「ジョブをジョブ実行手段３０に投入する」という場合がある。
【００３２】
ジョブフロー管理手段２０は、各々のジョブフローの実行を仮想ジョブ管理手段４０に指示する。仮想ジョブ管理手段４０は、その指示に基づき、ジョブフローに定義された各々のジョブをジョブ実行手段３０に実行させる。図面の錯綜を回避するため、図１ではジョブ実行手段３０および仮想ジョブ管理手段４０は各々１つずつしか表記されていないが、図２で示したように１つのジョブフロー管理手段２０に対して、仮想ジョブ管理手段４０およびジョブ実行手段３０は各々複数個存在する。また、後述の通り、仮想ジョブ管理手段４０およびジョブ実行手段３０は、ユーザの操作に応じて動作する個数を増加もしくは減少させることができる。
【００３３】
ジョブフロー管理手段２０は、時刻を契機としてジョブフローを実行させるスケジュール判断部２１、入出力手段１３を介したユーザからの要求を契機としてジョブフローを実行させるユーザ要求受付部２２、ジョブフローをいずれの仮想ジョブ管理手段４０に実行させるかを決定するフロー制御部２３、ジョブをジョブ実行手段３０に実行させるジョブ投入部２４、仮想ジョブ管理部４０を追加および削除してその構成についての情報を管理する仮想管理部２５とを備える。ジョブフロー管理手段２０はまた、各々のジョブフローの定義と実行結果とを格納する定義・実行結果情報２６、仮想ジョブ管理の情報を記憶する仮想ジョブ管理情報２７、ジョブを転送および実行するためのキューを管理するキュー情報２８の各々を、記憶手段１２に記憶する。
【００３４】
ジョブ実行手段３０は、実際にジョブを実行するジョブ実行部３１を備え、また各ジョブの実行情報であるジョブ実行情報３２を記憶手段１２に記憶する。仮想ジョブ実行手段４０は、ジョブフローの実行要求を受け付ける要求受付部４１、ジョブフローを構成する各ジョブをいずれのジョブ実行手段３０に実行させるかを決定するフロー制御部４２、各ジョブをジョブ実行手段３０に投入するジョブ投入部４３とを備える。仮想ジョブ実行手段４０はまた、ジョブフローの実行結果を記憶する実行結果情報４４、ジョブを転送するキューを管理するキュー情報４５の各々を、記憶手段１２に記憶する。
【００３５】
これらの手段は、それぞれ次に示すように動作を行う。スケジュール判断部２１は、スケジュールされた時刻になったらフロー制御部２３に実行するジョブフローを通知する。ユーザ要求受付部２２は、ユーザからジョブフローの実行要求があった場合に要求を受付、実行すべきジョブフローをフロー制御部２３に通知する。
【００３６】
フロー制御部２３は、スケジュール判断部２１もしくはユーザ要求受付部２２から要求のあった実行すべきジョブフローを、仮想管理部２５を用いて、どの仮想ジョブ管理手段４０に実行させるかを決定し、決定した依頼先の仮想ジョブ管理手段４０の要求受付部４１にジョブフローの実行を要求する。フロー制御部２３はまた、仮想ジョブ管理手段４０が実行したジョブフローの結果情報を収集し、定義・実行結果情報２６に記憶する。
【００３７】
ジョブ投入部２４および４３はキュー情報２８および４５をそれぞれ参照してジョブの投入先を決定し、他マシンに対してジョブの投入を行う。ジョブ実行部３１は、投入されたジョブを実行して、その実行情報をジョブ実行情報３２に格納する。
【００３８】
仮想管理部２５は、仮想ジョブ管理手段４０の追加と削除に応じて、各仮想ジョブ管理手段４０の情報を仮想ジョブ管理情報２７に記憶する。また仮想管理部２５は、各仮想ジョブ管理部が実行中のジョブフローについての情報も仮想ジョブ管理情報２７に記憶する。
【００３９】
要求受付部４１は、フロー制御部２３から要求されたジョブフローの実行をフロー制御部４２に通知し、フロー制御部４２はジョブフローを実行する。フロー制御部４２はまた、実行中のジョブフローの状態変更について実行結果情報４４に記憶する。フロー制御部４２はさらに、ジョブフローの実行が終了した場合にそのジョブフローの実行結果をまとめてフロー制御部２３に通知する。
【００４０】
図３は、図１に示した定義・実行結果情報２６の記憶内容を示す表である。定義・実行結果情報２６は、各々のジョブフローの定義について示すジョブフロー定義２６ａと、このジョブフローを構成する各ジョブの内容であるジョブ内容２６ｂ、そして各々のジョブを実行させているジョブ実行手段３０について示す実行先２６ｃといった各々の記憶内容を含む。ジョブフロー定義２６ａ、ジョブ内容２６ｂ、実行先２６ｃとを合わせて該ジョブフローの定義情報という。
【００４１】
定義・実行結果情報２６はさらに、実行中または実行終了したジョブフローの結果を示すジョブフローの結果情報を含む。ジョブフローの結果情報は、実行されたジョブフローの定義情報２６ｄと、該ジョブフローの実行開始時刻２６ｅと終了時刻２６ｆ、そしてこのジョブフローを構成する各ジョブの状態（実行中、正常終了、異常終了）を示す状態２６ｇとを含む。
【００４２】
定義情報２６ｄは、前述のジョブフロー定義２６ａ、ジョブ内容２６ｂ、実行先２６ｃに相当する各情報を含むが、これらの定義情報は変更されることがある。このため、定義情報の変更があっても実行中または実行終了したジョブフローに影響を与えないように、該ジョブフローが実行された時点での定義情報が定義情報２６ｄとして記録される。
【００４３】
図４は、図１に示した実行結果情報４４およびジョブ実行情報３２の記憶内容を示す表である。実行結果情報４４は、前述の定義・実行結果情報２６のジョブフローの結果情報に相当する各内容、実行されたジョブフローの定義情報４４ａと、該ジョブフローの実行開始時刻４４ｂと終了時刻４４ｃ、そしてこのジョブフローを構成する各ジョブの状態を示す状態４４ｄとを含む。
【００４４】
ジョブフロー管理手段２０から仮想ジョブ管理手段４０がジョブフローの実行を指示されると、フロー制御部２３が定義・実行結果情報２６に記録されたこれらの内容を読み出して仮想ジョブ管理手段４０に転送する。この転送を受けた要求受付部４１は、これらの情報をフロー制御部４２に渡し、フロー制御部４２はこれを実行結果情報４４として記憶する。従って、それらの記憶内容は、図３に示した定義・実行結果情報２６の同名の情報と同一である。
【００４５】
また、仮想ジョブ管理手段４０からジョブ実行手段３０がジョブの実行を指示されると、フロー制御部４２は該ジョブについての情報を実行結果情報４４から読み出し、ジョブ実行部３１に送信する。ジョブ実行部３１はこれを、ジョブ実行情報３２として記憶する。従って、ジョブ実行情報３２も、実行されたジョブフローの定義情報３２ａと、該ジョブフローの実行開始時刻３２ｂと終了時刻３２ｃ、そしてこのジョブフローを構成する各ジョブの状態を示すジョブ状態３２ｄとを含む。これに加えてジョブ実行情報３２には、各ジョブの実行を要求した仮想ジョブ管理手段４０のサーバ名である実行要求元３２ｅも記憶されている。
【００４６】
図５は、図１〜２に示したジョブフロー制御分散実行装置１０で、仮想ジョブ管理手段４０を追加する際の動作を示すフローチャートである。また図６は、図１に示した仮想ジョブ管理情報２７の記憶内容を示す表である。仮想ジョブ管理情報２７には、実際に動作する仮想ジョブ管理手段４０の名称を示す仮想ジョブ管理名２７ａと、その各々で実行されているジョブフローの名称である実行中ジョブフロー２７ｂとが対応して記憶されている。１つの仮想ジョブ管理名２７ａに、２つ以上の実行中ジョブフロー２７ｂが対応している場合もある。
【００４７】
以後、本実施形態では、ジョブフロー管理手段２０が管理する仮想ジョブ管理手段４０として「サーバＰ」と「サーバＱ」があった所に、新たな仮想ジョブ管理手段４０として「サーバＲ」を追加するという例を示す。
【００４８】
ユーザから仮想ジョブ管理手段４０を追加する指示を受けた（ステップＳ１０１）仮想管理部２５は、仮想ジョブ管理情報２７に対して、新しく追加されるサーバ名を仮想ジョブ管理名２７ａに追加する（ステップＳ１０２）。前述のように、ここでは既存の仮想ジョブ管理手段４０である「サーバＰ」「サーバＱ」に対して、ステップＳ１０２の処理で、新たな仮想ジョブ管理手段４０として「サーバＲ」が追加された。そのため、仮想ジョブ管理名２７ａ「サーバＲ」に対応する実行中ジョブフロー２７ｂは、この段階ではまだ空欄である。
【００４９】
次に、追加した仮想ジョブ管理手段４０のキュー情報４５に対して、仮想ジョブ管理手段４０からジョブフロー管理手段２０にジョブを転送するキュー情報を作成する（ステップＳ１０３）。図７は、図５のステップＳ１０３で作成されたキュー情報２８および４５の記憶内容を示す表である。図７の上側はジョブフロー管理手段２０のキュー情報２８、図７の下側は仮想ジョブ管理手段４０のキュー情報４５を各々示す。
【００５０】
キュー情報２８は、ジョブフロー管理手段２０が備えるキューの名称であるキュー名２８ａと、これに対応する転送先２８ｂ、ジョブ実行における優先度２８ｃ、１つの仮想ジョブ管理手段４０で同時に実行してよいジョブフローの数である同時実行数２８ｄとが記憶されている。優先度２８ｃは、ここでは「大」「中」「小」の３段階を設定しているが、その段階名や段階数などは任意に設定できる。また同時実行数２８ｄも、必要に応じて任意に設定できる。
【００５１】
キュー情報４５は、キュー情報２８に１対１で対応する内容を記憶するものであるので、データ構造もキュー情報２８と同一である。従って、本明細書ではキュー情報４５に記憶されている内容をキュー名４５ａ、転送先４５ｂ、優先度４５ｃ、同時実行数４５ｄという。
【００５２】
図７の上側に示すジョブフロー管理手段２０のキュー情報２８には、既存のジョブ実行手段３０であるサーバＡのキュー１にジョブを実行させるキュー１と、同じく既存のジョブ実行手段３０であるサーバＢのキュー２にジョブを実行させるキュー２が既に記録されている。キュー情報２８で、各々のキューは、各々のジョブ実行手段３０に１対１で対応する。
【００５３】
ここに、前述のステップＳ１０２で新たに追加された仮想ジョブ管理手段４０であるサーバＲのキュー情報４５は、図７の下側に示すようにキュー１およびキュー２という２つのキューを設定し、各々の転送先４５ｂはジョブフロー管理手段２０（このマシン名を「ジョブ管理Ｍ」とする）である。そして優先度４５ｃおよび同時実行数４５ｄは、各々ジョブフロー管理手段２０のキュー情報２８の優先度２８ｃおよび同時実行数２８ｄと同一である。キュー情報４５の各々のキューは、キュー情報２８の各々のキューに１対１で対応する。即ち、キュー情報４５の各々のキューは、各々のジョブ実行手段３０に１対１で対応する。
【００５４】
即ち、仮想ジョブ管理手段４０であるサーバＲが、ジョブ実行手段３０であるサーバＡおよびサーバＢにジョブを実行させる際には、サーバＲのキュー１およびキュー２にまず該ジョブが登録され、そこからこのジョブがジョブ管理Ｍ（ジョブフロー管理手段２０）のキュー１およびキュー２に転送され、このキュー情報に基づいて実際のジョブ実行手段３０であるサーバＡおよびサーバＢに転送される。このことにより、以下の作用が生じる。
【００５５】
仮想ジョブ管理手段４０からジョブ実行手段３０へジョブを直接投入する構成とした場合、仮想ジョブ管理手段４０が複数個あると、各ジョブ実行手段３０の優先度２８ｃおよび同時実行数２８ｄについての情報について各々の仮想ジョブ管理手段４０の間で整合を保つことが難しくなり、また実際に各ジョブ実行手段３０で実行しているジョブの状態とも整合を保つことが難しくなるという問題が生じる。
【００５６】
このため、本実施形態では仮想ジョブ管理手段４０が各々のジョブ実行手段３０に割り当てたジョブを、ジョブフロー管理手段２０の転送キューを経由して各々のジョブ実行手段３０に実行させる。これによって、各々の仮想ジョブ管理手段４０が、各々のジョブ実行手段３０の優先度２８ｃおよび同時実行数２８ｄについての情報を正確に把握し、整合性を保つことが可能となる。また、各々の仮想ジョブ管理手段４０がそのような情報を把握するための動作を行う必要がないので、それに伴う負荷の増大もない。
【００５７】
図８は、図１〜２に示したジョブフロー制御分散実行装置１０で、ジョブフロー管理手段２０が仮想ジョブ管理手段４０にジョブフローを実行させる際の動作を示すフローチャートである。ユーザからユーザ要求受付部２２を介してジョブフロー実行の指示を受けた、またはスケジュール判断部２１が特定の時刻が経過したことを検出した場合に、ジョブフローを実行開始するフロー制御部２３は（ステップＳ２０１）、まず仮想ジョブ管理情報２７の記憶内容に基づいて、ジョブの転送先を決定する（ステップＳ２０２）。
【００５８】
ステップＳ２０２で「ジョブの転送先を決定する」動作は、たとえば実行中のジョブフローが最も少ない仮想ジョブ管理手段４０を投入先として決定するなど、あらかじめ設定された適切なルールに従って行うことができる。図６で示す例では、定義された仮想ジョブ管理手段４０であるサーバＰ、Ｑ、Ｒの中で、実行中のジョブフローが最も少ない（０個）サーバＲが転送先となる。
【００５９】
転送先が決定したら、フロー制御部２３は定義・実行結果情報２６に記憶された該ジョブフローの定義情報を読み出し、これを転送先の仮想ジョブ管理手段４０の要求受付部４１に転送する（ステップＳ２０３）。この転送を受け付けた仮想ジョブ管理手段４０の要求受付部４１は、該ジョブフローの実行を開始した旨をジョブフロー管理手段２０の仮想管理部２５に通知する。
【００６０】
この通知を受けた仮想管理部２５は、仮想ジョブ管理情報２７でこの仮想ジョブ管理手段４０に対応する仮想ジョブ管理名２７ａの実行中ジョブフロー２７ｂに、該ジョブフローについての情報を追加する（ステップＳ２０４）。またこれと同時に、定義・実行結果情報２６に記録されている該ジョブフローの定義情報であるジョブフロー定義２６ａ、ジョブ内容２６ｂ、実行先２６ｃも、フロー制御部２３が読み出して要求受付部４１に転送し、フロー制御部４２はこれらを実行結果情報４４として記憶する。
【００６１】
フロー制御部４２は、ジョブフロー管理手段２０から転送を受けたジョブフローの実行を開始する（ステップＳ２０５）。その際、フロー制御部４２はジョブフロー定義４４ａおよびキュー情報４５に従って、定義された各々のジョブをどのジョブ実行手段３０に実行させるかを決定し、その決定結果をジョブ投入部４３に通知する（ステップＳ２０６）。
【００６２】
ステップＳ２０６で各々のジョブを実行させるジョブ実行手段３０を決定する際には、たとえば「優先度４５ｃが最も高く、かつ同時実行数４５ｄが上限に到達していないキュー（ジョブ実行手段３０）から、優先的にジョブを投入する」などのように、あらかじめ設定された適切なルールに従って、該ジョブを実行させるジョブ実行手段３０を決定することができる。
【００６３】
ステップＳ２０６で決定結果の通知を受けたジョブ投入部４３は、その決定されたジョブ実行手段３０に対応するキュー情報４５に該ジョブについての情報を記憶させ、該ジョブをそのジョブ実行手段３０に投入する。同時に、その内容はジョブ投入部４３からジョブ投入部２４に転送され、ジョブ投入部２４はジョブフロー管理手段２０のキュー情報２８で対応するとされるキューにその内容を記憶する。
【００６４】
これと同時に、実行結果情報４４として記憶されたジョブフローの定義情報４４ａと、該ジョブフローの実行開始時刻４４ｂと終了時刻４４ｃ、そしてこのジョブフローを構成する各ジョブの状態を示すジョブ状態４４ｄも、ジョブ投入部４３および２４を介してジョブ実行手段３０に転送され、ジョブ実行情報３２として記憶される。
【００６５】
ジョブ実行部３１は、このジョブを実行すると共に、その実行状態に応じてジョブ実行情報３２を書き換えていく（ステップＳ２０７）。書き換えられたジョブ実行情報３２は、フロー制御部２３および４２を介して実行結果情報４４、および定義・実行結果情報２６にも反映される。以上のステップＳ２０６〜２０７の動作を、ジョブフローが終了するまで継続する（ステップＳ２０８）。
【００６６】
ジョブフローが終了すると、フロー制御部４２は該ジョブフローの実行終了の旨と実行結果とをフロー制御部２３に通知する（ステップＳ２０９）。この通知を受けたフロー制御部２３は、通知された実行結果を定義・実行結果情報２６の結果情報として保存する（ステップＳ２１０）。フロー制御部２３は最後に、仮想管理部２５に該ジョブフローの完了を通知し、仮想管理部２５は仮想ジョブ管理情報２７の実行中ジョブフロー２７ｂから、この完了したジョブフローを削除する（ステップＳ２１１）。
【００６７】
図９は、図１〜２に示したジョブフロー制御分散実行装置１０で、ジョブフロー管理手段２０が仮想ジョブ管理手段４０を削除する際の動作を示すフローチャートである。ユーザからユーザ要求受付部２２を介して仮想ジョブ管理手段４０削除の指示を受けた仮想管理部２５は（ステップＳ３０１）、まずその削除対象となる仮想ジョブ管理手段４０が実行中のジョブフローが存在する否かを仮想ジョブ管理情報２７で調べる（ステップＳ３０２）。
【００６８】
該仮想ジョブ管理手段４０が実行中のジョブフローが存在しない（ステップＳ３０２：ＮＯ）場合は、仮想管理部２５がキュー情報２８から図５のステップＳ１０３で作成されたキューを削除し（ステップＳ３０３）、仮想管理部２５が仮想ジョブ管理情報２７から該仮想ジョブ管理手段４０に対応する仮想ジョブ管理名２７ａを削除する（ステップＳ３０４）。
【００６９】
ステップＳ３０２で、該仮想ジョブ管理手段４０が実行中のジョブフローが存在する場合は、その実行中のジョブフローを他の仮想ジョブ管理手段４０に移して実行を継続させる動作を行う。まず、フロー制御部４２がジョブ投入部４３および２４を介して該ジョブフロー（に属する各々のジョブ）の実行を停止し（ステップＳ３０５）、フロー制御部４２はその実行中のジョブフローについての情報を実行結果情報４４からフロー制御部２３に転送する（ステップＳ３０６）。
【００７０】
ステップＳ３０６で実行中のジョブフローについての情報を受けたジョブフロー管理手段２０のフロー制御部２３は、このジョブフローについての情報を他の仮想ジョブ管理手段４０に渡して実行させる（ステップＳ３０７）。これに対応して、仮想管理部２５が仮想ジョブ管理情報２７でこの仮想ジョブ管理手段４０に対応する仮想ジョブ管理名２７ａの実行中ジョブフロー２７ｂを更新する（ステップＳ３０８）。
【００７１】
そして、仮想管理部２５は、ジョブ実行部３１を介してジョブ実行情報３２の実行要求元３２ｅを、変更後の仮想ジョブ管理手段４０のサーバ名に更新させる（ステップＳ３０９）。最後に、フロー制御部４２がジョブ投入部４３および２４を介して、ステップＳ３０５で停止していた該ジョブフロー（に属する各々のジョブ）の実行を再開させる（ステップＳ３１０）。
【００７２】
以上のステップＳ３０５〜３１０の動作によって、削除しようとしていた仮想ジョブ管理手段４０が実行中のジョブフローは他の仮想ジョブ管理手段４０に移されるので、その後はステップＳ３０３〜３０４の処理によって、この仮想ジョブ管理手段４０は削除される。
【００７３】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係るジョブフロー実行方法は、ジョブを実行する複数のジョブ実行手段３０と、ジョブフローを構成する各々のジョブをジョブ実行手段のうちのいずれに実行させるかを決定してこれを管理する複数の仮想ジョブ管理手段４０と、あらかじめ設定された時刻の到来に反応して各ジョブフローを仮想ジョブ管理手段に管理させるジョブフロー管理手段２０とを有するジョブフロー実行装置にあって、複数のジョブフローを管理してかつそのジョブ内容を順次実行する方法である。ジョブフロー管理手段２０が、ジョブフローをいずれの仮想ジョブ管理手段に実行させるかを決定し、ジョブフロー管理手段が、決定した仮想ジョブ管理手段にこのジョブフローの定義情報を送信し、仮想ジョブ管理手段がジョブフローを構成する各々のジョブをいずれのジョブ実行手段に実行させるかを決定し（図８：ステップＳ２０２）、仮想ジョブ管理手段が各々のジョブについての情報をジョブフロー管理手段に転送し（図８：ステップＳ２０３）、ジョブフロー管理手段が、仮想ジョブ管理手段からジョブについての情報を受信し、ジョブフロー管理手段が、当該ジョブをジョブ実行手段に実行させる（図８：ステップＳ２０５〜２０６）。
【００７４】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるジョブフロー実行装置１０に実行させるようにしてもよい。
この構成および動作により、本実施形態は以下のような効果を奏する。
【００７５】
本実施形態では、各々のジョブを実行するジョブ実行手段を決定して該ジョブを投入するという動作を、複数の仮想ジョブ管理手段に分散させている。このため、図１０〜１１に示した既存のジョブフロー実行装置ではジョブ管理手段に集中しやすかったこの動作にかかる負荷を、有効に分散して軽減することができる。その際、高度な技量とノウハウを持つ設計者がその作業を行う必要は特にないので、その作業にかかる労力とコストも有効に削減される。
【００７６】
また、ジョブ実行手段は必要に応じて追加もしくは削除可能であるばかりか、仮想ジョブ管理手段を必要に応じて追加もしくは削除することも可能である。このことによって、限られたコンピュータ資源を有効に活用して、遅延を少なくしてジョブフローを実行することができる。
【００７７】
（第１の実施形態の拡張）
前述の実施形態で示した仮想ジョブ管理手段をユーザ操作によって追加もしくは削除するのではなく、実際の各装置にかかる負荷に基づいて仮想ジョブ管理手段を追加もしくは削除するようにしてもよい。即ち、あらかじめ使用可能なコンピュータ装置についての情報を登録したシステム管理サーバを追加し、このシステム管理サーバが登録済みの各装置のリソースを定期的に収集し、仮想ジョブ管理手段として使用中の全ての装置にかかる負荷があらかじめ設定された閾値を越えた場合に新たな仮想ジョブ管理サーバを追加するようにする。また一定時間ジョブフローを実行していない仮想ジョブ管理サーバがあれば、これを削除するようにする。
【００７８】
このような構成を取ることにより、ユーザが負荷を判断しなくとも、システム全体のリソースを有効に活用することが可能となる。特に、仮想コンピュータによって本実施形態に示したジョブフロー実行装置を構成している場合に、この構成を採用することが有用となる。
【００７９】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【００８０】
本発明はジョブ管理システムに利用可能である。特に、多くのジョブフローが同時に実行される大規模なシステムにおいて効果を発揮する。
【符号の説明】
【００８１】
１０  ジョブフロー制御分散実行装置
１１  プロセッサ
１２  記憶手段
１３  入出力手段
２０  ジョブフロー管理手段
２１  スケジュール判断部
２２  ユーザ要求受付部
２３、４２  フロー制御部
２４、４３  ジョブ投入部
２５  仮想管理部
２６  定義・実行結果情報
２７  仮想ジョブ管理情報
２８、４５  キュー情報
３０  ジョブ実行手段
３１  ジョブ実行部
３２  ジョブ実行情報
４０  仮想ジョブ管理手段
４１  要求受付部
４４  実行結果情報
【図１】
0005446620.tif 000002
【図２】
0005446620.tif 000003
【図３】
0005446620.tif 000004
【図４】
0005446620.tif 000005
【図５】
0005446620.tif 000006
【図６】
0005446620.tif 000007
【図７】
0005446620.tif 000008
【図８】
0005446620.tif 000009
【図９】
0005446620.tif 000010
【図１０】
0005446620.tif 000011
【図１１】
0005446620.tif 000012