(57)【要約】【課題】負荷分散ソフト等の外部機器を制御するソフトが適用できない場合であっても、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能なジョブ制御装置、およびジョブ制御方法を提供する。【解決手段】ジョブ制御装置に接続された外部機器が有する処理装置によるジョブの実行が可能か否かを示す稼働状態ファイルを処理装置に対応付けて記憶する記憶部と、クライアント端末から処理装置を用いたジョブの実行要求およびジョブの実行命令を受信し、またはクライアント端末に稼働状態ファイルを送信する通信部と、実行要求に従ってジョブの実行が可能であるか否かを判定し、ジョブの実行が可能であると判定した場合、通信部に稼働状態ファイルをクライアント端末に送信させることによりジョブの実行権限を提供し、実行命令に基づいてジョブを実行させる制御部と、を備える。【選択図】図２
2013004057.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末からのジョブの実行要求に応じて前記ジョブの実行を制御するジョブ制御装置であって、
前記ジョブ制御装置に接続された外部機器が有する処理装置によるジョブの実行が可能か否かを示す稼働状態ファイルを前記処理装置に対応付けて記憶する記憶部と、
前記クライアント端末から前記処理装置を用いたジョブの実行要求および前記ジョブの実行命令を受信し、または前記クライアント端末に前記稼働状態ファイルを送信する通信部と、
前記実行要求に従って前記ジョブの実行が可能であるか否かを判定し、前記ジョブの実行が可能であると判定した場合、前記通信部に前記稼働状態ファイルを前記クライアント端末に送信させることにより前記ジョブの実行権限を提供し、前記実行命令に基づいて前記ジョブを実行させる制御部と、
を備えたことを特徴とするジョブ制御装置。
【請求項２】
前記制御部は、前記実行要求において指定された前記処理装置が前記記憶部に存在しているか否かを判定することにより、前記ジョブの実行が可能か否かを判定する、
ことを特徴とする請求項１に記載のジョブ制御装置。
【請求項３】
前記通信部は、前記ジョブの実行が終了した場合には前記クライアント端末から前記稼働状態ファイルを受信して前記記憶部に記憶させ、
前記制御部は、前記実行要求において指定された前記処理装置が前記記憶部に存在していないと判定した場合、前記ジョブの実行が可能ではないと判断し、前記クライアント端末から前記稼働状態ファイルを受信するまで前記ジョブの実行を待機させる、
ことを特徴とする請求項２に記載のジョブ制御装置。
【請求項４】
前記外部機器は複数の前記処理装置を有し、
前記制御部は、前記実行要求において指定された前記処理装置が前記記憶部に存在しているか否かを判定し、前記処理装置が前記記憶部に存在していないと判定した場合、指定された前記処理装置とは異なる他の処理装置を用いて前記ジョブを実行させる、
ことを特徴とする請求項２または３に記載のジョブ制御装置。
【請求項５】
前記処理装置は所定の配置パターンに従って配置され、
前記制御部は、前記実行要求において指定された複数の前記処理装置が前記記憶部に存在しているか否かを判定し、複数の前記処理装置が前記記憶部に存在していないと判定した場合、指定された前記処理装置とは異なる他の処理装置であって、指定された複数の前記処理装置と同じ配置パターンの処理装置を用いて前記ジョブを実行させる、
ことを特徴とする請求項４に記載のジョブ制御装置。
【請求項６】
前記記憶部は、複数の前記処理装置のそれぞれの使用状態を示す使用状態テーブルをさらに記憶し、
前記制御部は、指定された複数の前記処理装置の配置パターンと、前記使用状態が使用可能となっている処理装置の配置パターンとを比較することにより、指定された複数の前記処理装置と同じ配置パターンの処理装置を検索する、
ことを特徴とする請求項５に記載のジョブ制御装置。
【請求項７】
前記稼働状態ファイルには、前記ジョブの実行が待機させられた場合におけるジョブのリトライ回数、前記処理装置の使用率または稼働率、前記ジョブの実行時間またはジョブの実行状態を示す情報、の少なくともいずれかを含む、
ことを特徴とする請求項３〜６のいずれか１項に記載のジョブ制御装置。
【請求項８】
クライアント端末からのジョブの実行要求に応じて前記ジョブの実行を制御するジョブ制御装置で行われるジョブ制御方法であって、
前記クライアント端末から前記処理装置を用いたジョブの実行要求を受信するステップと、
前記実行要求に従って前記ジョブの実行が可能であるか否かを判定するステップと、
前記ジョブの実行が可能であると判定された場合、前記ジョブ制御装置に接続された外部機器が有する処理装置によるジョブの実行が可能か否かを示し前記処理装置に対応付けられた稼働状態ファイルを前記クライアント端末に送信させることにより前記ジョブの実行権限を提供するステップと、
前記クライアント端末から前記ジョブの実行命令を受信するステップと、
前記実行命令に基づいて前記ジョブを実行させるステップと、
を含むことを特徴とするジョブ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ等のコンピュータにおいて行われるジョブの実行を制御するジョブ制御装置、およびジョブ制御方法に関するものである。
【背景技術】
【０００２】
従来、コンピュータで行われるジョブの実行を制御する場合には、コンピュータに対する負荷が集中しないように、負荷分散ソフト等のアプリケーションを用いて、ジョブの実行を制御する場合が多い。この場合、負荷分散ソフトでは、そのソフトがサポートしている監視可能なリソース、例えば、ＣＰＵ（Central  Processing  Unit）の稼働率やメモリの残量、あるいはＨＤＤ（Hard  Disk  Drive）の残量などを監視しながら、任意のタイミングで発行されるジョブの実行要求を複数受け付け、ジョブの実行要求に見合うコンピュータのリソースが得られる状態となるまで待機させ、その要求に見合うリソースが確保された場合にジョブを実行させる制御を行っている。
【０００３】
具体的には、図９に示すように、ユーザ９００およびユーザ９０１が使用するクライアント９０２およびクライアント９０３と、負荷分散ソフト９０６を有したサーバ９０５と、ジョブを実行し、その制御対象となる実行サーバ９０８および実行サーバ９０９等から構成されるサーバ群９０７とがネットワーク９０４によって接続されたジョブ制御システム９０００では、サーバ９０５は、負荷分散ソフト９０６によって、実行サーバ９０８等が有するリソースの空き状況等を監視しつつ、ジョブの実行を制御することができる。
【０００４】
このような負荷分散ソフトを用いてジョブの実行を制御するものとして、例えば、特許文献１や特許文献２に開示された技術がある。特許文献１では、異機種混合のネットワーク上の負荷に対し、複数のコンピュータを１つのシステムとして統括することにより、システムの負荷分散処理を実現している。また、特許文献２では、ＣＰＵ負荷やＣＰＵ数、ディスク容量といった実行サーバの可視化されたリソースを監視することにより、サーバの負荷分散処理を実現している。これらのいずれの特許文献の手法も、負荷分散ソフトを使ってＣＰＵの状態を監視しながらジョブの実行を制御するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１９４６７４号公報
【特許文献２】特開２００８−１５８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field-Programmable  Gate  Array）のようなＬＳＩ（Large  Scale  Integration）を備えた処理装置を複数有した機器にあっては、その機器側にジョブの実行を制御するためのソフトがない場合がある。この場合、サーバがそれぞれの処理装置でのジョブの実行状況を把握することが出来ないため、たとえサーバが負荷分散ソフトを有していたとしても、その負荷分散ソフトによってサーバからその機器に対するジョブの実行を制御できない。
【０００７】
一般に、ネットワークを経由して複数のユーザのそれぞれが、任意のタイミングでジョブを実行させる場合、各ジョブ同士の衝突が生じ、ジョブが異常終了してしまう場合がある。特に、上述した機器のように、１つの機器に複数の処理装置を有している場合には、その機器の中で、処理装置が備えたリソースの状況（例えば、ＣＰＵ、メモリ、ＨＤＤの使用率等）を監視し、実行させるジョブを振り分ける等の制御を行う必要も生じる。また、これとは逆に、処理装置に空きがあるにも関わらず使用されない状態が生じる場合がある。
【０００８】
このような課題に対し、従来技術では、ジョブを実行させたり、あるいはジョブを待たせたりする等の調停制御を行う場合や、どの処理装置が空いているのかを監視した上でジョブを実行させる等の対応を行う場合、ユーザ自身が人手で行っていた。しかしながら、このような状況では、ジョブの制御を人手で行うためミスが発生しやすく、その結果、依然としてジョブの衝突が回避できずに異常終了を招いたり、人手によって処理装置を監視するために、効率が悪く処理が煩雑になってしまう問題があった。
【０００９】
このように、従来の技術・手法は、負荷分散ソフトによってジョブの制御やリソースの監視が可能な機器に限られたものであったため、これに該当しない機器には適用できず、このような場合であっても、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能な技術が求められていた。
【００１０】
本発明は、上記に鑑みてなされたものであって、負荷分散ソフト等の外部機器を制御するソフトが適用できない場合であっても、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能なジョブ制御装置、およびジョブ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明にかかるジョブ制御装置は、クライアント端末からのジョブの実行要求に応じて前記ジョブの実行を制御するジョブ制御装置であって、前記ジョブ制御装置に接続された外部機器が有する処理装置によるジョブの実行が可能か否かを示す稼働状態ファイルを前記処理装置に対応付けて記憶する記憶部と、前記クライアント端末から前記処理装置を用いたジョブの実行要求および前記ジョブの実行命令を受信し、または前記クライアント端末に前記稼働状態ファイルを送信する通信部と、前記実行要求に従って前記ジョブの実行が可能であるか否かを判定し、前記ジョブの実行が可能であると判定した場合、前記通信部に前記稼働状態ファイルを前記クライアント端末に送信させることにより前記ジョブの実行権限を提供し、前記実行命令に基づいて前記ジョブを実行させる制御部と、を備えたことを特徴とする。
【００１２】
また、本発明は、上記ジョブ制御装置で行われるジョブ制御方法である。
【発明の効果】
【００１３】
本発明によれば、負荷分散ソフト等の外部機器を制御するソフトが適用できない場合であっても、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能なジョブ制御装置、およびジョブ制御方法を提供することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態におけるジョブ制御システムの構成例を示す図である。
【図２】第１の実施の形態におけるジョブ制御システムが行うジョブ制御処理の処理手順を示すシーケンス図である。
【図３】従来技術によってジョブの制御を行う場合の処理手順を示すシーケンス図である。
【図４】第２の実施の形態におけるジョブ制御システムの構成例を示す図である。
【図５Ａ】第２の実施の形態における使用状態管理テーブルの例を示す図である。
【図５Ｂ】第２の実施の形態における使用状態管理テーブルの他の例を示す図である。
【図６】第２の実施の形態における外部機器が有する処理装置（装置１〜９）の構成例を示す図である。
【図７】第２の実施の形態におけるジョブ制御システムが行うジョブ制御処理の処理手順を示すシーケンス図である。
【図８Ａ】ジョブを実行する際に処理装置が使用されている様子を示す図である。
【図８Ｂ】同一配置パターンである処理装置の例を示す図である。
【図８Ｃ】同一配置パターンではない処理装置の例を示す図である。
【図９】従来技術によりジョブを制御する構成の例を示す図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、本発明にかかるジョブ制御装置、およびジョブ制御方法の実施の形態を詳細に説明する。
【実施例１】
【００１６】
図１は、第１の実施の形態におけるジョブ制御システム１０００の構成例を示す図である。図１に示すように、ジョブ制御システム１０００は、ジョブ制御システム１０００の利用者であるユーザＡやユーザＢが使用するクライアント１００およびクライアント１０１と、外部記憶装置２３０を備えたサーバ２００と、外部機器３００と、ネットワークＮ１およびＮ２とを含んで構成されている。なお、ネットワークＮ１およびＮ２は、例えば、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等の一般的なネットワークである。
【００１７】
クライアント１００および１０１は、ネットワークＮ１を介してジョブの実行要求を行う端末である。なお、特に図示していないが、これらのクライアントのそれぞれは、ユーザからジョブの実行要求を受け付けるためのキーボードやマウス等から構成される入力装置や、そのジョブの実行要求をＮＩＣ（Network  Interface  Card）等から構成される通信装置からサーバ２００に送信するためのＣＰＵ（Central  Processing  Unit）等から構成される演算装置を有しているものとする。これらのクライアントが行う処理については、シーケンス図を用いて後述する。
【００１８】
サーバ２００は、例えば、エミュレータサーバであり、クライアント１００および１０１から受け付けたジョブの実行要求にしたがって、外部機器３００のリソースの状況（例えば、ＣＰＵ、メモリ、ＨＤＤ（Hard  Disk  Drive）の使用率等）を把握しつつ、外部機器３００が行うジョブの実行を制御するものである。図１に示すように、サーバ２００は、外部機器制御部２１０と、ジョブ制御部２２０とを含んで構成されている。なお、特に図示していないが、サーバ２００は、上述したクライアントと同様に、入力装置、通信装置、あるいは演算装置を有しているものとする。
【００１９】
外部機器制御部２１０は、クライアント１００および１０１からジョブの実行要求がされ、その後ジョブの実行コマンドが投入された場合に、外部機器３００を用いてジョブを実行させるものである。外部機器制御部２１０が行う具体的な処理については、シーケンス図を用いて後述する。
【００２０】
ジョブ制御部２２０は、クライアント１００および１０１からジョブの実行要求がされた場合に、外部記憶装置２３０にアクセスして稼働状態ファイル（後述）を取得し、取得した稼働状態ファイルをクライアントとの間で受け渡しすることによって、ジョブの実行を制御するものである。
【００２１】
例えば、ジョブ制御部２２０は、上述したクライアントからジョブの実行要求を受け取った場合に、その実行要求に含んで記載されているジョブを実行するために必要な外部機器３００が有する装置の装置名を読み取って、その装置名に対応する稼働状態ファイルが外部記憶装置２３０に存在しているか否かを判断することによって、そのジョブの実行可否を判定する。また、ジョブ制御部２２０は、その判定によってジョブの実行が可能であると判定した場合には、外部記憶装置２３０に存在している稼働状態ファイルを、そのジョブの実行を要求したクライアントに渡し、その判定によってジョブの実行が可能でないと判定した場合には、そのジョブの実行を要求したクライアントにＷａｉｔ指示を出す。後述するように、ジョブ制御部２２０は、稼働状態ファイルがどこに存在しているのかを判定することによって、要求されたジョブの実行を制御している。ジョブ制御部２２０が行う具体的な処理については、シーケンス図を用いて後述する。
【００２２】
なお、サーバ２００が有する上述した各部は、外部機器制御部２１０、およびジョブ制御部２２０の各機能を実現するためのソフトウェアプログラムにより実行される。これらのソフトウェアプログラムは、例えば、上述した各部を含むモジュール構成となっており、実際のハードウェアとしては、ＣＰＵ等の制御部がＨＤＤ等の記録装置からこれらのソフトウェアプログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、外部機器制御部２１０、およびジョブ制御部２２０の各部が主記憶装置上に生成されるようになっている。
【００２３】
また、上述したソフトウェアプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disc）等のコンピュータで読み取り可能な記録媒体に記録されて提供することも可能である。さらに、これらのソフトウェアプログラムを、ネットワーク経由でダウンロードさせて提供または配布するように構成してもよい。続いて、外部記憶部２３０について説明する。
【００２４】
外部記憶部２３０は、サーバ２００との間でバス等によって接続されたＨＤＤ等から構成される記憶装置である。図１に示すように、外部記憶部２３０は、稼働状態ファイル（図１に示す例では３つの稼働状態ファイル）を記憶している。ここで、稼働状態ファイルとは、外部機器３００が有する複数の装置のそれぞれの稼働状態を判断するためのファイル（例えば、装置１〜３が空き状態であるか、または使用中の状態であるか等、ジョブの実行が可能であるか否かを判断するためのファイル）である。ジョブ制御部２２０は、稼働状態ファイルが外部記憶部２３０にある場合には、その稼働状態ファイルに対応する装置が空き状態であると判定し、また、稼働状態ファイルが外部記憶部２３０ではなくクライアントにある場合には、その稼働状態ファイルに対応する装置が使用中の状態であると判定する。このように、稼働状態ファイルの有無を判定し、要求されたジョブが実行可能であるか否かを判断している。したがって、稼働状態ファイルの構成については特に制限はなく、例えば、空ファイルであってもよい。続いて、外部機器３００について説明する。
【００２５】
外部機器３００は、例えば、エミュレータから構成され、ジョブを実行してその結果を検証するための専用の装置である。図１に示すように、外部機器３００は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field-Programmable  Gate  Array）のようなＬＳＩ（Large  Scale  Integration）から構成される複数の処理装置（装置１〜装置３）を有している。これらの処理装置は、サーバ２００を介して、クライアントからのジョブ投入コマンドに従ってジョブを実行する。なお、外部機器３００は、サーバ２００が有する外部機器制御部２１０や従来からある負荷分散負ソフト等からの指示を受けてジョブの実行を制御する環境にはないものとする。続いて、ジョブ制御システム１０００が行うジョブ制御処理について説明する。
【００２６】
図２は、ジョブ制御システム１０００が行うジョブ制御処理の処理手順を示すシーケンス図である。図２に示すように、まず、ユーザＡが外部機器３００の装置１と装置２を使用してジョブを実行する場合、その実行要求を、クライアント１００からサーバ２００のジョブ制御部２２０に送信する（ステップＳ２０１）。この実行要求は、例えば、その要求自体と、ジョブの実行に必要な処理装置の番号の組合せによって構成され、クライアントでジョブをコンパイルすること等によって、必要な処理装置の番号がわかるものとする。
【００２７】
ジョブ制御部２２０は、その実行要求を受信すると、そのジョブに必要な処理装置の番号を読み取り、外部記憶部２３０にその番号に対応する稼働状態ファイルを検索する（ステップＳ２０２）。このとき、ジョブ制御部２２０は、外部記憶部２３０にその番号に対応する稼働状態ファイルが存在した場合には、その番号の処理装置が空いていると判断する。
【００２８】
そして、図２に示す例では、稼働状態ファイルは１〜２までの番号のファイルが存在しており、ジョブの実行要求とともに送信された処理装置の番号１および２が指定されているため、ジョブ制御部２２０は、これらの番号の処理装置が空いている（要求に合致している）と判定し（ステップＳ２０３）、その番号の稼働状態ファイルをクライアント１００に送信し、ジョブの実行権限を提供する（ステップＳ２０４）。
【００２９】
クライアント１００は、稼働状態ファイルを受信すると、要求されたジョブを実行させるためのコマンドを投入する（ステップＳ２０５）。このように、ユーザがジョブを実行する際には、そのジョブで使用する処理装置の番号に対応する稼働状態ファイルがクライアント１００に一時的に記憶され、このような状態で、要求したジョブが実行されることとなる。
【００３０】
サーバ２００の外部機器制御部２１０は、クライアント１００からジョブの実行コマンドを受信すると、指定された外部機器３００の処理装置を使用したジョブの実行を指示し（ステップＳ２０６）、その指示に従って、装置１および装置２は要求されたジョブを実行する（ステップＳ２０７、Ｓ２０８）。ステップＳ２０７およびＳ２０８においてジョブが実行されると、ユーザはそのジョブが終了するまで待機する。このとき、番号１および２の稼働状態ファイルは、クライアント１００に一時的に記憶された状態であり、番号３の稼働状態ファイルは、ユーザＡが要求したジョブでは使用されないため、外部記憶部２３０に残った状態となっている。
【００３１】
その後、ユーザＡが要求したジョブの実行中に、ユーザＢが外部機器３００の装置２と装置３を使用してジョブを実行する場合、その実行要求を、クライアント１０１からサーバ２００のジョブ制御部２２０に送信する（ステップＳ２０９）。
【００３２】
ジョブ制御部２２０は、その実行要求を受信すると、そのジョブに必要な処理装置の番号を読み取り、外部記憶部２３０にその番号に対応する稼働状態ファイルを検索する（ステップＳ２１０）。このとき、ジョブ制御部２２０は、外部記憶部２３０にその番号に対応する稼働状態ファイルが存在しない場合には、その番号の処理装置が使用中であると判断する。
【００３３】
そして、図２に示す例では、ジョブの実行要求とともに送信された処理装置の番号２および３が指定されているところ、稼働状態ファイルは１〜２までの番号のファイルが存在せず、番号３の稼働状態ファイルのみが存在している状態であるため、ジョブ制御部２２０は、番号２の処理装置が使用中である（不足している）と判定し（ステップＳ２１１）、Ｗａｉｔ指示をクライアント１０１に送信し、ジョブの実行を待機させる（ステップＳ２１２）。
【００３４】
クライアント１０１は、サーバ２００からＷａｉｔ指示を受信すると、そのＷａｉｔ指示に従って、所定の時間だけ待機した後（ステップＳ２１３）、ジョブの実行要求を再び送信してリトライする（ステップＳ２１４）。クライアント１０１は、このステップＳ２０９〜Ｓ２１４までの一連の処理（Ａ）を、ジョブの実行要求が受け入れられるまで繰り返す。
【００３５】
その後、ユーザＡが要求したジョブの実行が完了すると、サーバ２００の外部機器制御部２１０は、装置１および２からその旨の通知を受け（ステップＳ２１５）、クライアント１００に、要求したジョブの実行が正常終了した旨を通知する（ステップＳ２１６）。
【００３６】
クライアント１００は、ジョブが正常終了した旨の通知をサーバ２００から受信すると、一時的に記憶していた稼働状態ファイルをサーバ２００に返却する（ステップＳ２１７）。このとき、稼働状態ファイルは、全て外部記憶部２３０に存在している状態となっている。
【００３７】
クライアント１０１は、上述した一連の処理（Ａ）を繰り返し実行している状態であるところ、ユーザＡが要求したジョブが完了し、稼働状態ファイルが返却されると、ユーザＢが要求するジョブの実行要求をサーバ２００に送信する（ステップＳ２１８）。
【００３８】
サーバ２００のジョブ制御部２２０は、その実行要求を受信すると、そのジョブに必要な処理装置の番号を読み取り、外部記憶部２３０にその番号に対応する稼働状態ファイルを検索する（ステップＳ２１９）。このとき、ユーザＡが要求していたジョブの実行が完了しているため、外部記憶部２３０には１〜３までの番号の稼働状態ファイルはが存在しており、ジョブの実行要求とともに送信された処理装置の番号２および３が指定されているため、ジョブ制御部２２０は、これらの番号の処理装置が空いている（要求に合致している）と判定し（ステップＳ２２０）、その番号の稼働状態ファイルをクライアント１０１に送信し、ジョブの実行権限を提供する（ステップＳ２２１）。
【００３９】
クライアント１０１は、稼働状態ファイルを受信すると、要求されたジョブを実行させるためのコマンドを投入し（ステップＳ２２１）、サーバ２００の外部機器制御部２１０は、クライアント１０１からジョブの実行コマンドを受信すると、指定された外部機器３００の処理装置を使用したジョブの実行を指示し（ステップＳ２２３）、その指示に従って、装置２および装置３は要求されたジョブを実行する（ステップＳ２２４、Ｓ２２５）。
【００４０】
そして、ステップＳ２２４およびＳ２２５においてジョブが実行されると、ユーザはそのジョブが終了するまで待機し、その後、ユーザＢが要求したジョブの実行が完了すると、サーバ２００の外部機器制御部２１０は、装置２および３からその旨の通知を受け（ステップＳ２２６）、クライアント１０１に、要求したジョブの実行が正常終了した旨を通知する（ステップＳ２２７）。その後、クライアント１０１は、ジョブが正常終了した旨の通知をサーバ２００から受信すると、一時的に記憶していた稼働状態ファイルをサーバ２００に返却する（ステップＳ２２８）。このステップＳ２２８の処理が終了すると、図２に示した処理の全ての処理が終了する。
【００４１】
このように、複数のジョブが並行して実行される場合であっても、ジョブの実行要求とともに稼働状態ファイルを受け渡ししているので、人手で処理装置の空きを待つ必要がなくなり、処理装置の空きを自動的に監視し、Ｗａｉｔからリトライに到る制御によって、ジョブ間の調停を行うことができるようになり、負荷分散ソフト等の外部機器を制御するソフトが適用できない場合であっても、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能となる。
【００４２】
例えば、従来では、図３に示すように、ユーザＡおよびユーザＢが、それぞれクライアントＡおよびクライアントＢからジョブの実行要求を行う場合において、各クライアントでジョブをコンパイルし、まず最初にユーザＡがジョブの実行要求（処理装置１および２を使用する実行要求）を行い（ステップＳ３０１）、サーバがそのジョブの実行を外部機器に対して指示し（ステップＳ３０２）、処理装置１および２がその指示にしたがってジョブを実行しているところ（ステップＳ３０３、Ｓ３０４）、ユーザＢがジョブの実行要求（処理装置２および３を使用する実行要求）を行い（ステップＳ３０５）、サーバがそのジョブの実行を外部機器に対して指示した場合（ステップＳ３０６）、処理装置２が使用中であるために実行不能となり（ステップＳ３０６）、処理が完了するものの(ステップＳ３０７）、サーバはジョブが異常終了したクライアントＢに旨を通知し（ステップＳ３０８）、その後、ユーザＡが要求したジョブが完了し（ステップＳ３０９）、サーバが正常終了した旨をクライアントＡに通知することとなる（ステップＳ３１０）。
【００４３】
このように、従来技術では、複数のジョブが並行して実行される場合、先に実行されたジョブは正常終了するが、後に実行されるジョブで使用する処理装置が先行して実行されているジョブで使用されている場合には、後に実行されるジョブが異常終了してしまうか、またはその異常終了を避けるために、ユーザ自身が目視する等によって監視し、その空きを待った上で自ら要求するジョブを実行させる必要があった。しかしながら、本実施の形態においては、そのような処理装置の空きを待つ必要がなくなり、処理装置の空きを自動的に監視し、稼働状態ファイルを用いてジョブのＷａｉｔやリトライを制御してジョブ間の調停を行うことができ、リソースの状況を把握しつつ適切にジョブの実行を制御することが可能となる。
【００４４】
また、人手で処理装置の空きを待つ必要がなくなるため、このようなシステムを利用するユーザの作業工数を低減することができ、また、処理装置の利用効率が向上することによって、ジョブの消化期間の短縮に繋がり、結果として製品開発の期間を短縮することが可能となる。さらに、このような外部機器制御部にジョブの制御機能がない場合であってもジョブの制御が自動化できるようになり、人手作業よって発生していたジョブの実行ミスを抑制させることができる。
【００４５】
さらに、ジョブの異常終了により発生していた異常解析の時間がなくなり、作業時間の削減ができ、ジョブの待ち時間を削減することも可能となり、ユーザはジョブを投入した段階で、その作業から手を離すことが可能となる。
【００４６】
なお、上述した処理では、稼働状態ファイルを用いてジョブの実行を制御しているが、この点、例えば、外部記憶部２３０にジョブを識別するためのジョブ番号とそのジョブの実行状況とを対応付けて記憶したテーブル等を記憶させ、ジョブ制御部２２０が、そのジョブの実行や完了等を管理することによって、ジョブの実行を制御することも可能であるが、管理すべき情報が多くなり、サーバ側の負荷が増えてしまうことが想定されるため、できる限り少ない情報でジョブの実行を制御することでサーバへの負荷を軽減させている。また、ジョブの実行に必要な情報を、稼働状態ファイルをクライアントとサーバとの間で受け渡しさせることにより、管理する情報の手離れを向上させ、ジョブの強制終了など、その都度サーバに状況を問合せしなくてもユーザ側で制御できるメリットを有している。続いて、第２の実施の形態について説明する。
【実施例２】
【００４７】
上述した第１の実施の形態では、外部装置が有する処理装置に対応する稼働状態ファイルをクライアントとサーバとの間で受け渡しすることによって、ユーザが要求したジョブで使用される処理装置の状況を把握することとした。しかし、ユーザが実行要求したジョブで使用される処理装置が空いていない状態であっても、そのジョブの実行に必要な処理装置の数と同じ数の処理装置が空いている場合には、ユーザが実行要求したジョブで使用される処理装置に替えて、空いている処理装置を使用してジョブを実行させることが可能な場合も存在する。そこで、そのような場合に備え、第２の実施の形態として、ユーザが実行要求したジョブで使用される処理装置に替えて、空いている処理装置を使用してジョブを実行させる場合について説明する。なお、以下では複数の処理装置を用いてジョブを実行する場合について説明しているが、一の処理装置を用いてジョブを実行する場合ももちろんこれと同様に適用することができる。
【００４８】
図４は、第２の実施の形態におけるジョブ制御システム４０００の構成例を示す図である。図４に示すように、第２の実施の形態にかかるジョブ制御システム４０００は、第１の実施の形態にかかるジョブ制御システム１０００が有するサーバ２００のジョブ制御部２２０とは異なるサーバ４００のジョブ制御部４２０と、第１の実施の形態にかかるジョブ制御システム１０００が有する外部記憶装置２３０とは異なる外部記憶装置４３０と、第１の実施の形態にかかるジョブ制御システム１０００が有する外部機器３００とは異なる外部機器５００とを備えている点で、第１の実施の形態にかかるジョブ制御システム１０００とは異なっている。以下の説明では、上述した第１の実施の形態と同一の構成要素には同一の符号を付してその説明を省略している。
【００４９】
ジョブ制御部４２０は、第１の実施の形態にかかるジョブ制御部２２０と同様の処理を行うほか、クライアント１００および１０１からジョブの実行要求がされ、外部記憶装置４３０にアクセスして稼働状態ファイルを取得する際に、要求されたジョブで使用する処理装置を検索し、その処理装置が空いていない状態であると判定した場合、さらに、その処理装置に代替可能であって、空いている状態の処理装置を検索し、取得した稼働状態ファイルをクライアントとの間で受け渡しすることによって、ジョブの実行を制御する。ジョブ制御部４２０が行う具体的な処理については、シーケンス図を用いて後述する。続いて、外部記憶部４３０が記憶する稼働状態ファイル４４０について説明する。
【００５０】
外部記憶部４３０は、図４に示すように、第１の実施の形態おける外部記憶装置２３０が記憶する稼働状態ファイル２４０とは異なる稼働状態ファイル４４０を記憶し、さらに使用状態管理テーブル４４１を記憶している。
【００５１】
稼働状態ファイル４４０は、第１の実施の形態における場合と同様に、後述する外部機器５００が有する処理装置の数に対応して記憶されるものであるが、後述するように、本実施の形態では、外部機器５００は９個の処理装置を有しているので、外部記憶部４３０は、これにあわせて稼働状態ファイル４４０として９個の稼働状態ファイルを記憶している。
【００５２】
使用状態管理テーブル４４１は、外部機器５００が有する処理装置が使用中の状態であるか、または空いている状態であるかを管理するためのテーブルであり、各処理装置の使用状態と、外部機器５００での各処理装置の配置パターンとを対応付けて記憶するものである。
【００５３】
図５Ａは、使用状態管理テーブル４４１の例を示す図である。図５Ａに示すように、外部機器５００が有する処理装置（装置１〜９）と、それぞれの処理装置の使用状態とが対応付けた使用状態情報が処理装置の数だけ記憶されている。使用状態管理テーブル４４１は、これらの使用状態情報を、外部機器５００が有する処理装置の配置パターンと同じ並び（組み合わせ）の配置パターンで記憶し、使用状態情報が記憶されている組み合わせについても、各処理装置の使用状態情報と共に記憶している。
【００５４】
図５Ａに示す例では、処理装置「装置１」および「装置２」が使用中の状態であり、装置３〜９は空いている状態であることを示しており、使用状態情報は、縦３×横３列の使用状態情報の配置パターンで配置されていることを示している。なお、本実施の形態では、外部記憶部４２０は、使用状態情報を縦３×横３列の配置パターンで記憶している場合について説明しているが、例えば、図５Ｂに示すように、外部機器５００が有する処理装置（装置１〜９）が縦１×横９列のように配置されている場合には、これに合わせた配置としてもよい。続いて、図４に戻り、外部機器５００について説明する。
【００５５】
外部機器５００は、第１の実施の形態における外部機器３００と同様のものであるが、その内部には複数の処理装置（本実施の形態においては装置１〜装置９）を有している。これらの処理装置は、第１の実施の形態にかかる外部機器３００と同様に、サーバ４００を介して、クライアントからのジョブ投入コマンドに従ってジョブを実行する。
【００５６】
図６は、外部機器４００が有する処理装置（装置１〜９）の構成例を示す図である。図５に示すように、装置１〜９までの９個の処理装置が、縦３×横３列に配置されている。上述したように、これらの処理装置の配置は使用状態情報の配置と同様の配置となっている。続いて、ジョブ制御システム４０００が行うジョブ制御処理について説明する。
【００５７】
図７は、ジョブ制御システム４０００が行うジョブ制御処理の処理手順を示すシーケンス図である。図７に示すように、まず、ユーザＡが外部機器５００の装置１と装置２を使用してジョブを実行する場合、その実行要求を、クライアント１００からサーバ４００のジョブ制御部４２０に送信する（ステップＳ７０１）。この実行要求は、第１の実施の形態の場合と同様のものであるため、ここではその説明を省略する。
【００５８】
ジョブ制御部４２０は、その実行要求を受信すると、そのジョブに必要な処理装置の番号を読み取り、外部記憶部４３０にその番号に対応する稼働状態ファイルを検索する（ステップＳ７０２）。このとき、ジョブ制御部４２０は、外部記憶部４３０にその番号に対応する稼働状態ファイルが存在した場合には、その番号の処理装置が空いていると判断する。
【００５９】
そして、図７に示す例では、稼働状態ファイルは１〜２までの番号のファイルが存在しており、ジョブの実行要求とともに送信された処理装置の番号１および２が指定されているため、ジョブ制御部４２０は、これらの番号の処理装置が空いている（要求に合致している）と判定し（ステップＳ７０３）、その番号の稼働状態ファイルをクライアント１００に送信し、ジョブの実行権限を提供する（ステップＳ７０４）。
【００６０】
クライアント１００は、稼働状態ファイルを受信すると、要求されたジョブを実行させるためのコマンドを投入する（ステップＳ７０５）。このとき、第１の実施の形態の場合と同様に、そのジョブで使用する処理装置の番号に対応する稼働状態ファイルがクライアント１００に一時的に記憶され、ジョブが実行される。
【００６１】
サーバ４００の外部機器制御部２１０は、クライアント１００からジョブの実行コマンドを受信すると、指定された外部機器５００の処理装置を使用したジョブの実行を指示し（ステップＳ７０６）、その指示に従って、装置１および装置２は要求されたジョブを実行する（ステップＳ７０７、Ｓ７０８）。ステップＳ７０７およびＳ７０８においてジョブが実行されると、第１の実施の形態の場合と同様に、ユーザはそのジョブが終了するまで待機し、番号１および２の稼働状態ファイルは、クライアント１００に一時的に記憶された状態であり、番号３〜９の稼働状態ファイルは、ユーザＡが要求したジョブでは使用されないため、外部記憶部４３０に残った状態となっている。
【００６２】
また、このとき、ジョブ制御部４２０は、外部機器制御部２１０が実行したジョブで使用している処理装置（装置１および装置２）に対応する使用状態情報を、図５Ａに示したように、使用中の状態に更新する。
【００６３】
その後、ユーザＡが要求したジョブの実行中に、ユーザＢが外部機器３００の装置２と装置３を使用してジョブを実行する場合、その実行要求を、クライアント１０１からサーバ４００のジョブ制御部４２０に送信する（ステップＳ７０９）。
【００６４】
ジョブ制御部４２０は、その実行要求を受信すると、そのジョブに必要な処理装置の番号を読み取り、外部記憶部４３０にその番号に対応する稼働状態ファイルを検索する（ステップＳ７１０）。このとき、ジョブ制御部４２０は、外部記憶部４３０にその番号に対応する稼働状態ファイルが存在しない場合には、その番号の処理装置が使用中であると判断する。
【００６５】
図７に示す例では、ジョブの実行要求とともに送信された処理装置の番号２および３が指定されているところ、稼働状態ファイルは１〜２までの番号のファイルが存在せず、番号３〜９の稼働状態ファイルのみが存在している状態である。このとき、ジョブ制御部４２０は、使用状態情報の配置パターンを取得し、その配置パターンと使用状態管理テーブル４４１が記憶している使用可能な処理装置の配置パターンとを比較して、同じ配置パターンを確保可能な処理装置を検索する。図７に示した例では、クライアント１０１からのジョブの実行要求は、装置２および装置３を使用するものであるため、図５Ａに示したような使用状態情報を取得する。そして、ジョブ制御部４２０は、装置２および装置３の配置パターンと同じ配置パターンが確保可能な代替となる処理装置を検索する。
【００６６】
より具体的には、図８Ａに示すように、クライアント１０１から要求されているジョブを実行する際には既に装置１および装置２が使用されている。したがって、図８Ｂに示すように、クライアント１０１が要求したジョブを実行するために必要な装置２および装置３は使用できない。したがって、ジョブ制御部４２０は、装置２および装置３のように連続した処理装置が確保可能な配置パターン（縦１×横２列の配置パターン）を検索する。例えば、図８Ｂに示す例では、装置４および装置５のような配置パターン８０１、あるいは装置８および装置９のような配置パターン８０２等、装置２および装置３と同様に連続した処理装置を確保できる装置を検索する。
【００６７】
この場合、図８Ｃに示すように、装置３および装置６のような配置パターン８０３、あるいは装置５および装置８のような配置パターン８０４は、装置２および装置３のように連続して確保されている配置パターン（縦２×横１列の配置パターン）ではないため、ジョブ制御部４２０は、装置２および装置３と同じ配置パターンであると判定しない。このように、ユーザが要求した処理装置が空いていない状態であっても、処理装置がジョブの実行に必要な数だけ空いていて、さらに、ユーザがコンパイルした時点で分かるジョブの実行に必要な処理装置の配置パターンと、空いている処理装置の配置パターンとが、例えば、パズルのピースのように一致している場合にのみ、ジョブ制御部４２０はジョブを実行可能であると判定している。
【００６８】
そして、図７に示す例では、クライアント１０１は、装置２および装置３を使用したジョブの実行を要求しているところ、その配置パターンと同じ配置パターンである装置４および装置５を検索し、これらの番号の処理装置が空いている（要求に合致している）と判定し（ステップＳ７１１）、その番号の稼働状態ファイル（番号４および５の稼働状態ファイル）をクライアント１０１に送信し、ジョブの実行権限を提供する（ステップＳ７１２）。
【００６９】
クライアント１０１は、稼働状態ファイルを受信すると、要求されたジョブを実行させるためのコマンドを投入し（ステップＳ７１３）、サーバ４００の外部機器制御部４１０は、クライアント１０１からジョブの実行コマンドを受信すると、指定された外部機器４００の処理装置を使用したジョブの実行を指示し（ステップＳ７１４）、その指示に従って、装置２および装置３は要求されたジョブを実行する（ステップＳ７１５、Ｓ７１６）。このとき、外部機器５００は、クライアント１００からの要求により装置１および装置２を使用してジョブが実行され、一方で、これと並行してクライアント１０１からの要求により装置４および装置５を使用してジョブが実行された状態となっている。
【００７０】
そして、ステップＳ７１５およびＳ７１６においてジョブが実行されると、ユーザはそのジョブが終了するまで待機し、その後、ユーザＢが要求したジョブの実行が完了すると、サーバ４００の外部機器制御部４１０は、装置４および５からその旨の通知を受け（ステップＳ７１７）、クライアント１０１に、要求したジョブの実行が正常終了した旨を通知する（ステップＳ７１８）。その後、クライアント１０１は、ジョブが正常終了した旨の通知をサーバ４００から受信すると、一時的に記憶していた稼働状態ファイル（番号４および５の稼働状態ファイル）をサーバ４００に返却する（ステップＳ７１９）。
【００７１】
その後、最初にユーザＡが要求したジョブの実行が完了すると、サーバ４００の外部機器制御部４１０は、装置１および２からその旨の通知を受け（ステップＳ７２０）、クライアント１００に、要求したジョブの実行が正常終了した旨を通知し（ステップＳ７２１）、クライアント１００は、ジョブが正常終了した旨の通知をサーバ４００から受信すると、一時的に記憶していた稼働状態ファイル（番号１および２の稼働状態ファイル）をサーバ４００に返却する（ステップＳ７２２）。このステップＳ７２２の処理が終了すると、図７に示した処理の全ての処理が終了する。
【００７２】
このように、第２の実施の形態においては、他のジョブにおいて処理装置が使用されている状態であっても、ジョブ制御部４２０が、実行するジョブで使用する処理装置と同じ配置パターンの処理装置を検索させるため、第１の実施の形態において得られる効果に加え、空いている処理装置を有効に活用できるようになり、ジョブの処理効率を向上させることができ、処理装置の利用効率を向上させることができる。
【００７３】
なお、上述した各実施の形態においては、稼働状態ファイルそのものを受け渡しすることによってジョブの実行を制御したが、例えば、図２のステップＳ２１４において示したように、サーバ３００のジョブ制御部が、ジョブの実行がリトライされた回数を稼働状態ファイルに書き込み、その際の待機指示とともにその回数をクライアント１００等に通知させることとしてもよい。この場合、ユーザはリトライ回数が多く、指定した処理装置を使用できる見込みが低いと判断した場合には、他の処理装置を指定して再コンパイルした上で再びジョブを実行させることも可能となる。
【００７４】
また、上述したリトライ回数以外にも、例えば、処理装置の使用率や稼働率を稼働状態ファイルに含めても良い。これらの情報をユーザに提供することで、ユーザは競合ユーザの多さや、空いている処理装置を把握することが可能となり、例えば、自らのジョブの実行に必要な処理装置の配置パターンを縦１×横２列から縦２×横１列に変更する等、空いている処理装置を指定した上で再コンパイルして、速やかにジョブを消化させることが可能となる。
【００７５】
さらに、ジョブが実行された際に、ジョブの実行時間やジョブの実行状態を示す情報（異常終了または正常終了を示す情報）を稼働状態ファイルに含めることとしてもよい。この場合、ジョブの実行状況をサーバで一元管理させることによって、ジョブ制御システムの管理者等が、容易にそのトラブルに対処することが可能となり、ジョブの実行時間の短縮や処理装置の利用率の向上に繋げることができる。
【００７６】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００７７】
１０００        ジョブ制御システム
１００、１０１  クライアント
２００、４００  サーバ
２１０          外部機器制御部
２２０、４２０  ジョブ制御部
２３０          外部記憶装置
２４０、４４０  稼働状態ファイル
３００、５００  外部機器
３１０〜３３０、５１０〜５９０  処理装置
４４１          使用状態管理テーブル
Ｎ１、Ｎ２      ネットワーク。
【図１】
2013004057.tif 000003
【図２】
2013004057.tif 000004
【図３】
2013004057.tif 000005
【図４】
2013004057.tif 000006
【図５Ａ】
2013004057.tif 000007
【図５Ｂ】
2013004057.tif 000008
【図６】
2013004057.tif 000009
【図７】
2013004057.tif 000010
【図８Ａ】
2013004057.tif 000011
【図８Ｂ】
2013004057.tif 000012
【図８Ｃ】
2013004057.tif 000013
【図９】
2013004057.tif 000014