(実施例1)
図1は、本実施形態の情報処理システムの全体構成を示す図である。本実施形態の情報処理システムは、クラウドシステムであって、クライアント端末106のユーザに画像処理サービスを提供する。
図1中の情報処理システムは、スキャンサービスサーバ群101、フローサービスサーバ群102、タスクサーバ103、104、クライアント端末106、画像形成装置107、クラウドサービスサーバ108を備える。図1に示す例では、タスクサーバは2台であるが、情報処理システムが備えるタスクサーバの数は、2台に限定されない。情報処理システムは、複数の任意数のタスクサーバを備えることができる。
スキャンサービスサーバ群101乃至タスクサーバ104は、ネットワーク110を介して通信可能に接続されている。クライアント端末106および画像形成装置107と、スキャンサービスサーバ群101乃至タスクサーバ104とは、ネットワーク111およびネットワーク110を介して通信可能に接続されている。また、クラウドサービスサーバ群108とスキャンサービスサーバ群101乃至タスクサーバ104とは、ネットワーク112およびネットワーク110を介して通信可能に接続されている。
タスクサーバ、クライアント端末106、画像形成装置107、クラウドサービスサーバ群108は、複数台設けられている。ネットワーク110乃至112は、例えば、インターネット等のLAN、WAN、電話回線、専用デジタル回線、ATMやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等である。LANは、Local Area Networkの略称である。WANは、Wide Area Networkの略称である。ATMは、Asynchronous Transfer Modeの略称である。
ネットワーク110乃至112が、上述したLAN乃至データ放送用無線回線の組み合わせにより実現される通信ネットワークであってもよい。すなわち、ネットワーク110乃至112は、データの送受信が可能であればよい。この例では、本実施形態の情報処理システムは、クラウドシステムであるので、ネットワーク110、112は、インターネット、ネットワーク111は、企業内ネットワークやサービスプロバイダーのネットワークである。
スキャンサービスサーバ群101、フローサービスサーバ群102、タスクサーバ103、104は、複数のサーバコンピュータ群を有する。これらサーバコンピュータ群がクラウドサービスサーバ群を構成しており、ユーザに対してクラウドサービスを提供する。
この例では、クライアント端末106のユーザからの要求に応じて、画像形成装置107がスキャン実行を行って画像データを生成し、生成した画像データをスキャンサービスサーバ群101に投入する。スキャンサービスサーバ群101は、当該画像データに対応するジョブをフローサービスサーバ群102に投入するジョブ投入部として機能する。この例では、ジョブは、複数のタスクから構成される。例えば、ユーザからの要求に従い発行されるジョブがスキャンジョブであった場合、スキャン画像に対し画像処理を行う工程と、画像処理が施されたスキャン画像を保存する工程とが実行されるケースが考えられる。本願発明は、夫々の工程をタスクという単位で区切ることで、1つのジョブを複数のタスクで構成する。この形態のメリットは、複数のタスクを組み合わせることで、多様なジョブ処理を行うことができるという点である。フローサービスサーバ群102は、投入されたジョブを管理する。すなわちフローサービスサーバ群102は、ユーザからの要求に応じて発生した複数のタスクから構成されるジョブを管理するジョブ管理部として機能する。
タスクサーバ103、104は、フローサービスサーバ群102が管理するジョブに含まれるタスクを非同期で取得要求する。フローサービスサーバ群102は、管理しているジョブに含まれる複数のタスクのうち、取得要求元のタスクサーバに対応するタスクであって、処理待ち状態のタスクを、取得要求元のタスクサーバに渡す。タスクを受け取ったタスクタスクサーバは、特定のジョブ処理を施す。タスクサーバは、例えば、処理対象の画像データに対して画像処理を行ったり、ファイル共有機能を提供する他のクラウドサービスサーバ群に対して、画像データを送信する処理を行う。すなわち、タスクサーバは、処理待ち状態であればフローサービスサーバ群102からタスクを取得し特定のタスク処理を施すバックエンド部として機能する。
なお、スキャンサービスサーバ群101乃至タスクサーバ104で構成されるクラウドサービスサーバ群とは異なる他のクラウドサービスサーバ群108がインターネット上に公開されており、これらも複数のサーバコンピュータ上にて実行されている。
クライアント端末106は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、PDA(パーソナルデータアシスタント)等である。クライアント端末106が、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末106では、Webブラウザ(インターネットブラウザ、WWWブラウザ、WorldWideWebの利用に供するブラウザ)等のプログラムを実行する環境が内蔵されている。
本実施形態の制御方法は、図1に示す情報処理システムの制御方法である。また、本実施形態のコンピュータプログラムは、この制御方法をコンピュータに実行させる。
図2は、クライアント端末、スキャンサービスサーバ群、フローサービスサーバ群、タスクサーバを実現するサーバコンピュータのハードウェア構成図の例である。クライアント端末106、サーバコンピュータは、CPU202、RAM203、ROM204、HDD205を備える。CPUは、Central Processing Unitの略称である。RAMは、Random Access Memoryの略称である。ROMは、Read Only Memoryの略称である。HDDは、Hard Disk Driveの略称である。また、クライアント端末106、サーバコンピュータは、NIC209、キーボード207、ディスプレイ206、インタフェース208を備える。NICは、Network Interface Cardの略称である。
CPU202は、装置全体の制御を行う。CPU202は、HDD205に格納されているアプリケーションプログラム、OS等を実行し、RAM203にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。OSは、Operating Sustemの略称である。ROM204は、記憶手段であり、内部には、基本I/Oプログラム等の各種データを記憶する。RAM203は、一時記憶手段であり、CPU202の主メモリ、ワークエリア等として機能する。HDD205は、外部記憶手段の一つであり、大容量メモリとして機能し、Webブラウザ等のアプリケーションプログラム、サービス群のプログラム、OS、関連プログラム等を格納している。
ディスプレイ206は、表示手段であり、キーボード207から入力したコマンド等を表示したりする。インタフェース208は、外部装置I/Fであり、プリンタ、USB機器、周辺機器を接続する。キーボード207は指示入力手段である。システムバス201は、装置内におけるデータの流れを司る。CPU202乃至インタフェース208は、システムバス201に接続されている。インタフェースNIC209は、インタフェース208およびネットワーク110乃至112を介して、外部装置とのデータのやり取りを行う。なお、図2中に示す装置構成は一例であり、図2の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてROM204、RAM203、HDD205のうちのいずれであってもよい。
図3は、クライアント端末と画像形成装置の構成例を示す図である。図3(A)は、クライアント端末106の構成例を示す。クライアント端末106は、Webブラウザ301を備える。Webブラウザ301は、スキャンサービスサーバ群101(図1)が提供するWebアプリケーションへのリクエストの送信と、レスポンスの表示等を行う。クラウドサービスを利用するユーザは、クライアント端末106のWebブラウザ301を利用して、クラウドサービスを利用する。
図3(B)は、画像形成装置107の構成例を示す。この例では、画像形成装置107は、スキャン機能とプリント機能を併せ持つ装置である。なお、スキャンサービスを実現するためには、画像形成装置107が、プリント機能のない、スキャン専用装置であってもよい。
画像形成装置107は、画像処理ユニット401、印刷ユニット402、読み込みユニット403を備える。画像処理ユニット401は、画像処理を実行する。画像処理ユニット401は、例えば、印刷設定に応じたプリントデータを生成する。印刷ユニット402は、画像処理ユニット401によって生成されたプリントデータを媒体(例えば、紙媒体)に印刷出力する。読み込みユニット402は、例えば、不図示のスキャン装置を用いて、画像データを読み込む。
画像処理ユニット401は、CPU404、直接記憶部405、間接記憶部406、ユーザインタフェース407、外部インタフェース408を備える。
CPU404は、所定のプログラムを実行し、画像形成装置107の各種制御を指示する。CPU404は、Central Processing Unitの略称である。直接記憶部405は、CPU404がプログラムを実行する際に使用するワークメモリである。CPU404が実行するプログラムは、直接記憶部405にロードされる。なお、CPU404は、マルチプロセッサでもよい。
直接記憶部405は、RAMにより実現される。間接記憶部406には、アプリケーションプログラムおよびプラットフォームプログラムを含む各種プログラムが記憶されている。CPU404が、間接記憶部406に記憶されている各種プログラムの実行時に、この各種プログラムを直接記憶部405へ移動する。間接記憶部406は、SSD(Solid State Drive)、または、HDD(Hard Disc Drive) により実現される。
この例では、ユーザが独自に開発した新しいアプリケーションを画像形成装置107上で実行できるプラットフォームを実現するプラットフォームプログラムが、間接記憶部406に記憶されている。プラットフォームによれば、画像形成装置107の操作画面をカスタマイズすることも可能になる。
以下に、プラットフォームの実現方法について説明する。CPU404は、間接記憶部406に記憶されたプラットフォームプログラムを直接記憶部405に移動する。移動が完了するとCPU404は、プラットフォームプログラム(例えば、Java(登録商標))を実行することができる状態になる。この例では、CPU404が、プラットフォームプログラムを実行することを、プラットフォームが起動すると称する。なお、プラットフォームは、画像形成装置107のファームウェア上で動作することになる。プラットフォームプログラムは、オブジェクト指向で記述されたアプリケーションプログラムを実行するための環境を提供する。
次に、プラットフォーム上でアプリケーションプログラムを実行する方法について詳細に説明する。この例では、プラットフォーム上には、スキャンした画像をクラウドサービスに送信するスキャンソフトウェアが動作している。スキャンソフトウェアは、ネットワークを介して接続されているスキャンサービスサーバ群101より、例えば、HTTP(Hyper Text Transfer Protocol)などの通信プロトコルによってスキャンチケットの一覧の受信を行う。スキャンチケットにはスキャンの為の設定や、その後の処理フローといった情報が記録されている。以降、スキャンソフトウェアを実行することで実現するソフトウェア部をスキャンソフトウェア部と呼ぶ。
ユーザは、スキャンソフトウェア部にて表示されたスキャンチケット一覧からスキャンチケットを選択し、原稿を読み込ませることでスキャンを完了できる。スキャンソフトウェア部は、ユーザが選択したスキャンチケットの情報とスキャンした画像データを合わせてスキャンサービスサーバ群101に送信する。このように、プラットフォームでアプリケーションプログラムを実行することによって、画像形成装置107の制御を実現することができる。
次に、アプリケーションプログラムの実行方法について説明する。起動したプラットフォームは、間接記憶部406に記憶されたアプリケーションプログラムを直接記憶部405に移動する。移動が完了すると、プラットフォームは、アプリケーションプログラムを実行することができる状態になる。そして、プラットフォームは、アプリケーションプログラムを実行する。このように、アプリケーションプログラムを実行することで提供できるプラットフォームの機能を、この例ではプラットフォームアプリケーションと呼ぶ。さらに、プラットフォームは、本実施形態で開示するフローチャートの各処理の一部を行うことが可能である。
ユーザインタフェース407は、ユーザからの処理依頼を受け付ける。ユーザインタフェース407は、例えば、キーボード、マウス等を通してユーザが入力した指示に応じた信号を受け付ける。外部インタフェース408は、外部装置からのデータ受信や外部装置へのデータ送信が可能である。上記外部装置は、例えば、外付けHDDや外付けUSBメモリ等の外付け記憶装置、またはネットワークを介して接続された別体のホストコンピュータや画像形成装置等の別体装置である。画像形成装置107は、ネットワーク110、111を介して、クライアント端末106、スキャンサービスサーバ群101と通信可能である。
次に、クラウドサービスを提供するスキャンサービスサーバ群101、タスクサーバ103、104の各サービスサーバ群に関して説明する。さらには、各サービスサーバ群の説明とともに、スキャン処理の流れを合わせて説明する。
図4は、スキャンサービスサーバ群の構成例を示す図である。スキャンサービスサーバ群101はクラウドサービスにおけるスキャン機能の提供を行うサービスサーバ群である。
スキャンサービスサーバ群101は、Webアプリケーション部501、チケット管理DB502、テンプレート管理DB503を備える。これら構成要素により各種処理が実行されることでスキャンサービスサーバ群101がユーザに提供される。
Webアプリケーション部501は、スキャン機能を提供するアプリケーションプログラムを提供する。Webアプリケーション部501は、チケット作成部511、チケット一覧部512、スキャン受信部513、外部I/F514、チケット管理部515、テンプレート管理部516を備える。チケット作成部511は、ユーザがスキャンチケットを作成するための一連の機能を実現する。スキャンチケットは、画像形成装置107で原稿をスキャンする際の設定や、その後の処理フローの定義、各処理フローで実施されるタスクの為のパラメータ等を含む定義情報である。
以下に、スキャンチケットの作成処理について説明する。クライアント端末106のWebブラウザ301が、ユーザ操作にしたがって、チケット作成画面リクエスト(この例では、スキャンチケット作成画面リクエスト)をスキャンサービスサーバ群101に対して行う。チケット作成部511が、チケット作成画面リクエストにしたがって、チケット作成画面(この例では、スキャンチケット作成画面)をクライアント端末106に提供する。クライアント端末106のWebブラウザ301が、スキャンチケット作成画面を表示する。
図5は、スキャンチケット作成画面の例を示す図である。スキャンチケット作成画面601には、テンプレート602乃至604が表示される。テンプレートは、画像処理(例えばスキャン処理)の設定を行うための定義情報である。例えば、テンプレート602は、スキャンして得られる画像データをクラウド1に送信する処理を定義している。テンプレート管理部516が、テンプレート管理DB503内に記憶されているテンプレートを管理している。
チケット作成部511は、テンプレートをテンプレート管理DB503から取得し、取得したテンプレートを含むスキャンチケット作成画面をWebブラウザ301に対して提供する。
ユーザが、スキャンチケット作成画面601上に表示されたテンプレートの中から、実行するテンプレートを選択すると、Webブラウザ301が、詳細設定画面605を表示する。詳細設定画面605は、詳細なチケット設定を行うための画面である。
図5に示す例では、同一画面内にテンプレートと詳細設定画面605とが表示されているが、Webブラウザ301が、詳細設定画面605を、テンプレートが表示されている画面とは異なる画面(別ウィンドウ)で開くようにしてもよい。ユーザは、詳細設定画面605上で、選択したテンプレートに応じたスキャンの設定を行うことができる。例えば、スキャン設定の例としては、図5中に示すように、サイズや、カラー、白黒といった色調、またスキャンデータのフォーマット等の設定がある。ユーザが、詳細な設定を行った後、チケット発行ボタン606を押下すると、Webブラウザ301からスキャンサービスサーバ群101に対して、スキャンチケット作成リクエストが発行される。スキャンチケット作成リクエストは、スキャンチケットの作成を求める要求であり、スキャンチケット作成画面上で行われたチケット設定の情報を含む。
チケット作成部511は、スキャンチケット作成リクエストに含まれるチケット設定の情報に基づいて、スキャンチケットを作成し、チケット管理部515に指示してスキャンチケットに関する情報(チケット情報)を保存させる。チケット管理部515は、チケット作成部511からの指示にしたがって、チケット管理DB502にチケット情報を保存する。
外部I/F514は、画像形成装置107上で動作するスキャンソフトウェア部との通信を行う。具体的には、外部I/F514は、スキャンソフトウェア部から、チケット一覧部512の機能や、スキャン受信部513の機能へのアクセスを受け付ける。チケット一覧部512は、画像形成装置107からの要求にしたがい、チケット管理部515に保存されているチケット情報に基づいて、チケットの一覧を生成して画像形成装置107に返す。画像形成装置107は、取得したチケット一覧をチケット一覧画面上に表示する。
図6は、チケット一覧画面の一例を示す図である。この例では、チケット一覧画面407上には、チケット901乃至906(この例ではスキャンチケット)が表示される。ユーザが、チケット一覧画面407上に表示されたスキャンチケットのいずれかを選択し、画像形成装置107に備え付けられたスキャン装置に紙を設置し、スキャンボタン907を押し下げすると、スキャン実行される。そして、画像形成装置107が、チケット一覧画面上で選択されたスキャンチケットと、スキャン実行により得られた画像データとをスキャンサービスサーバ群101に対して送信する。
スキャンサービスサーバ群101が備えるスキャン受信部513は、画像形成装置107からスキャンチケットと画像データとを受信する。そして、スキャン受信部513は、受信した画像データをフローサービスサーバ群102に投入する。
図7は、チケット管理DBとテンプレート管理DBの一例を示す図である。図7(A)は、チケット管理DB502の一例を示す。チケット管理DB502が保存しているチケットの情報は、ユーザID701、チケットID702、ルートID703、パラメータ704といったデータ項目を有する。ユーザID701は、チケットを作成したユーザを一意に識別する識別情報である。チケットID702は、チケットを一意に識別する識別情報である。チケットID702は、図5に示すスキャンチケット作成画面上でチケット発行606が押下げられたときにチケット作成部511によって生成され、チケット管理DB502に保存される。
ルートID703は、ルート情報を一意に識別する識別情報である。ルート情報は、スキャンチケット作成画面601上で選択されたテンプレートに対応する処理(例えばスキャン処理)を示す情報である。具体的には、ルート情報は、テンプレートに対応する処理を実現するジョブに含まれる各々のタスクを連結させたルートの情報であって、そのジョブにおけるタスクの処理順序を示す処理順情報を含む。すなわち、ルート情報は、タスクの連結をルートという単位で定義するための情報である。
ユーザが、テンプレートを選択し、スキャンを実行した場合には、スキャンデータは、ルートID703に対応付けて定義されたタスクの順番で処理される。パラメータ704は、図5中に示す詳細設定画面605上で設定されたスキャンの設定情報である。
図7(B)は、テンプレート管理DBの一例を示す図である。テンプレート管理DB503には、テンプレート情報が設定されている。テンプレート情報は、図11を参照して後述するルート情報管理DB1301で管理されるルート情報と、チケット作成画面上に表示されるテンプレートとを紐づける情報である。テンプレート情報は、テンプレートID801、テンプレート名802、ルートID803といったデータ項目を有する。
テンプレートID801は、テンプレートを一意に識別する識別情報である。テンプレート名802は、テンプレートの名称である。テンプレート名は、図5中のチケット作成画面601上に表示される。ルートID803は、ルート情報管理DB1301が管理するルート情報に含まれるルートID1401(図11)への外部キーである。
図8は、タスクサーバの構成例を示す図である。この例では、タスクサーバ103の構成を説明する。タスクサーバ104の構成は、タスクサーバ103の構成と同様である。タスクサーバ103は、画像データに対してOCR処理を行い、OCR結果のテキストデータを画像データに埋め込む処理を行う。また、タスクサーバ104は、クラウドサービスサーバ群108の中のストレージ機能を提供する特定のサービスに対して、画像データをアップロードし保管する処理を行う。
図8に示すように、タスクサーバ103は、タスク取得部1011、データ取得部1012、データ保存部1013、タスクステータス通知部1014、タスク処理部1015を備える。タスク取得部1011は、定期的にフローサービスサーバ群102に問い合わせを行い、タスクサーバ103にて処理可能なタスクを取得する。データ取得部1012は、タスク取得部1011が取得したタスクの情報に基づいて、フローサービスサーバ群102から、処理すべき画像データを取得する。タスク処理部1015は、データ取得部1012が取得した画像データに対して各種処理を行う。また、タスク処理部1015は、タスク処理部1015による処理結果をデータ保存部1013に渡す。データ保存部1013は、タスク処理部1015から受け取った処理結果をフローサービスサーバ群103に保存する。タスクステータス通知部1014は、定期的にフローサービスサーバ群102に状態通知を行う。状態通知は、タスクサーバがタスク処理中であることを知らせる通知である。
図9は、フローサービスサーバ群の構成例を示す図である。フローサービスサーバ群102は、ルート管理、ジョブ管理、一時ファイル管理を行うサービスサーバ群である。フローサービスサーバ群102は、ルート管理サービスサーバ群1201、ジョブ管理サービスサーバ群1202、一時ファイル管理サービスサーバ群1203を備える。ルート管理サービスサーバ群1201は、ルート情報を管理する。ジョブ管理サービスサーバ群1202は、ルート情報に基づいて、ジョブの処理を管理する。
一時ファイル管理サービスサーバ群1203は、ジョブ投入時のデータや各タスクの処理結果データの保存を管理する。具体的には、一時ファイル管理サービスサーバ群1203は、スキャンサービスサーバ群101やタスクサーバ(103、104)からの要求に応じて、ファイルを格納し、その格納先のパスを管理する。スキャンサービスサーバ群101は、タスクサーバからファイル取得要求があった場合には、保存したファイルのバイナリデータをタスクサーバに返却する。また、一時ファイル管理サービスサーバ群1203は、タスクサーバやジョブ管理サービスサーバ群1202からファイル削除の要求があった場合には、保存したファイルを削除する。一時ファイル管理サービスサーバ群1203の機能を利用することによって、スキャンサービスサーバ群101やタスクサーバは、ファイルの格納先のパスやファイルサーバの状態を気にすることなく、ファイルの保存、取得、削除を行うことができる。
図10は、ルート管理サービスサーバ群の構成例を示す図である。ルート管理サービスサーバ群1201は、ルート情報管理DB1301、タスク情報管理DB1302、外部I/F1303を備える。ルート情報管理DB部1301は、ルート情報を保持する。タスク情報管理DB1302は、タスクに関する情報(タスク情報)を保持している。この例では、タスクは、ジョブに含まれる処理単位を示す。外部I/F1303は、ルート管理サービスサーバ群1201への問い合わせに用いられるI/Fである。ジョブ管理サービスサーバ群1202等は、外部I/F1303を介して、ルート情報管理DB1301やタスク情報管理DB1302を参照する。
図11は、ルート情報管理DBの一例を示す図である。ルート情報は、ルートID1401、シーケンス番号1402、タスクID1403といったデータ項目を有する。ルートIDは、ルートを一意に識別する識別情報である。タスクID1403は、各々のルートを構成するタスク、つまり、ユーザによって選択されたテンプレートに対応する処理を実現するジョブに含まれるタスクを一意に識別する識別情報である。
シーケンス番号1402は、タスクが、そのタスクが含まれるルートにおいて、何番目に実行されるタスクであるかを示す番号である。言い換えると、シーケンス番号1402は、ルートに対応するジョブに含まれる各々のタスクが、ジョブ内で何番目に実行されるタスクであるかを示す処理順情報である。したがって、ルート情報管理DB1301は、処理順情報を含むルート情報を記憶する処理順情報記憶部として機能する。
図11を参照すると、例えば、ルートIDが002であるルートは、シーケンス番号が小さい順に、Task1、Task3、Task5、Task7を含んでいる。したがって、このルートに対応するジョブに含まれるタスクのうち、最先に実行されるタスクは、Task1であり、2番目に実行されるタスクは、Task3である。また、3番目に実行されるタスクは、Task5であり、4番目に実行されるタスクは、Task7である。
図12は、タスク情報管理DBの一例を示す図である。タスク情報管理DB1302は、タスク情報を記憶するタスク情報記憶部である。タスク情報は、タスクID1501、タスク名1502、中止時間1503、状態通知時間1504、最大処理時間(実測)1505、最大処理時間(予想)1506といったデータ項目を有する。
タスクID1501は、タスクを一意に識別する識別情報である。タスク名1502は、タスクの名称である。中止時間1503は、その時間以内にタスク処理が完了しない場合に、ジョブ管理サービスサーバ群1202が、タスク処理を実行中のタスクサーバ(103、104)から他のタスクサーバにジョブを委譲する時間である。
タスクを実行中のタスクサーバが、所定の時間以内つまりこのタスクに対応する中止時間1503に設定された時間以内にタスク処理が完了しない場合、ジョブ管理サービスサーバ群1202は、このタスクを実行中のタスクサーバに異常が発生したと判断する。そして、ジョブ管理サービスサーバ群1202は、以下の処理を実行する。まず、ジョブ管理サービスサーバ群1202は、このタスクを他のタスクサーバに渡す。具体的には、ジョブ管理サービスサーバ群1202は、実行中のタスク処理と同じタスク処理が可能なタスクサーバに対してタスク処理を代理で実行するように命令(代理実行命令を発行)する。また、ジョブ管理サービスサーバ群1202は、所定のタイミングで、異常が発生したタスクサーバに対して、タスク処理を中止するよう命令する(中止命令を発行する)。これにより、他のタスクサーバにジョブ処理が委譲される。
タスクサーバには、ハードウェア故障やソフトウェアバグが発生したり、ネットワーク切断などにより通信できなくなったりなど、様々な異常が発生する。さらに、例えば、画像処理や外部クラウドへの保存処理など、処理対象のデータが巨大な場合にも、タスクサーバは長時間実行状態となる。このような場合も、異常が発生したと判断される。
本実施形態では、ジョブ管理サービスサーバ群1202は、異常が発生したタスクサーバから受け取る状態通知に応じた応答処理を通じて、タスクの処理を中止させる命令を発行する。この応答処理については、図17を参照して後述する。もちろん、ジョブ管理サービスサーバ群1202が、他のタスクサーバにタスクを渡すのと同時に、異常が発生したタスクサーバに対してタスクの処理を中止させる命令を発行するようにしてもよい。
状態通知時間1504は、ジョブ管理サービスサーバ群1202が、タスクサーバに対して状態通知させる時間(通知時間間隔)である。最大処理時間(実測)、最大処理時間(予想)は、各々のタスクの処理内容に対応する処理時間である。最大処理時間(実測)1505は、タスクサーバによる当該タスクの処理時間の実測値のうちの最大値である。例えば、ジョブ管理サービスサーバ群1202は、最大処理時間(実測)1505に基づいて、中止時間1503を決定して設定する。ジョブ管理サービスサーバ群1202が、最大処理時間(実測)1505の値そのものを中止時間1503として設定してもよい。また、ジョブ管理サービスサーバ群1202は、最大処理時間(実測)1505に予め決められた猶予時間を足し合わせたものを中止時間1503として設定するようにしてもよい。なお、中止時間1503の決定方法としては、上記のものに限定されない。
最大処理時間(予想)1506は、タスクの処理時間のうち、予想される最大処理時間である。この例では、タスクサーバ103は、画像データに対する処理を行う。したがって、ジョブ管理サービスサーバ群1202は、一時ファイル管サービスサーバ群1203が管理できる最大サイズの画像データに対する処理時間を予め計測しておき、この計測結果に基づいて、最大処理時間(予想)1506を算出して設定する。また、この例では、タスクサーバ104は、画像データをアップロードし保管する処理を行う。したがって、ジョブ管理サービスサーバ群1202は、クラウドサービスサーバ群108がアップロードを許容する最大のサイズの画像データをアップロードするために要する時間から、最大処理時間(予想)1506を算出することができる。なお、ジョブ管理サービスサーバ群1202は、最大処理時間(予想)1506を、クラウドサービスサーバ群108のアップロードタイムアウト値から算出してもよい。最大処理時間(予想)1506の算出方法としては、上記のものに限定されない。
最大処理時間(予想)1506を、中止時間1503を決定する要素として用いるようにしてもよい。例えば、最大処理時間(予想)1506の値そのものを中止時間1503としてもよいし、最大処理時間(予想)1506に予め決められた猶予時間を足し合わせたものを中止時間1503としてもよい。前述したように、ジョブ管理サービスサーバ群1202は、タスク情報管理DB1302に設定された中止時間に基づいて、タスク処理を実行中のタスクサーバから他のタスクサーバにジョブを委譲することを決定する。すなわち、ジョブ管理サービスサーバ群1202は、前述した中止命令、代理実行命令を発行するタイミングを、タスクの処理内容に対応するタスクの処理時間に応じて変化させる。
図13は、ジョブ管理サービスサーバ群の構成例を示す図である。ジョブ管理サービスサーバ群1202は、タスクサーバ(103、104)からのタスク要求(タスク取得リクエスト)に応じて、タスクを渡す。タスク取得リクエストは、タスクの取得を求める要求である。処理待ち状態のタスクサーバは、所定のポーリング時間毎に、タスク取得リクエストを送信する。また、ジョブ管理サービスサーバ群1202は、各タスクの状態を管理する。
ジョブ管理サービスサーバ群1202は、外部I/F1601、ジョブ情報管理DB1602、ジョブ追加部1603、ジョブ情報取得部1604、ジョブ情報更新部1605、ジョブ状態通知部1606を備える。
外部I/F1601は、タスクサーバおよび画像形成装置107との間の通信インタフェースである。外部I/F1601を通じて、ジョブ管理サービスサーバ群1202の各機能へのアクセスが行われる。ジョブ情報管理DB1602には、ジョブ情報が記憶される。ジョブ情報は、ジョブに含まれる複数のタスクのうち、現在最先の処理順序のタスクと、そのタスクの状態と、そのタスクを実行中のタスクサーバからタスク処理中であることの通知を受けた最終通知時刻に関する情報とを含む。
ジョブ追加部1603は、スキャンサービスサーバ群101によって投入されるジョブに関するジョブ情報を、ジョブ情報管理DB1602に記憶する。ジョブ情報取得部1604は、タスクサーバからのタスク取得リクエストに応じて、リクエスト元のタスクサーバが処理対象とするタスクに対応するジョブ情報をジョブ情報管理DB部1602から、取得し、タスクサーバに渡す。このジョブ情報をタスクサーバに渡すことを、本明細書では「タスクを渡す」と記述している。
ジョブ情報更新部1605は、タスクサーバからのジョブ情報更新リクエストに応じて、ジョブ情報管理DB1602内のジョブ情報を更新する。ジョブ情報更新リクエストは、ジョブ情報の更新を求める要求である。ジョブ状態通知部1606は、タスクサーバから状態通知を受け付ける。タスクサーバは、自身に対応する状態通知時間毎に状態通知を行う。
図14は、ジョブ情報管理DBの一例を示す図である。ジョブ情報管理DB1602は、ジョブ情報を記憶するジョブ情報記憶部である。ジョブ情報は、ジョブID1701、ルートID1702、ファイルグループID1703、カレントタスクID1704、ステータス1705といったデータ項目を有する。また、このジョブ情報は、最終更新時刻1706、パラメータ1707、タイムスタンプ1708、最終状態通知時刻1709といったデータ項目を有する。
ジョブID1701は、ジョブ情報を一意に識別する識別情報である。ルートID1702は、ルートを一意に識別する識別情報である。ルートID1702には、図5のチケット作成画面601上で選択されたテンプレートに対応するルートのルートIDが設定される。
ファイルグループID1703は、ジョブに含まれる画像データに関するファイルグループを一意に識別する識別情報である。カレントタスクID1704は、当該ジョブに含まれるタスクのうち、現在最先の処理順序のタスクであるカレントタスクを一意に識別する識別情報である。ジョブ管理サービスサーバ群1202のジョブ情報取得部1604は、カレントタスクID1704に設定されたタスクIDが、タスク取得リクエスト元のタスクサーバに割り当てられたタスクIDと合致するレコード(一行分のデータ)を特定する。そして、ジョブ情報取得部1604は、特定したレコードに対応するカレントタスクを、タスクサーバに渡す。
ジョブ情報更新部1605は、タスクの処理が完了した場合には、そのタスクに対応するレコードに含まれるルートIDを特定する。ジョブ情報更新部1605は、ルート情報管理DB1301を参照して、上記特定したルートIDに対応するタスクのうち、処理が完了したタスクの次に処理対象となるタスクを決定する。そして、ジョブ情報更新部1605は、ジョブ情報管理DB1602の上記レコードに対応するカレントタスクIDを上記決定したタスクのタスクIDに更新する。
ステータス1705は、当該タスクの状態である。具体的には、ステータス1705には、処理待ち状態を示す「0」、実行中状態を示す「1」、またはエラー発生を示す「2」が設定される。ジョブ情報更新部1605は、タスクの処理が完了した場合には、ステータス1705を0に更新する。
ジョブ情報取得部1604がタスクサーバに渡すタスクを選択する際には、ステータスが1であるレコードを選択する。これにより、複数のタスクサーバが同一のタスクを処理するといった事態を防ぐことができる。タスクサーバにタスクが渡されると、ジョブステータス変更部1605が、ステータス1705を0から1に変更する。
最終更新時刻1706は、ジョブ情報の最終更新時刻である。タスクのステータスが更新された時や、タスクサーバにタスクが渡された時に、最終更新時刻1706が現在時刻に更新される。ジョブ情報取得部1604は、タスク取得リクエスト元のタスクサーバに割り当てられたタスクIDがカレントタスクIDと等しいレコードが複数存在している場合、最終更新時刻1706が最も古いレコードを選択し、選択したレコードに対応するタスクを渡す。これにより、全てのジョブを平均的に処理することが可能となる。
パラメータ1707には、詳細設定画面605(図5)を用いて設定された設定情報や、タスクサーバが他のタスクサーバに渡す設定情報が設定される。タイムスタンプ1708は、ジョブ情報が更新される度に自動的に更新される固有情報である。例えば、タスク処理中のタスクが他のタスクサーバに委譲される度に、タイムスタンプ1708が更新される。
タスクサーバとジョブ情報更新部1605およびジョブ状態通知部1606との間の通信の際に、タイムスタンプの受け渡しを行うことで、他のタスクサーバにジョブが委譲されていないことを保証できる。最終状態通知時刻1709は、タスク処理を実行中のタスクサーバから状態通知を受けた最終時刻である。ジョブ情報取得部1604は、最終状態通知時刻1709から中止時間1503経過した場合に、他のタスクサーバへジョブを委譲する。
図15は、本実施形態の情報処理システムの動作処理の例を説明するシーケンス図である。まず、クライアント端末106が備えるWebブラウザ301が、スキャンサービスサービスサーバ群101に対して、スキャンチケット作成画面リクエストを送信する(ステップS1101)。続いて、スキャンサービスサービスサーバ群101が備えるチケット作成部511は、スキャンチケット作成画面リクエストにしたがって、スキャンチケット作成画面を生成し、Webブラウザ301にレスポンスとして返す(ステップS1102)。具体的には、チケット作成部511は、テンプレート管理部516から、テンプレート管理DB503に登録されているスキャンチケットのテンプレートを取得する。そして、チケット作成部511は、取得したテンプレートに含まれるテンプレート名を含むスキャンチケット作成画面を作成し、Webブラウザ301に対して送信する。Webブラウザは、受信したスキャンチケット作成画面を表示する(図5)。
次に、スキャンチケット作成画面上でのユーザの操作にしたがって、Webブラウザ106が、スキャンサービスサーバ群101に対して、スキャンチケット作成リクエストを送信する(ステップS1103)。スキャンサービスサーバ群101が備えるチケット作成部511が、スキャンチケット作成リクエストにしたがってスキャンチケットを作成する。また、チケット管理部515が、作成されたスキャンチケットをチケット管理DB502に保存し、Webブラウザ301に対してレスポンスを返す。
次に、画像形成装置107のスキャンソフトウェア部が、外部I/F514を介し、チケット一覧部512に対して、チケット一覧取得リクエストを送信する(ステップS1105)。チケット一覧取得リクエストは、チケットの一覧の送信を求める要求である。チケット一覧部512は、チケット一覧取得リクエストにしたがって、チケットの一覧を生成してWebブラウザ301に返す(ステップS1106)。Webブラウザ301は、返されたチケット一覧をチケット一覧画面(図6)上に表示する。
次に、チケット一覧画面上でのユーザの操作にしたがって、画像形成装置107のスキャンソフトウェア部が、スキャン処理を実行して画像データを取得する(ステップS1107)。そして、スキャンソフトウェア部が、上記スキャン処理によって取得した画像データと、チケット一覧画面上でのユーザの操作により選択されたスキャンチケットとをスキャンサービスサーバ群101のスキャン受信部513に送信する(ステップS1108)
次に、スキャン受信部513が、受信した画像データをフローサービスサーバ群102に投入する(ステップS1109)。フローサービスサーバ群102が画像データを正しく受信できた場合には、フローサービスサーバ群102は、スキャンサービスサーバ群101に対して、受信した画像データに対応するファイルグループを応答する(ステップS110)。続いて、スキャンサービスサーバ群101のスキャン受信部513が、フローサービスサーバ群102に対して、ファイルグループIDとスキャンチケットとを送信する。これにより、フローサービスサーバ群102にジョブが投入される(S1111)。
次に、フローサービスサーバ群102がタスクサーバからのタスク取得リクエストに応じてタスクを渡す処理について説明する。各々のタスクサーバ(103,104)のタスク取得部1011が、定期的にフローサービスサーバ群102に問い合わせ(タスク取得リクエスト)を行う。そして、タスク取得部1011が、タスクサーバにて処理可能なタスクを取得する(ステップS1112、S1113、S1120、S1121)。フローサービスサーバ群102によるタスクサーバに対する応答処理については、図16を参照して後述する。
タスクサーバのデータ取得部1012が、タスク取得部1011によって取得したタスクに対応する、処理すべき画像データをフローサービスサーバ群102から取得する(ステップS1114、S1115、S1122、S1123)。タスクサーバのタスク処理部1015が、フローサービスサーバ群102から取得した画像データに対して各種処理(タスク処理)を実行する(ステップS1116、S1124)。
また、タスクサーバのタスクステータス通知部1014は、定期的にフローサービスサーバ群102に状態通知を行う(ステップS1117、S1125)。フローサービスサーバ群102による、各タスクサーバからの状態通知に対する応答処理については、図17を参照して後述する。
図15に示す例では、タスクサーバ103のタスク処理部1015は、ステップS1116におけるタスク処理の結果を、データ保存部1013を介してフローサービスサーバ群103に保存する(ステップS1118)。また、タスクサーバ104のタスク処理部1015は、ステップS1124におけるタスク処理の結果を、クラウドサービスサーバ群108にデータ送信する(ステップS1126)。
また、タスクサーバ(103、104)のタスクステータス通知部1014は、一連のタスク処理の終了結果をフローサービスサーバ群103に通知する(ステップS1119、S1127)。
図16は、タスク取得リクエストに対するフローサービスサーバ群の応答処理の例を説明するフローチャートである。まず、ジョブ管理サービスサーバ群1202のジョブ情報取得部1604が、タスクサーバからタスク取得リクエストを受信する(ステップS2201)。タスク取得リクエストにはタスク取得リクエスト元のタスクサーバに割り当てられたタスクIDが含まれている。
次に、ジョブ情報取得部1604が、ジョブ情報管理DB1602を参照して、ジョブ情報を取得する(ステップS2202)。続いて、ジョブ情報取得部1604が、ジョブ情報管理DB1602を参照して、実行すべきジョブがあるかを判断する(ステップS2203)。具体的には、ジョブ情報取得部1604は、ジョブ情報管理DB1602に、ステータスが処理待ち「0」で、かつカレントタスクIDがタスク取得リクエストに含まれているタスクIDと等しいレコードがあるかを判断する。ステータスが処理待ち「0」で、かつカレントタスクIDがタスク取得リクエストに含まれているタスクIDと等しいレコードがある場合、ジョブ情報取得部1604は、実行すべきジョブがあると判断する。そして、ジョブ情報取得部1604が、ステップS2204において、当該レコードに含まれるカレントタスクIDに対応するタスクを、タスク取得リクエスト元のタスクサーバに渡す(ジョブを送信する)。
ステータスが処理待ち「0」で、かつカレントタスクIDがタスク取得リクエストに含まれているタスクIDと等しいレコードがない場合、ジョブ情報取得部1604は、実行すべきジョブがないと判断する。そして、処理がステップS2205に進む。
ステップS2205において、ジョブ情報取得部1604が、中止時間1503以上経過して実行中であるタスクがあるかを判断する(ステップS2205)。以下に、ステップS2205の判断処理について具体的に説明する。まず、ジョブ情報管理DB1602のエントリのうち、カレントタスクIDがタスク取得リクエスト元に対応するタスクIDと等しいエントリがある場合、ジョブ情報取得部1604が、以下の処理を実行する。ジョブ情報取得部1604は、ジョブ情報管理DB1602を参照して、このタスクIDに対応するエントリのうち、ステータスが実行中「1」であるエントリに含まれる最終状態通知時刻を取得する。ステータスが実行中「1」であることは、このエントリに対応するタスクが、タスク取得リクエスト元のタスクサーバとは異なるタスクサーバが実行中であることを意味する。
また、ジョブ情報取得部1604は、タスク情報管理DBを参照して、このタスクIDに対応する中止時間を取得する。そして、ジョブ情報取得部1604が、取得した最終状態通知時刻から取得した中止時間以上経過しているかを判断する。取得した最終状態通知時刻から取得した中止時間以上経過している場合、中止時間以上経過して実行中であるタスクがあると判断して、ステップS2204に進む。そして、ステップS2204において、ジョブ情報取得部1604は、当該中止時間以上経過して実行中であるタスクを、代理実行命令とともに、タスク取得リクエスト元のタスクサーバに渡す(ジョブを送信する)。
タスク取得リクエスト元のタスクサーバは、受け取ったタスクのタスク処理を実行する。また、ジョブ情報取得部1604は、所定のタイミングで、当該中止時間以上経過して実行中であるタスクの処理を実行中のタスクサーバに対して、このタスクの処理を中止する命令を発行する。これにより、タスク処理を実行中のタスクサーバから、他のタスクサーバへ処理を委譲することができる。
取得した最終状態通知時刻から取得した中止時間以上経過してない場合、中止時間以上経過して実行中であるタスクがないと判断して、ステップS2206に進む。また、ジョブ情報管理DB1602のエントリのうち、カレントタスクIDがタスク取得リクエスト元に対応するタスクIDと等しいエントリがない場合も、ジョブ情報取得部1604が、中止時間1503以上経過して実行中であるタスクがないと判断する。そして、処理がステップS2206に進む。
ステップS2206において、ジョブ情報取得部1604は、タスク取得リクエスト元のタスクサーバに対して、このタスクサーバが実行すべきタスクがないことを示す情報である“null”を送信する(ステップS2205)。“null”を受信したタスクサーバは、一定時間後に再度タスク取得リクエストを行う。
図16を参照して説明した処理から、ジョブ管理サービスサーバ群1202は、ジョブ情報に基づいて、タスク要求に対応するタスクと一致する現在最先の処理順序のタスクの状態が実行中であるかを判断する。当該タスクの状態が実行中である場合(S2203でNO)に、ジョブ管理サービスサーバ群1202は、最終状態通知時刻から所定の時間を経過しているかを判断する(S2205)。そして、最終状態通知時刻から所定の時間を経過している場合(S2205でYES)に、ジョブ管理サービスサーバ群1202は、タスク要求元のタスクサーバに対して実行中のタスクの処理を代理で実行するように命令する(S2204)。
図17は、状態通知に対するフローサービスサーバ群の応答処理の例を説明するフローチャートである。この応答処理においては、ジョブ管理サービスサーバ群1202が、タスクの処理を実行中のタスクサーバから状態通知を受信した場合に、既に他のタスクサーバが同じタスクの処理を実行中であれば、状態通知の送信元のタスクサーバのタスクの処理を中止させる。
まず、ジョブ管理サービスサーバ群1202のジョブ状態通知部1606が、タスクサーバから状態通知を受信する(ステップS2301)。この状態通知には、状態通知の送信元のタスクサーバのタスクIDと、このタスクサーバが処理中のタスクに対応するジョブIDと、タイムスタンプとが含まれている。
次に、ジョブ情報取得部1604が、ジョブ情報管理DB1602を参照する(ステップS2302)。そして、ジョブ情報取得部1604が、状態通知の送信元(通知元)のタスクサーバが処理中のタスクが、既に他のタスクサーバによって実行されているか、すなわち、他のタスクサーバにジョブが委譲されているかを判断する(ステップS2303)。具体的には、ジョブ情報取得部1604は、状態通知に含まれるタスクID、ジョブID、タイムスタンプの組に対応するジョブ情報が存在するかを判断する。ここで、他のタスクサーバにジョブが委譲されている場合には、タイムスタンプが更新されている。したがって、状態通知に含まれるタスクID、ジョブID、タイムスタンプの組に対応するジョブ情報が存在しない場合、ジョブ情報取得部1604は、当該タスクが既に他のタスクサーバによって実行されていると判断し、処理がステップS2304に進む。
ステップS2304において、ジョブ情報取得部1604が、状態通知の送信元のタスクサーバに対して、“null”を送信する。この例では、当該“null”の送信は、タスクの処理を中止させる命令の発行である。“null”を受信すなわちタスクの処理を中止させる命令を受信したタスクサーバは、この命令にしたがって、タスクの処理を中止する。これにより、このタスクサーバが、次に実行すべきタスクの問い合わせを再開することができる。これにより、タスクサーバが、無駄な処理を実行することでコンピュータリソースを無駄に消費したり、二重に処理を行って外部システムに対して不整合を発生させることを防止することができる。
状態通知に含まれるタスクID、ジョブID、タイムスタンプの組に対応するジョブ情報が存在する場合、ジョブ情報取得部1604は、タスクが他のタスクサーバによって実行されていないと判断し、処理がステップS2305に進む。そして、ジョブ情報更新部1605が、タイムスタンプを更新して、更新後のタイムスタンプを状態通知の送信元のタスクサーバに対して送信する(ステップS2305)。
以上説明したように、実施例1では、ジョブが委譲された場合に、実行中のタスクの処理を適切に中止させることができる。これにより、タスクがコンピュータリソースを無駄に消費せず、一連のジョブ処理におけるスループットを拡大し、外部システムへの不整合を発生させないシステムを実現することができる。
(実施例2)
タスクサーバ(103、104)が、ジョブ管理サービスサーバ群1202に対して、一定間隔でタスク取得リクエストを送信すると、タスク取得リクエストの送信回数が多くなった場合、ネットワーク帯域が浪費されてしまう。一方、タスク取得リクエストの送信回数を少なくすると、ジョブ実行までの待ち時間が増加してしまい、システムのスループットが低下してしまう。したがって、タスク取得リクエストの送信間隔の最適化が必要となる。また、タスクサーバからの状態通知の送信も、ネットワークリソースの浪費の原因となるので、状態通知の送信もできる限り減らすのが望ましい。そこで、実施例2では、タスクサーバによるタスク取得リクエストの送信間隔と、状態通知の間隔とを最適化する。
図18は、実施例2における、タスク取得リクエストに対するフローサービスサーバ群の応答処理の例を説明するフローチャートである。ステップS2401、S2402、S2403、S2404は、それぞれ、図16のステップS2201、S2202,S2203、S2205と同様である。
ステップS2409において、ジョブ情報取得部1604が、タスク取得リクエスト元のタスクサーバに割り当てられたタスクIDに対応するタスク情報を取得する。そして、ジョブ情報取得部1604が、タスク取得リクエスト元のタスクサーバに対して、実行すべきタスクと、上記ステップS2409において取得されたタスク情報に含まれる状態通知時間とを送信する(ステップS2410)。ジョブ情報取得部1604から状態通知時間を受信したタスクサーバは、この状態通知時間の時間間隔で、次の状態通知を行う。ここで、図12を参照すると、タスクサーバが受信する状態通知時間は、タスクの内容および最大処理時間に応じて変化する。したがって、この状態通知時間を受信したタスクサーバは、状態通知を行う時間間隔をタスクの処理時間に応じて変化させることになる。
図12に示すタスク情報管理DB1302に保存されたタスク情報のうち、タスクIDがそれぞれ“Task1”、“Task2”であるタスク1、タスク2を例にとって説明する。ジョブ管理サービスサーバ群1202は、タスクサーバからの状態通知が一定時間無かった場合、タスクサーバに異常が発生したと判断して、別のタスクサーバにジョブを委譲する。ここで、タスク1は、PDFをPDLに変換する画像処理を行うタスクであるため、最大処理時間(予想)が600秒と比較的長くなっている。これは、画像処理は処理の品質やパラメータによっては非常に時間を要する場合があるからである。また、タスク2は、外部クラウド(本実施例ではクラウド1)にデータを保存するタスクである。
一般的に、クラウドへの接続には、タイムアウト時間が設定されている。例えば、クラウド1の場合は30秒がタイムアウトである。したがって、タスク2の最大処理時間(予想)は30秒に設定されている。例えば、状態通知時間を全てのタスクサーバについて30秒程度に固定にした場合、タスク2については、状態通知時間として適切であるが、タスク1については、状態通知時間として短かすぎる。タスク1は、最大で600秒程度を要するタスクであるため、20回程度も無駄な通信を発生させることになるからである。
また、例えば、状態通知時間を全てのタスクサーバについて600秒程度に固定にした場合、タスク1については状態通知時間として適切であるが、タスク2については状態通知時間として長すぎる。タスク2は30秒程度で終了するタスクであるため、異常が発生した場合はより早くジョブ管理サービスサーバ群1202が検知するべきだからである。本実施例では、タスクの内容に応じて最適な状態通知時間をジョブ管理サービスサーバ群1202から指定する。したがって、状態通知回数を低減することができる。その結果、ジョブ管理サービスサーバ群のネットワークリソース、コンピュータリソースの浪費を抑えることができる。
図18に戻って、ステップS2404の判断処理で、ジョブ情報取得部1604が、中止時間1503以上経過して実行中であるタスクがないと判断した場合は、処理がステップS2405に進む。
次に、ジョブ情報取得部1604が、ジョブ情報管理DB1602から、実行中のジョブ情報すなわち対応するステータスが「1」に設定されているジョブ情報を取得する。ジョブ情報取得部1604は、取得したジョブ情報に含まれるカレントタスクIDが示す、現在最先の処理順序のタスク、つまり実行中のタスクを特定する。また、ジョブ情報取得部1604が、取得したジョブ情報に含まれるルートIDに対応するルート情報を取得する(ステップS2405)。取得したルート情報に含まれるタスクIDとシーケンス番号とに基づいて、各々のタスクIDに対応するタスクの、当該ルートにおける処理順序を確認する(ステップS2405)。
次に、ジョブ情報取得部1604が、ステップS2405における確認結果に基づいて、タスク取得リクエスト元のタスクサーバが実行すべきタスクの前の処理順序であるタスクが処理中であるかを判断する(ステップS2406)。すなわち、ジョブ情報取得部1604は、現在最先の処理順序のタスクとタスク要求されたタスクとの処理順序関係を判断してタスク要求されたタスクのタスク処理より前のタスク処理の進捗状況を決定する。
この例では、現在実行中のタスクの次の処理順序であるタスクのタスクIDが、タスク取得リクエスト元のタスクサーバのタスクIDと一致する場合、ジョブ情報取得部1604が、以下の処理を実行する。ジョブ情報取得部1604は、そのタスクサーバが実行すべきタスクの前の処理順序であるタスクが処理中である、すなわちジョブ情報取得部1604は、タスク取得リクエスト元のタスクサーバが、近い将来タスク処理を実行すべきタスクサーバであると判断する。そして、ジョブ情報取得部1604は、タスク取得リクエスト元のタスクサーバに対して、ポーリング時間すなわちタスク取得リクエストの送信間隔として、時間aを送信する(ステップS2407)。ポーリング時間aを受信したタスクサーバは、ポーリング時間aを経過した時に、ジョブ管理サービスサーバ群1202に対して再度タスク取得リクエストを送信する。
ここで、ポーリング時間aは、ポーリング時間aは、ジョブ管理サービスサーバ群1202のネットワークI/O制限や、CPU、メモリなどに基づいて、ジョブ管理サービスサーバ群1202が許容できる最も短い時間に予め設定されている。
また、この例では、現在実行中のタスクの次の処理順序であるタスクのタスクIDが、タスク取得リクエスト元のタスクサーバのタスクIDと一致しない場合、ジョブ情報取得部1604が、以下の処理を実行する。ジョブ情報取得部1604は、そのタスクサーバが実行すべきタスクの前の処理順序であるタスクが処理中である、すなわち、タスク取得リクエスト元のタスクサーバが行うタスク処理の順番は遅いと判断する。そして、ジョブ情報取得部1604は、タスク取得リクエスト元のタスクサーバに対して、ポーリング時間aより長い時間(例えば、2倍の時間)であるポーリング時間bを送信する(ステップS2408)。
ポーリング時間aを受信したタスクサーバは、ポーリング時間bを経過した時に、ジョブ管理サービスサーバ群1202に対して再度タスク取得リクエストを送信する。すなわち、ジョブ情報取得部1604は、タスク要求されたタスクのタスク処理より前のタスク処理の進捗状況に応じて、ポーリング時間を変更し、変更したポーリング時間をタスク要求元のタスクサーバに通知する。タスクサーバは、通知されたポーリング時間経過後に、次のタスク取得リクエストを行う。つまり、タスクサーバ側からみると、タスクサーバは、タスク取得リクエストを送信する時間間隔を、自身が実行するタスク処理より前のタスク処理の進捗状況に応じて変化させる。
なお、この例では、ステップS2406における判断処理は、必ずしもタスク取得リクエスト元が実行すべきタスクの1つ前のタスクが実行中であるかを基準に行っているが、ステップS2406における判断処理の基準は、この基準に限定されない。例えば、2つ前、3つ前のタスクが実行中であるか否かを判断基準にしてもよい。
本実施例によれば、タスク取得リクエスト元のタスクサーバに対して、タスク処理の進捗状況に応じた最適なポーリング時間で次のタスク取得リクエストを行わせることができる。また、本実施例によれば、タスクサーバに、タスクの処理内容に応じた最適な時間間隔で次の状態通知を行われることができる。したがって、ネットワークリソースの浪費を抑えつつ、ジョブ実行のスループットを向上させることができる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。