(57)【要約】【課題】複数のサーバに保存させるデータのレプリケーション数が増加した場合でも、データの保存時間が著しく増加することを防止するサーバシステムを提供する。【解決手段】指定された多重度数分ファイルを保存する複数のファイル管理サービスサーバを備えるサーバシステムを設ける。各々のファイル管理サービスサーバが、多重度が指定されたファイルの要求にしたがってファイルを保存する保存処理と、保存要求が指示するファイルの転送先のサーバ装置を決定し、上記ファイルを転送先のサーバ装置に転送してファイルの保存要求を行うファイルの転送処理とを並列に実行する。【選択図】図１３
2014154104.tif 000002
【特許請求の範囲】
【請求項１】
指定された多重度数分データを保存するサーバシステムであって、
前記多重度が指定されたデータの保存要求を受け付ける受け付け手段と、
前記保存要求にしたがって、前記データを保存する保存手段と、
前記データの転送先のサーバ装置を決定する決定手段と、
前記データを前記決定された転送先のサーバ装置に転送して該データの前記保存要求を行う転送手段とを備え、
前記保存手段による前記データの保存処理と、前記転送手段による前記データの転送処理とが、並列に実行される
ことを特徴とするサーバシステム。
【請求項２】
前記転送手段は、前記受け付け手段が前記保存要求を受け付けた時の前記データについて指定された多重度より値が１小さい多重度が指定された保存要求を前記転送先に対して行い、
前記転送手段は、前記受け付け手段が受け付けた保存要求に指定された多重度が１より大きいかを判断し、前記保存要求に指定された多重度が１より大きいと判断した場合に、
前記保存手段による前記データの保存処理と並列に前記データの転送処理を実行する
ことを特徴とする請求項１に記載のサーバシステム。
【請求項３】
前記データの送受信状態を示す状態情報を各々の前記サーバ装置に対応づけて記憶する記憶手段を備え、
前記決定手段は、前記記憶手段に記憶された前記状態情報を参照して、前記データの転送先を決定する
ことを特徴とする請求項１または請求項２に記載のサーバシステム。
【請求項４】
前記状態情報は、前記サーバ装置が受信中のデータの数を第１データ数、前記サーバ装置が送信中のデータの数を第２データ数として含んでおり、
前記決定手段は、前記状態情報に含まれる前記第１データ数が最も少ないサーバ装置を前記データの転送先として決定する
ことを特徴とする請求項３に記載のサーバシステム。
【請求項５】
前記決定手段は、
前記状態情報に含まれる前記第１データ数が最も少ないサーバ装置が複数ある場合に、前記サーバ装置に前記データを転送する際の前記保存要求に指定される多重度が１であるかを判断し、
前記サーバ装置に前記データを転送する際の前記保存要求に指定される多重度が１であると判断した場合に、前記第１データ数が最も少ない複数のサーバ装置のうち、前記状態情報に含まれる前記第２データ数が最も多いサーバ装置を前記データの転送先として決定する
ことを特徴とする請求項４に記載のサーバシステム。
【請求項６】
前記決定手段は、
前記サーバ装置に前記データを転送する際の前記保存要求に指定される多重度が１でないと判断した場合に、前記第１データ数が最も少ない複数のサーバ装置のうち、前記状態情報に含まれる前記第２データ数が最も少ないサーバ装置を前記データの転送先として決定する
ことを特徴とする請求項５に記載のサーバシステム。
【請求項７】
前記転送手段は、前記データの転送先のサーバ装置との通信接続がタイムアウトした場合に、前記データを他のサーバ装置に対して先頭から再送信し、
前記保存手段は、前記データの転送元のサーバ装置との通信接続がタイムアウトした場合に、前記保存された前記データを削除する
ことを特徴とする請求項５に記載のサーバシステム。
【請求項８】
前記転送手段は、前記データの転送先のサーバ装置との通信接続がタイムアウトした場合に、前記転送先のサーバ装置とは異なる他のサーバ装置であって、前記データの一部を受信済みのサーバ装置に対して、該サーバ装置が未受信の分のデータを送信する
ことを特徴とする請求項５に記載のサーバシステム。
【請求項９】
前記保存要求には、前記多重度と、前記データの最低保障数が指定されており、
前記保存手段による前記データの保存処理によって、前記最低保障数分のデータが保存された時に、前記最低保障数分のデータの保存が完了したことを通知する通知手段を備える
ことを特徴とする請求項１乃至８のいずれか１項に記載のサーバシステム。
【請求項１０】
指定された多重度数分データを保存するサーバシステムの制御方法であって、
前記多重度が指定されたデータの保存要求を受け付ける受け付け工程と、
前記保存要求にしたがって、前記データを保存する保存工程と、
前記データの転送先のサーバ装置を決定する決定工程と、
前記データを前記決定された転送先のサーバ装置に転送して該データの前記保存要求を行う転送工程とを有し、
前記保存工程による前記データの保存処理と、前記転送工程による前記データの転送処理とが、並列に実行される
ことを特徴とする制御方法。
【請求項１１】
請求項１乃至９のいずれか１項に記載の手段としてコンピュータを機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバシステム、制御方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
サーバコンピュータ側で各種処理を行う形態として、クラウドコンピューティングシステムやＳａａＳ（Software as a Service）という技術が提案されている。クラウドコンピューティングでは、多くのコンピューティング・リソースを利用し、データ変換やデータ処理を分散して実行することで、多くのクライアントからの要求を同時に処理することが可能となる。また、クラウドコンピューティングの特徴を活用するため、サーバでの一連の処理を細かく規定されたタスクの連結で実現し、それらを同時並行で処理することで、多数のジョブをスケーラブルに処理するジョブ処理機構を備えるシステムが提案されている。このようなシステムをクラウドシステムと称する。
【０００３】
上記のジョブ処理機構では、先頭のタスクが処理するべき一時データや、各タスクの実行結果により生成される一時データについて、可用性確保のために、レプリケーション（複製）を作成し、複数のファイルサーバに保存させる必要がある。
【０００４】
特許文献１は、記憶部のデータを２つの情報処理装置で同期するデータ同期システムを開示している。このシステムは、一方の情報処理装置において記憶部にデータを書き込んだ後、差分とともに同期要求をメッセージキュー処理部に対して行う。データ同期処理部が、メッセージキュー処理部から差分データを取得し、同期先の情報処理装置へ転送する。同期先の情報処理装置のデータ同期受信処理部が、受信した同期要求を元に記憶部のデータを更新する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１―７０６３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１が開示するシステムは、記憶部にデータを書き込んだ後、差分をメッセージキュー処理部に送信するので、データの書込と転送とが並列で処理されない。その結果、レプリケーション数が増えるに従って、データの保存にかかる時間が著しく増加するおそれがある。
【０００７】
本発明は、複数のサーバに保存させるデータのレプリケーション数が増加した場合でも、データの保存時間が著しく増加することを防止するシステムの提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形態のサーバシステムは、指定された多重度数分データを保存するサーバシステムであって、前記多重度が指定されたデータの保存要求を受け付ける受け付け手段と、前記保存要求にしたがって、前記データを保存する保存手段と、前記データの転送先のサーバ装置を決定する決定手段と、前記データを前記決定された転送先のサーバ装置に転送して該データの前記保存要求を行う転送手段とを備える。そして、前記保存手段による前記データの保存処理と、前記転送手段による前記データの転送処理とが、並列に実行される。
【発明の効果】
【０００９】
本発明のサーバシステムによれば、複数のサーバに保存させるデータのレプリケーション数が増加した場合でも、データの保存時間が著しく増加することを防止することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の情報処理システムの全体構成を示す図である。
【図２】サーバコンピュータのハードウェア構成図の例である。
【図３】クライアント端末と画像形成装置の構成例を示す図である。
【図４】スキャンサービスサーバの構成例を示す図である。
【図５】タスクサービスサーバの構成例を示す図である。
【図６】フローサービスサーバの構成例を示す図である。
【図７】ルート管理サービスサーバの構成例を示す図である。
【図８】ルート情報管理ＤＢの一例を示す図である。
【図９】タスク情報管理ＤＢの一例を示す図である。
【図１０】ジョブ管理サービスサーバの構成例を示す図である。
【図１１】ジョブ情報管理ＤＢの一例を示す図である。
【図１２】情報処理システムの動作処理の例を説明するシーケンス図である。
【図１３】一時ファイル管理サービスサーバの構成例を示す図である。
【図１４】ファイル管理サービスサーバのシステム構成図の例である。
【図１５】ファイル管理サーバ管理ＤＢとパス管理ＤＢが管理するデータの一例を示す図である。
【図１６】一時ファイルの書込・転送処理の例を説明するシーケンス図である。
【図１７】転送データの構造と退避領域管理部が管理するデータを示す図である。
【図１８】転送開始処理を説明する図である。
【図１９】転送完了処理を説明する図である。
【図２０】ファイル管理サーバ管理ＤＢが管理するデータの例である。
【図２１】実施例２におけるファイル転送処理を説明する図である。
【図２２】転送再開処理を説明する図である。
【図２３】ファイル受信処理を説明する図である。
【図２４】停止処理を説明する図である。
【図２５】転送完了通知判断処理を説明する図である。
【発明を実施するための形態】
【００１１】
本実施形態のシステムが解決する課題の具体例について説明する。１つ以上のタスクから構成されるジョブと、上記ジョブに関する情報や実行順序などを制御するジョブ管理サービスサーバを想定する。各タスクは、それぞれ複数のインスタンスを立ち上げることが可能であり、各インスタンスは非同期でジョブ管理サービスサーバからジョブを取得し、例えば黒点除去などの画像処理や共有フォルダへのデータ格納処理などを行う。各タスクで扱うバイナリデータは、一時ファイル管理サービスサーバにて管理され、各タスクは、必要に応じて処理すべきデータを一時ファイル管理サービスサーバから取得し、処理の実行結果を保存する。ジョブ管理サービスサーバにジョブを投入するアプリケーションをサービスアプリケーションと呼ぶ。
【００１２】
サービスアプリケーションは、ジョブ管理サービスサーバに対してジョブを投入すると同時に処理すべきデータを一時ファイル管理サービスサーバに投入する。この、ジョブ投入と同時に一時ファイル管理サービスサーバに投入されるデータを、本実施形態では、初期データと呼ぶ。
【００１３】
保存されているサーバで障害等が発生した場合は初期データを取り出すことができなくなるので、可用性確保のために、初期データのレプリケーションを複数のファイルサーバに保存する必要がある。その際、ファイルの保存要求を受け付けた一時ファイル管理サービスサーバから、レプリケーションの保存先である複数のファイルサーバへ、バイナリデータを一度に転送する必要がある。従って、転送元サーバである一時ファイル管理サービスサーバの上りのネットワーク帯域が圧迫され、レプリケーション数が増えるに従って、ファイルの保存にかかる時間が著しく増加する。
【００１４】
また、前述した特許文献１に開示されたシステムを適用し、３つ以上の情報処理装置でデータを同期するように拡張した構成を有するシステムを想定する。この拡張したシステムにおいて、１つの情報処理装置からは１つの情報処理装置へのみデータが転送されるので、各情報処理装置の上りのネットワーク帯域が圧迫されることはない。しかし、このシステムでは、記憶部にデータを書き込んだ後、差分をメッセージキュー処理部に送信するため、データの書込と転送とが直列となり、情報処理装置の増加に対して同期にかかる時間が著しく増加する。その結果、このシステムでは、レプリケーション数が増えるに従ってファイルの保存にかかる時間が著しく増加する。以下に説明する本実施形態のシステムによれば、レプリケーション数が増加した場合でも、ファイルの保存時間が著しく増加することを防止することが可能となる。
【００１５】
（実施例１）
図１は、実施例１の情報処理システムの全体構成を示す図である。本実施例の情報処理システムは、クラウドシステムであって、クライアント端末１０６のユーザに画像処理サービスを提供する。また、この情報処理システムは、非同期でジョブを処理するスケーラブルかつ可用性の高いジョブ処理機構を有する。
【００１６】
図１中の情報処理システムは、スキャンサービスサーバ１０１、フローサービスサーバ１０２、タスクサービスサーバ１０３、１０４、クライアント端末１０６、画像形成装置１０７、クラウドサービスサーバ１０８を備える。図１に示す例では、タスクサービスサーバは２台であるが、情報処理システムが備えるタスクサービスサーバの数は、２台に限定されない。情報処理システムは、３台以上の複数のタスクサービスサーバを備えることができる。さらに、本願に記載される各サーバ（例えば、スキャンサービスサーバ１０１、フローサービスサーバ１０２、クラウドサービスサーバ１０８、タスクサービスサーバ１０３、１０４）は、１台のサーバであっても、複数のサーバで構成されても良い。本願では、このようなサーバをサーバシステムと呼ぶこともある。
【００１７】
スキャンサービスサーバ１０１乃至タスクサービスサーバ１０４は、ネットワーク１１０を介して通信可能に接続されている。クライアント端末１０６および画像形成装置１０７と、スキャンサービスサーバ１０１乃至タスクサービスサーバ１０４とは、ネットワーク１１１およびネットワーク１１０を介して通信可能に接続されている。また、クラウドサービスサーバ１０８とスキャンサービスサーバ１０１乃至タスクサービスサーバ１０４とは、ネットワーク１１２およびネットワーク１１０を介して通信可能に接続されている。
【００１８】
タスクサービスサーバ、クライアント端末１０６、画像形成装置１０７、クラウドサービスサーバ１０８は、複数台設けられている。ネットワーク１１０乃至１１２は、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等である。ＬＡＮは、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略称である。ＷＡＮは、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略称である。ＡＴＭは、Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅの略称である。
【００１９】
ネットワーク１１０乃至１１２が、上述したＬＡＮ乃至データ放送用無線回線の組み合わせにより実現される通信ネットワークであってもよい。すなわち、ネットワーク１１０乃至１１２は、データの送受信が可能であればよい。この例では、情報処理システムは、クラウドシステムであるので、ネットワーク１１０、１１２は、インターネット、ネットワーク１１１は、企業内ネットワークやサービスプロバイダーのネットワークである。
【００２０】
スキャンサービスサーバ１０１、フローサービスサーバ１０２、タスクサービスサーバ１０３、１０４は、複数のサーバコンピュータ群を有する。これらサーバコンピュータ群がクラウドサービスサーバを構成しており、ユーザに対してクラウドサービスを提供する。
【００２１】
例えば、クライアント端末１０６のユーザからの要求に応じて、画像形成装置１０７がスキャン実行を行って画像データを生成し、生成した画像データをスキャンサービスサーバ１０１に投入する。スキャンサービスサーバ１０１（ジョブ投入装置とも呼ぶ）は、当該画像データに対応するジョブをフローサービスサーバ１０２に投入する。本実施例では、ジョブは、複数のタスクから構成される。例えば、ユーザからの要求に従い発行されるジョブがスキャンジョブであった場合、スキャン画像に対し画像処理を行う工程と、画像処理が施されたスキャン画像を保存する工程とが実行されるケースが考えられる。本願発明は、夫々の工程をタスクという単位で区切ることで、１つのジョブを複数のタスクで構成する。この形態のメリットは、複数のタスクを組み合わせることで、多様なジョブ処理を行うことができるという点である。フローサービスサーバ１０２は、投入されたジョブを管理する。すなわち、フローサービスサーバ１０２は、ユーザからの要求に応じて発生した複数のタスクから構成されるジョブを管理するジョブ管理装置として機能する。
【００２２】
タスクサービスサーバ１０３、１０４は、フローサービスサーバ１０２が管理するジョブに含まれるタスクを非同期で取得要求する。フローサービスサーバ１０２は、管理しているジョブに含まれる複数のタスクのうち、取得要求元のタスクサービスサーバに対応するタスクであって、処理待ち状態のタスクを、取得要求元のタスクサービスサーバに渡す。タスクを受け取ったタスクタスクサービスサーバは、特定のジョブ処理を施す。タスクサービスサーバは、例えば、処理対象の画像データに対して画像処理を行ったり、ファイル共有機能を提供する他のクラウドサービスサーバに対して、画像データを送信する処理を行う。すなわち、タスクサービスサーバは、フローサービスサーバ１０２からジョブを取得して実行するジョブ実行装置として機能する。
【００２３】
なお、スキャンサービスサーバ１０１乃至タスクサービスサーバ１０４で構成されるクラウドサービスサーバとは異なる他のクラウドサービスサーバ１０８がインターネット上に公開されており、これらも複数のサーバコンピュータ上にて実行されている。
【００２４】
クライアント端末１０６は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、ＰＤＡ（パーソナルデータアシスタント）等である。クライアント端末１０６が、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末１０６では、Ｗｅｂブラウザ（インターネットブラウザ、ＷＷＷブラウザ、ＷｏｒｌｄＷｉｄｅＷｅｂの利用に供するブラウザ）等のプログラムを実行する環境が内蔵されている。
【００２５】
本実施例の制御方法は、図１に示す情報処理システムの制御方法である。また、本実施例のコンピュータプログラムは、この制御方法をコンピュータに実行させる。
【００２６】
図２は、クライアント端末、スキャンサービスサーバ、フローサービスサーバ、タスクサービスサーバを実現するサーバコンピュータのハードウェア構成図の例である。クライアント端末１０６、サーバコンピュータは、ＣＰＵ２０２、ＲＡＭ２０３、ＲＯＭ２０４、ＨＤＤ２０５を備える。ＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。ＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略称である。ＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略称である。ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略称である。また、クライアント端末１０６、サーバコンピュータは、ＮＩＣ２０９、キーボード２０７、ディスプレイ２０６、インタフェース２０８を備える。ＮＩＣは、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄの略称である。
【００２７】
ＣＰＵ２０２は、装置全体の制御を行う。ＣＰＵ２０２は、ＨＤＤ２０５に格納されているアプリケーションプログラム、ＯＳ等を実行し、ＲＡＭ２０３にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ＯＳは、Ｏｐｅｒａｔｉｎｇ
Ｓｕｓｔｅｍの略称である。ＲＯＭ２０４は、記憶手段であり、内部には、基本Ｉ／Ｏプログラム等の各種データを記憶する。ＲＡＭ２０３は、一時記憶手段であり、ＣＰＵ２０２の主メモリ、ワークエリア等として機能する。ＨＤＤ２０５は、外部記憶手段の一つであり、大容量メモリとして機能し、Ｗｅｂブラウザ等のアプリケーションプログラム、サービス群のプログラム、ＯＳ、関連プログラム等を格納している。
【００２８】
ディスプレイ２０６は、表示手段であり、キーボード２０７から入力したコマンド等を表示したりする。インタフェース２０８は、外部装置Ｉ／Ｆであり、プリンタ、ＵＳＢ機器、周辺機器を接続する。キーボード２０７は指示入力手段である。システムバス２０１は、装置内におけるデータの流れを司る。ＣＰＵ２０２乃至インタフェース２０８は、システムバス２０１に接続されている。インタフェースＮＩＣ２０９は、インタフェース２０８およびネットワーク１１０乃至１１２を介して、外部装置とのデータのやり取りを行う。なお、図２中に示す装置構成は一例であり、図２の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてＲＯＭ２０４、ＲＡＭ２０３、ＨＤＤ２０５のうちのいずれであってもよい。
【００２９】
図３は、クライアント端末と画像形成装置の構成例を示す図である。図３（Ａ）は、クライアント端末の構成例を示す。クライアント端末１０６は、Ｗｅｂブラウザ３０１を備える。Ｗｅｂブラウザ３０１は、スキャンサービスサーバ１０１（図１）が提供するＷｅｂアプリケーションへのリクエストの送信と、レスポンスの表示等を行う。クラウドサービスを利用するユーザは、クライアント端末１０６のＷｅｂブラウザ３０１を利用して、クラウドサービスを利用する。
【００３０】
図３（Ｂ）は、画像形成装置の構成例を示す。この例では、画像形成装置１０７は、スキャン機能とプリント機能を併せ持つ装置である。なお、スキャンサービスを実現するためには、画像形成装置１０７が、プリント機能のない、スキャン専用装置であってもよい。
【００３１】
画像形成装置１０７は、画像処理ユニット４０１、印刷ユニット４０２、読み込みユニット４０３を備える。画像処理ユニット４０１は、画像処理を実行する。画像処理ユニット４０１は、例えば、印刷設定に応じたプリントデータを生成する。印刷ユニット４０２は、画像処理ユニット４０１によって生成されたプリントデータを媒体（例えば、紙媒体）に印刷出力する。読み込みユニット４０２は、例えば、不図示のスキャン装置を用いて、画像データを読み込む。
【００３２】
画像処理ユニット４０１は、ＣＰＵ４０４、直接記憶部４０５、間接記憶部４０６、ユーザインタフェース４０７、外部インタフェース４０８を備える。
【００３３】
ＣＰＵ４０４は、所定のプログラムを実行し、画像形成装置１０７の各種制御を指示する。ＣＰＵ４０４は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。直接記憶部４０５は、ＣＰＵ４０４がプログラムを実行する際に使用するワークメモリである。ＣＰＵ４０４が実行するプログラムは、直接記憶部４０５にロードされる。なお、ＣＰＵ４０４は、マルチプロセッサでもよい。
【００３４】
直接記憶部４０５は、ＲＡＭにより実現される。間接記憶部４０６には、アプリケーションプログラムおよびプラットフォームプログラムを含む各種プログラムが記憶されている。ＣＰＵ４０４が、間接記憶部４０６に記憶されている各種プログラムの実行時に、この各種プログラムを直接記憶部４０５へ移動する。間接記憶部４０６は、ＳＳＤ（Solid State Drive）、または、ＨＤＤ(Hard Disc Drive) により実現される。
【００３５】
この例では、ユーザが独自に開発した新しいアプリケーションを画像形成装置１０７上で実行できるプラットフォームを実現するプラットフォームプログラムが、間接記憶部４０６に記憶されている。プラットフォームによれば、画像形成装置１０７の操作画面をカスタマイズすることも可能になる。
【００３６】
以下に、プラットフォームの実現方法について説明する。ＣＰＵ４０４は、間接記憶部４０６に記憶されたプラットフォームプログラムを直接記憶部４０５に移動する。移動が完了するとＣＰＵ４０４は、プラットフォームプログラム（例えば、Ｊａｖａ（登録商標））を実行することができる状態になる。この例では、ＣＰＵ４０４が、プラットフォームプログラムを実行することを、プラットフォームが起動すると称する。なお、プラットフォームは、画像形成装置１０７のファームウェア上で動作することになる。プラットフォームプログラムは、オブジェクト指向で記述されたアプリケーションプログラムを実行するための環境を提供する。
【００３７】
次に、プラットフォーム上でアプリケーションプログラムを実行する方法について詳細に説明する。この例では、プラットフォーム上には、スキャンした画像をクラウドサービスに送信するスキャンソフトウェアが動作している。スキャンソフトウェアは、ネットワークを介して接続されているスキャンサービスサーバ１０１より、例えば、ＨＴＴＰ（Hyper Text Transfer Protocol）などの通信プロトコルによってスキャンチケットの一覧の受信を行う。スキャンチケットにはスキャンの為の設定や、その後の処理フローといった情報が記録されている。以降、スキャンソフトウェアを実行することで実現するソフトウェア部をスキャンソフトウェア部と呼ぶ。
【００３８】
ユーザは、スキャンソフトウェアが表示したスキャンチケット一覧からスキャンチケットを選択し、原稿を読み込ませることでスキャンを完了できる。スキャンソフトウェアは、ユーザが選択したスキャンチケットの情報とスキャンした画像データを合わせてスキャンサービスサーバ１０１に送信する。このように、プラットフォームでアプリケーションプログラムを実行することによって、画像形成装置１０７の制御を実現することができる。
【００３９】
次に、アプリケーションプログラムの実行方法について説明する。起動したプラットフォームは、間接記憶部４０６に記憶されたアプリケーションプログラムを直接記憶部４０５に移動する。移動が完了すると、プラットフォームは、アプリケーションプログラムを実行することができる状態になる。そして、プラットフォームは、アプリケーションプログラムを実行する。このように、アプリケーションプログラムを実行することで提供できるプラットフォームの機能を、この例ではプラットフォームアプリケーションと呼ぶ。さらに、プラットフォームは、本実施例で開示するフローチャートの各処理の一部を行うことが可能である。
【００４０】
ユーザインタフェース４０７は、ユーザからの処理依頼を受け付ける。ユーザインタフェース４０７は、例えば、キーボード、マウス、タッチパネル等を通してユーザが入力した指示に応じた信号を受け付ける。外部インタフェース４０８は、外部装置からのデータ受信や外部装置へのデータ送信が可能である。上記外部装置は、例えば、外付けＨＤＤや外付けＵＳＢメモリ等の外付け記憶装置、またはネットワークを介して接続された別体のホストコンピュータや画像形成装置等の別体装置である。画像形成装置１０７は、ネットワーク１１０、１１１を介して、クライアント端末１０６、スキャンサービスサーバ１０１と通信可能である。
【００４１】
次に、クラウドサービスを提供するスキャンサービスサーバ１０１、タスクサービスサーバ１０３、１０４の各サービスサーバに関して説明する。さらには、各サービスサーバの説明とともに、スキャン処理の流れを合わせて説明する。
【００４２】
図４は、スキャンサービスサーバの構成例を示す図である。スキャンサービスサーバ１０１はクラウドサービスにおけるスキャン機能の提供を行うサービスサーバである。
【００４３】
スキャンサービスサーバ１０１は、Ｗｅｂアプリケーション５０１、ファイル転送ライブラリ５０２を備える。これらの構成要素により各種処理が実行されることでスキャンサービスサーバ１０１がユーザに提供される。
【００４４】
Ｗｅｂアプリケーション５０１は、スキャン機能を有するアプリケーションプログラムを提供する。Ｗｅｂアプリケーション５０１は、チケット作成部５１１、チケット一覧部５１２、スキャン受信部５１３、外部Ｉ／Ｆ５１４、チケット管理部５１５を備える。チケット作成部５１１は、ユーザがスキャンチケットを作成するための一連の機能を実現する。スキャンチケットは、画像形成装置１０７で原稿をスキャンする際の設定や、その後の処理フローの定義、各処理フローで実施されるタスクの為のパラメータ等を含む定義情報である。
【００４５】
以下に、スキャンチケットの作成処理について説明する。クライアント端末１０６のＷｅｂブラウザ３０１が、ユーザ操作にしたがって、チケット作成画面リクエストをスキャンサービスサーバ１０１に対して行う。チケット作成部５１１は、チケット作成画面リクエストにしたがって、チケット作成画面（この例では、スキャンチケット作成画面）をクライアント端末１０６に提供する。クライアント端末１０６のＷｅｂブラウザ３０１が、スキャンチケット作成画面（不図示）を表示する。ユーザは、スキャンチケット作成画面上での操作により、チケット設定を行うと、Ｗｅｂブラウザ３０１からスキャンサービスサーバ１０１に対して、スキャンチケット作成リクエストが発行される。スキャンチケット作成リクエストは、スキャンチケットの作成を求める要求であり、スキャンチケット作成画面上で行われたチケット設定の情報を含む。
【００４６】
チケット作成部５１１は、スキャンチケット作成リクエストに含まれるチケット設定の情報に基づいて、スキャンチケットを作成し、チケット管理部５１５に指示してスキャンチケットに関する情報（チケット情報）を保存させる。チケット管理部５１５は、チケット作成部５１１からの指示にしたがって、スキャンサービスサーバ内のチケット管理ＤＢにチケット情報を保存する。
【００４７】
外部Ｉ／Ｆ５１４は、画像形成装置１０７上で動作するスキャンソフトウェアとの通信を行う。具体的には、外部Ｉ／Ｆ５１４は、スキャンソフトウェアから、チケット一覧部５１２の機能や、スキャン受信部５１３の機能へのアクセスを受け付ける。チケット一覧部５１２は、画像形成装置１０７からの要求にしたがい、チケット管理部５１５に保存されているチケット情報に基づいて、チケットの一覧を生成して画像形成装置１０７に返す。画像形成装置１０７は、取得したチケット一覧をチケット一覧画面（不図示）上に表示する。ユーザが、チケット一覧画面４０７上に表示されたスキャンチケットのいずれかを選択し、画像形成装置１０７に備え付けられたスキャン装置に紙を設置し、スキャンボタン（不図示）を押し下げすると、スキャン実行される。そして、画像形成装置１０７が、チケット一覧画面上で選択されたスキャンチケットと、スキャン実行により得られた画像データとをスキャンサービスサーバ１０１に対して送信する。
【００４８】
スキャンサービスサーバ１０１が備えるスキャン受信部５１３は、画像形成装置１０７からスキャンチケットと画像データとを受信する。そして、スキャン受信部５１３は、受信した画像データをフローサービスサーバ１０２に投入する。ファイル転送ライブラリ５０２は、フローサービスサーバ１０２に、データを送信して保存させる。ファイル転送ライブラリ５０２は、ファイル転送部５２１を備える。ファイル転送部５２１の機能については後述する。
【００４９】
図５は、タスクサービスサーバの構成例を示す図である。この例では、タスクサービスサーバ１０３の構成を説明する。タスクサービスサーバ１０４の構成は、タスクサービスサーバ１０３の構成と同様である。タスクサービスサーバ１０３は、画像データに対してＯＣＲ処理を行い、ＯＣＲ結果のテキストデータを画像データに埋め込む処理を行う。また、タスクサービスサーバ１０４は、クラウドサービスサーバ１０８の中のストレージ機能を提供する特定のサービスに対して、画像データをアップロードし保管する処理を行う。
【００５０】
図５に示すように、タスクサービスサーバ１０３は、タスク取得部６１１、データ取得部６１２、データ保存部６１３、タスクステータス通知部６１４、タスク処理部６１５を備える。タスク取得部６１１は、定期的にフローサービスサーバ１０２に問い合わせを行い、タスクサービスサーバ１０３にて処理可能なタスクを取得する。データ取得部６１２は、タスク取得部６１１が取得したタスクの情報に基づいて、フローサービスサーバ１０２から、処理すべき画像データを取得する。タスク処理部６１５は、データ取得部６１２が取得した画像データに対して各種処理を行う。また、タスク処理部６１５は、タスク処理部６１５による処理結果をデータ保存部６１３に渡す。なお、処理結果とは、例えばＯＣＲ結果のテキストデータが埋め込まれた画像データや、斜行補正が適用された画像データなど、画像処理が適用された画像データである。データ保存部６１３は、タスク処理部６１５から受け取った処理結果をフローサービスサーバ１０２に保存する。タスクステータス通知部６１４は、定期的にフローサービスサーバ１０２に状態通知を行う。状態通知は、タスクサービスサーバがタスク処理中であることを知らせる通知である。
【００５１】
図６は、フローサービスサーバの構成例を示す図である。フローサービスサーバ１０２は、ルート管理、ジョブ管理、一時ファイル管理を行うサービスサーバである。フローサービスサーバ１０２は、ルート管理サービスサーバ８０１、ジョブ管理サービスサーバ８０２、一時ファイル管理サービスサーバ８０３を備える。ルート管理サービスサーバ８０１は、ルート情報を管理する。ジョブ管理サービスサーバ８０２は、ルート情報に基づいて、ジョブの処理を管理する。
【００５２】
一時ファイル管理サービスサーバ８０３は、ジョブ投入時のデータや各タスクの処理結果データの保存を管理する。本実施例では、ジョブ投入時のデータや各タスクの処理結果データのファイルを、一時ファイルと記述する。具体的には、一時ファイル管理サービスサーバ８０３は、スキャンサービスサーバ１０１やタスクサービスサーバ（１０３、１０４）からの要求に応じて、一時ファイルを格納し、その格納先のパスを管理する。スキャンサービスサーバ１０１は、タスクサービスサーバからファイル取得要求があった場合には、保存したファイルのバイナリデータをタスクサービスサーバに返却する。また、一時ファイル管理サービスサーバ８０３は、タスクサービスサーバやジョブ管理サービスサーバからファイル削除の要求があった場合には、保存したファイルを削除する。一時ファイル管理サービスサーバ８０３の機能を利用することによって、スキャンサービスサーバ１０１やタスクサービスサーバは、ファイルの格納先のパスやファイルサーバの状態を気にすることなく、ファイルの保存、取得、削除を行うことができる。
【００５３】
図７は、ルート管理サービスサーバの構成例を示す図である。ルート管理サービスサーバ８０１は、ルート情報管理ＤＢ９０１、タスク情報管理ＤＢ９０２、外部Ｉ／Ｆ９０３を備える。ルート情報管理ＤＢ９０１は、ルート情報を保持する。タスク情報管理ＤＢ９０２は、タスクに関する情報（タスク情報）を保持している。この例では、タスクは、ジョブに含まれる処理単位を示す。外部Ｉ／Ｆ９０３は、ルート管理サービスサーバ８０１への問い合わせに用いられるＩ／Ｆである。ジョブ管理サービスサーバ８０２等は、外部Ｉ／Ｆ９０３を介して、ルート情報管理ＤＢ９０１やタスク情報管理ＤＢ９０２を参照する。
【００５４】
図８は、ルート情報管理ＤＢの一例を示す図である。ルート情報は、ルートＩＤ１００１、シーケンス番号１００２、タスクＩＤ１００３といったデータ項目を有する。ルートＩＤ１００１は、ルート情報を一意に識別する識別情報である。ルート情報は、スキャンチケット作成画面上でのチケット設定に応じた処理（例えばスキャン処理）を示す情報である。具体的には、ルート情報は、チケット設定に応じた処理を実現するジョブに含まれる各々のタスクを連結させたルートの情報であって、そのジョブにおけるタスクの処理順序を示す処理順情報を含む。すなわち、ルート情報は、タスクの連結をルートという単位で定義するための情報である。タスクＩＤ１００３は、各々のルートを構成するタスク、つまり、チケット設定に応じた処理を実現するジョブに含まれるタスクを一意に識別する識別情報である。スキャンを実行した場合には、スキャンデータは、ルートＩＤ１００１に対応付けて定義されたタスクの順番で処理される。
【００５５】
シーケンス番号１００２は、タスクが、そのタスクが含まれるルートにおいて、何番目に実行されるタスクであるかを示す番号である。言い換えると、シーケンス番号１００２は、ルートに対応するジョブに含まれる各々のタスクが、ジョブ内で何番目に実行されるタスクであるかを示す処理順情報である。したがって、ルート情報管理ＤＢ９０１は、処理順情報を含むルート情報を記憶する。
【００５６】
図８を参照すると、例えば、ルートＩＤが００２であるルートは、シーケンス番号が小さい順に、Ｔａｓｋ１、Ｔａｓｋ３、Ｔａｓｋ５、Ｔａｓｋ７を含んでいる。したがって、このルートに対応するジョブに含まれるタスクのうち、最先に実行されるタスクは、Ｔａｓｋ１であり、２番目に実行されるタスクは、Ｔａｓｋ３である。また、３番目に実行されるタスクは、Ｔａｓｋ５であり、４番目に実行されるタスクは、Ｔａｓｋ７である。
【００５７】
図９は、タスク情報管理ＤＢの一例を示す図である。タスク情報管理ＤＢ９０２は、タスク情報を記憶する。タスク情報は、タスクＩＤ１１０１、タスク名１１０２、リトライ回数上限値１１０３といったデータ項目を有する。タスクＩＤ１１０１は、タスクを一意に識別するＩＤである。タスク名１１０２は、タスクの名称である。リトライ回数上限値１１０３は、各タスクが失敗した際に行うリトライ回数の上限値である。各タスクは、タスク処理が成功した場合は終了するが、ファイルの取得失敗、通信エラーなど何らかの要因で最後まで処理が行われなかった場合は、リトライ回数上限値１１０３に基づいて、タスクのリトライが実行される。
【００５８】
図１０は、ジョブ管理サービスサーバの構成例を示す図である。ジョブ管理サービスサーバ８０２は、タスクサービスサーバ（１０３、１０４）からのタスク要求（タスク取得リクエスト）に応じて、タスクを渡す。タスク取得リクエストは、タスクの取得を求める要求である。処理待ち状態のタスクサービスサーバは、所定のポーリング時間毎に、タスク取得リクエストを送信する。また、ジョブ管理サービスサーバ８０２は、各タスクの状態を管理する。
【００５９】
ジョブ管理サービスサーバ８０２は、外部Ｉ／Ｆ１２０１、ジョブ情報管理ＤＢ１２０２、ジョブ追加部１２０３、ジョブ情報取得部１２０４、ジョブ情報更新部１２０５、リトライ判定部１２０６を備える。
【００６０】
外部Ｉ／Ｆ１２０１は、タスクサービスサーバおよび画像形成装置１０７との間の通信インタフェースである。外部Ｉ／Ｆ１２０１を通じて、ジョブ管理サービスサーバ８０２の各機能へのアクセスが行われる。ジョブ情報管理ＤＢ１２０２には、ジョブ情報が記憶される。ジョブ情報は、ジョブに含まれる複数のタスクのうち、現在最先の処理順序のタスクと、そのタスクの状態と、リトライの制御に必要な情報とを含む。
【００６１】
ジョブ追加部１２０３は、スキャンサービスサーバ１０１によって投入されるジョブに関するジョブ情報を、ジョブ情報管理ＤＢ１２０２に記憶する。ジョブ情報取得部１２０４は、タスクサービスサーバからのタスク取得リクエストに応じて、リクエスト元のタスクサービスサーバが処理対象とするタスクに対応するジョブ情報をジョブ情報管理ＤＢ１２０２から取得し、タスクサービスサーバに渡す。このジョブ情報をタスクサービスサーバに渡すことを、「タスクを渡す」という。
【００６２】
ジョブ情報更新部１２０５は、タスクサービスサーバからのジョブ情報更新リクエストに応じて、ジョブ情報管理ＤＢ１２０２内のジョブ情報を更新する。ジョブ情報更新リクエストは、ジョブ情報の更新を求める要求である。リトライ判定部１２０６は、タスクおよびジョブが失敗した場合、ジョブ情報に基づいて、リトライの制御を行う。
【００６３】
図１１は、ジョブ情報管理ＤＢの一例を示す図である。ジョブ情報管理ＤＢ１２０２は、ジョブ情報を記憶するジョブ情報記憶部である。ジョブ情報は、ジョブＩＤ１３０１、ルートＩＤ１３０２、ファイルグループＩＤ１３０３、カレントタスクＩＤ１３０４、ステータス１３０５といったデータ項目を有する。また、このジョブ情報は、最終更新時刻１３０６、パラメータ１３０７、暗号化方式ＩＤ１３０８、ジョブリトライ回数上限値１３０９、ジョブリトライ回数１３１０、カレントタスクリトライ回数１３１１、テナントＩＤ１３１２といったデータ項目を有する。
【００６４】
ジョブＩＤ１３０１は、ジョブ情報を一意に識別する識別情報である。ルートＩＤ１３０２は、各ジョブの通るルートを一意に識別する識別情報である。ファイルグループＩＤ１３０３は、ジョブに含まれる画像データに関するファイルグループを一意に識別する識別情報である。カレントタスクＩＤ１３０４は、当該ジョブに含まれるタスクのうち、現在最先の処理順序のタスクであるカレントタスクを一意に識別する識別情報である。ジョブ管理サービスサーバ８０２のジョブ情報取得部１２０４は、カレントタスクＩＤ１３０４に設定されたタスクＩＤが、タスク取得リクエスト元のタスクサービスサーバに割り当てられたタスクＩＤと合致するレコード（一行分のデータ）を特定する。そして、ジョブ情報取得部１２０４は、特定したレコードに対応するカレントタスクを、タスクサービスサーバに渡す。
【００６５】
ジョブ情報更新部１２０５は、タスクの処理が完了した場合には、そのタスクに対応するレコードに含まれるルートＩＤを特定する。ジョブ情報更新部１２０５は、ルート情報管理ＤＢ９０１を参照して、上記特定したルートＩＤに対応するタスクのうち、処理が完了したタスクの次に処理対象となるタスクを決定する。そして、ジョブ情報更新部１２０５は、ジョブ情報管理ＤＢ１２０２の上記レコードに対応するカレントタスクＩＤを上記決定したタスクのタスクＩＤに更新する。
【００６６】
ステータス１３０５は、当該タスクの状態である。具体的には、ステータス１３０５には、処理待ち状態を示す「０」、実行中状態を示す「１」、またはエラー発生を示す「２」が設定される。ジョブ情報更新部１２０５は、タスクの処理が完了した場合には、ステータス１３０５を０に更新する。
【００６７】
ジョブ情報取得部１２０４がタスクサービスサーバに渡すタスクを選択する際には、ステータスが１であるレコードを選択する。これにより、複数のタスクサービスサーバが同一のタスクを処理するといった事態を防ぐことができる。タスクサービスサーバにタスクが渡されると、ジョブ情報更新部１２０５が、ステータス１３０５を０から１に変更する。
【００６８】
最終更新時刻１３０６は、ジョブ情報の最終更新時刻である。タスクのステータスが更新された時や、タスクサービスサーバにタスクが渡された時に、最終更新時刻１３０６が現在時刻に更新される。ジョブ情報取得部１２０４は、タスク取得リクエスト元のタスクサービスサーバに割り当てられたタスクＩＤがカレントタスクＩＤと等しいレコードが複数存在している場合、最終更新時刻１３０６が最も古いレコードを選択する。ジョブ情報取得部１２０４は、選択したレコードに対応するタスクを渡す。これにより、全てのジョブを平均的に処理することが可能となる。
【００６９】
パラメータ１３０７は、ジョブの設定情報や、タスクサービスサーバが、他のタスクサービスサーバに渡す設定情報である。暗号化方式ＩＤ１３０８は、データの暗号化方式を一意に識別する識別情報である。ジョブリトライ回数上限値１３０９は、ジョブのリトライ回数の上限値である。ジョブリトライ回数１３１０は、ジョブの現在のリトライ回数である。
【００７０】
カレントタスクリトライ回数１３１１は、カレントタスクＩＤ１３０４が示す現在のタスクのリトライ回数を表している。リトライ判定部１２０６は、タスクおよびジョブが失敗した場合、ジョブリトライ回数上限値１３０９、ジョブリトライ回数１３１０、カレントタスクリトライ回数１３１１、タスクのリトライ回数上限値１１０３を用いて、リトライの制御を行う。テナントＩＤ１３１２は、ジョブＩＤ１３０１が示すジョブを投入したユーザが属するテナントのテナントＩＤを示す。
【００７１】
図１２は、本実施例の情報処理システムの動作処理の例を説明するシーケンス図である。まず、クライアント端末１０６が備えるＷｅｂブラウザ３０１が、スキャンサービスサーバ１０１に対して、スキャンチケット作成画面リクエストを送信する（ステップＳ７０１）。続いて、スキャンサービスサービスサーバ１０１が備えるチケット作成部５１１は、スキャンチケット作成画面リクエストにしたがって、スキャンチケット作成画面を生成し、Ｗｅｂブラウザ３０１にレスポンスとして返す（ステップＳ７０２）。Ｗｅｂブラウザ３０１は、受信したスキャンチケット作成画面を表示する。
【００７２】
次に、スキャンチケット作成画面上でのユーザの操作にしたがって、Ｗｅｂブラウザ３０１が、スキャンサービスサーバ１０１に対して、スキャンチケット作成リクエストを送信する（ステップＳ７０３）。スキャンサービスサーバ１０１が備えるチケット作成部５１１が、スキャンチケット作成リクエストにしたがってスキャンチケットを作成する。また、チケット管理部５１５が、作成されたスキャンチケットを保存し、Ｗｅｂブラウザ３０１に対してレスポンスを返す。
【００７３】
次に、画像形成装置１０７に対するユーザの操作に従って画像形成装置１０７のスキャンソフトウェアが、外部Ｉ／Ｆ５１４を介し、チケット一覧部５１２に対して、チケット一覧取得リクエストを送信する（ステップＳ７０５）。チケット一覧取得リクエストは、チケットの一覧の送信を求める要求である。チケット一覧部５１２は、チケット一覧取得リクエストにしたがって、チケットの一覧を生成してＷｅｂブラウザ３０１に返す（ステップＳ７０６）。Ｗｅｂブラウザ３０１は、返されたチケット一覧をチケット一覧画面上に表示する。
【００７４】
次に、チケット一覧画面上でのユーザの操作にしたがって、画像形成装置１０７のスキャンソフトウェア部が、スキャン処理を実行して画像データを取得する（ステップＳ７０７）。そして、スキャンソフトウェア部が、上記スキャン処理によって取得した画像データと、チケット一覧画面上でのユーザの操作により選択されたスキャンチケットとをスキャンサービスサーバ１０１のスキャン受信部５１３に送信する（ステップＳ７０８）。
【００７５】
次に、スキャン受信部５１３が、受信した画像データをフローサービスサーバ１０２に投入する（ステップＳ７１４）。フローサービスサーバ１０２が画像データを正しく受信できた場合には、フローサービスサーバ１０２は、スキャンサービスサーバ１０１に対して、受信した画像データに対応するファイルグループを応答する（ステップＳ７１５）。続いて、スキャンサービスサーバ１０１のスキャン受信部５１３が、フローサービスサーバ１０２に対して、ファイルグループＩＤとスキャンチケットとを送信する。これにより、フローサービスサーバ１０２にジョブが投入される（ステップＳ７１６）。
【００７６】
次に、フローサービスサーバ１０２がタスクサービスサーバからのタスク取得リクエストに応じてタスクを渡す処理について説明する。各々のタスクサービスサーバ（１０３，１０４）のタスク取得部６１１が、定期的にフローサービスサーバ１０２に問い合わせ（タスク取得リクエスト）を行う。そして、タスク取得部６１１が、タスクサービスサーバにて処理可能なタスクを取得する（ステップＳ７１７，Ｓ７１８，Ｓ７２９，Ｓ７３０）。
【００７７】
タスクサービスサーバのデータ取得部６１２が、タスク取得部６１１によって取得したタスクに対応する、処理すべき画像データをフローサービスサーバ１０２から取得する（ステップＳ７１９、Ｓ７２０，Ｓ７３１，Ｓ７３２）。そして、タスクサービスサーバのタスク処理部６１５が、フローサービスサーバ１０２から取得した画像データに対して各種処理（タスク処理）を実行する（ステップＳ７２５，Ｓ７３７）。
【００７８】
続いて、タスクサービスサーバ１０３は、タスク処理後に以下の処理を実行する。図１２に示す例では、タスクサービスサーバ１０３のタスク処理部６１５は、ステップＳ７２５におけるタスク処理の結果を、データ保存部６１３を介してフローサービスサーバ１０２に保存する（ステップＳ７２７）。また、タスクサービスサーバ１０４のタスク処理部６１５は、ステップＳ７３７におけるタスク処理の結果を、クラウドサービスサーバ１０８にデータ送信する（ステップＳ７３８）。
【００７９】
また、タスクサービスサーバ（１０３、１０４）のタスクステータス通知部６１４は、一連のタスク処理の終了結果をフローサービスサーバ１０２に通知する（ステップＳ７２８、Ｓ７３９）。
【００８０】
図１３は、一時ファイル管理サービスサーバの構成例を示す図である。一時ファイル管理サービスサーバ８０３は、スキャンサービスサーバ１０１やタスクサービスサーバ１０３、１０４からの要求に応じて、ファイルを格納し、その格納先のパスを管理する。一時ファイル管理サービスサーバ８０３は、初期データなど重要なデータについては多重度を指定して保存することができ、高可用性を担保することができる。一時ファイル管理サービスサーバ８０３は、タスクサービスサーバからファイル取得要求があった場合、保存したファイルのバイナリデータをタスクサービスサーバに返却する。また、一時ファイル管理サービスサーバ８０３は、タスクサービスサーバやジョブ管理サービスサーバ８０２からファイル削除の要求があった場合、保存したファイルを削除する。スキャンサービスサーバ１０１やタスクサービスサーバは、一時ファイル管理サービスサーバ８０３が実行する処理によって、ファイルの格納先のパスやファイルサーバの状態を管理することなく、ファイルの保存、取得、削除を行うことができる。
【００８１】
図１３に示すように、一時ファイル管理サービスサーバ８０３は、ネットワーク１４１０を介して接続されたファイル管理サービスサーバＡ１４０１乃至ファイル管理サービスサーバＸ１４０３を備える。一時ファイル管理サービスサーバ８０３が備えるファイル管理サービスサーバの数は自然数であればいくつでもよい。また、ネットワーク１４１０はネットワーク１１０と接続されている。ネットワーク１４１０は、ネットワーク１１０と同様のデータの送受信が可能な通信ネットワークである。ファイル管理サービスサーバは、サーバコンピュータ上にて実現される。
【００８２】
図１４は、ファイル管理サービスサーバのシステム構成図の例である。本実施例のサーバ装置の制御方法は、図１４に示す各処理部の機能によって実現される。また、本実施例のコンピュータプログラムは、この制御方法をコンピュータに実行させる。
【００８３】
ファイル管理サービスサーバ（Ａ１４０１乃至Ｘ１４０３）は、Ｗｅｂアプリケーション１５０１、バックエンド部１５０２、ファイル管理サーバ管理ＤＢ１５３１、パス管理ＤＢ１５３２、データ格納領域部１５４１を備える。これらの構成要素により各種処理が実行されることでファイル管理サービスが実現される。
【００８４】
ファイル管理サーバ管理ＤＢ１５３１は、ファイルの格納先であるファイル管理サービスサーバに関する情報を管理する。
【００８５】
図１５は、ファイル管理サーバ管理ＤＢが管理するデータとパス管理ＤＢが管理するデータの一例を示す図である。図１５（Ａ）は、ファイル管理サーバ管理ＤＢが管理するデータの例を示す。
【００８６】
ＩＤ１６０１は、ファイル管理サービスサーバを一時ファイル管理サービスサーバ８０３内で一意に識別するための情報である。ホスト名１６０２は、ネットワーク１４１０上におけるファイル管理サービスサーバの一意のアドレスを示す。アクティブフラグ１６０３は、ホスト名１６０２に存在するファイル管理サービスサーバとの通信の可否を示す真偽値である。アクティブフラグ１６０３は、ファイル管理サービスサーバとの通信が可能な場合はＴｒｕｅ、通信不可能な場合はＦａｌｓｅに設定される。
【００８７】
フォルダパス１６０４は、ファイル管理サービスサーバ上に存在するフォルダである。データ格納領域部１５４１は、フォルダパス１６０４が指すフォルダを示す。
【００８８】
パス管理ＤＢ１５３２は、一時ファイル管理サービスサーバ８０３で管理している、ファイル管理サービスサーバのデータ格納領域１５４１に保存された一時ファイルとフォルダに関する情報を管理する。
【００８９】
本実施例では、一時ファイル管理サービスサーバ８０３で管理するファイルとフォルダをあわせてエンティティと呼ぶ。
【００９０】
図１５（Ｂ）は、パス管理ＤＢ１５３２が管理するデータの例を示す。ファイルＩＤ１６１０は、ファイル管理サービスサーバでエンティティを一意に識別するための情報である。ファイルグループＩＤ１６１１は、各エンティティを関連するジョブでグループ化するための情報である。従って、同一ジョブによって生成されたエンティティは、同一のファイルグループＩＤ１６１１を持つ。タスクＩＤ１６１２は、各エンティティに関連するタスクのタスクＩＤ、フォルダを表す「Ｆｏｌｄｅｒ」または初期データを表す「ｉｎｉｔ」のいずれかの値が入る。Ｎｏ１６１３は、各タスクによって生成されたファイルのファイル番号を示す。パス１６１４は、エンティティの格納先のフルパスを示す。パス１６１４は、Ｗｅｂアプリケーション１５０１がバックエンド部１５０２を通じてエンティティにアクセスする際に使用される。ホスト名１６１５は、各エンティティの格納先のファイル管理サービスサーバのホスト名を示す。
【００９１】
図１４に戻って、Ｗｅｂアプリケーション１５０１は、データ格納領域部１５４１にファイルを多重化して保存する処理、保存したファイルを取得する処理、保存したファイルを削除する処理を実行する。Ｗｅｂアプリケーション１５０１は、ファイル保存部１５１１、ファイル取得部１５１２、ファイル削除部１５１３を備える。
【００９２】
ファイル保存部１５１１は、スキャンサービスサーバ１０１、タスクサービスサーバ、または自サーバ以外のファイル管理サービスサーバから、ファイル保存のリクエストを受け付ける。すなわち、ファイル保存部１５１１は、多重度が指定されたデータを受信し、このデータの保存要求を受け付ける。ファイル保存部１５１１は、受信したデータをファイル書込部１５２３に渡し、ファイル書込部１５２３が、受け取ったデータをファイルとして多重化して、ファイル管理サービスサーバ内のデータ格納領域部１５４１に保存する。多重化とは、異なるファイル管理サービスサーバに指定された多重度で保存する、という意味である。つまり、多重度は、異なる複数のファイル管理サービスサーバでそれぞれ保存される、ファイルのレプリケーション（複製）の数である。すなわち、ファイル管理サービスサーバは、指定された多重度数分データを保存するサーバ装置である。多重度については、呼び出し元であるスキャンサービスサーバ１０１やタスクサービスサーバから１以上の整数を指定できる。多重度１の場合は、多重化せずに保存する場合と同義である。また、多重度の最大値は、ファイル管理サービスサーバの数であり、それ以上の数が指定された場合は無視される。
【００９３】
バックエンド部１５０２は、ファイルの受信処理、ファイルの転送・書込処理を実行する。バックエンド部１５０２は、ファイル受信部１５２１、ファイル転送部１５２２、ファイル書込部１５２３、転送先決定部１５２４、退避領域部１５２５、退避領域管理部１５２６を備える。
【００９４】
ファイル受信部１５２１は、ファイル保存部１５１１を介して、スキャンサービスサーバ１０１から、処理対象（書込み対象または転送対象）のデータを受信する。転送対象のデータ（ファイル）を、以下では転送データと記述する。
【００９５】
図１７（Ａ）は、転送データの構造を示す図である。転送データ１８０１は、データ情報格納領域１８１１とデータ格納領域１８１２から構成される。データ情報格納領域１８１１とデータ格納領域１８１２は、それぞれ固定長のバイナリデータである。データ情報格納領域１８１１には、終端データの場合は終端を表すバイナリデータ、終端データでない場合はＮＵＬＬが格納される。また、データ格納領域１８１２には、転送データを格納する。ファイル転送部１５２２およびファイル書込部１５２３は、終端データがどうかを、転送データ１８０１のデータ情報格納領域１８１１を参照して判断する。
【００９６】
図１４に戻って、転送先決定部１５２４は、転送データの転送先のファイル管理サービスサーバを決定する。ファイル転送部１５２２は、転送先のファイル管理サービスサーバに対して転送データを転送し、転送データの保存要求を行う。ファイル書込部１５２３は、スキャンサービスサーバ１０１からファイル保存部１５１１を介して受け取った処理対象のデータをデータ格納領域１５４１にファイルとして書き込む。ファイル転送部１５２２、ファイル書込部１５２３、ファイル受信部１５２１は、それぞれ非同期で動作するスレッドとして実現される。
【００９７】
退避領域部１５２５は、プログラムが使用するメモリ上に連続して確保された領域である。退避領域管理部１５２６は、退避領域部１５２５に退避したデータを管理する。
【００９８】
図１７（Ｂ）は、退避領域管理部が管理するデータを示す。アドレス１９０２は、退避領域１５２５内のメモリ空間のアドレスを示す。アドレス種類１９０１は、アドレス１９０２で示されるアドレスの意味を示す。アドレス１９１１は、受信済データの先頭を示す。アドレス１９１２は、書込済データの終端を示す。アドレス１９１３は、転送済データの終端を示す。アドレス１９１４は、受信済データの終端を示す。
【００９９】
図１６は、本実施例の情報処理システムが実行する一時ファイルの書込・転送処理の例を説明するシーケンス図である。なお、図１６は、図１２のＳ７１４においてスキャンサービスサーバ１０１がデータ保存処理をすることで開始される。
【０１００】
まず、スキャンサービスサーバ１０１が、ファイル管理サービスサーバＡ１４０１に対して転送開始通知のリクエストを行う（ステップＳ１７０１）。転送開始通知のリクエストは、一時ファイルの保存要求である。ファイル受信部１５２１は、ファイル保存部１５１１を介して、スキャンサービスサーバから転送開始通知のリクエストを受信し、ファイルグループＩＤを生成する。このリクエストは、ファイル転送部５２１（図４）によって作成され、多重度、タスクＩＤ、Ｎｏが含まれる。
【０１０１】
次に、ファイル受信部１５２１が、ファイル書込部１５２３とファイル転送部１５２２に対して、それぞれファイル書込リクエスト（ステップＳ１７０２）、ファイル転送リクエスト（ステップＳ１７０３）を出す。ここでは多重度２以上の場合を説明するが、多重度が１であった場合は、ファイル転送リクエスト（ステップＳ１７０３）を行わず、ファイル転送部１５２２は以降の処理を行わない。
【０１０２】
次に、ファイル受信部１５２１が、ファイル保存部１５１１を介してスキャンサービスサーバ１０１にファイルグループＩＤを返却する（ステップＳ１７０４）。前述したように、ファイル転送部１５２２、ファイル書込部１５２３、ファイル受信部１５２１は、それぞれ非同期で動作するスレッドであり、ステップＳ１７０２、Ｓ１７０３の処理は、スレッドを起動する処理である。
【０１０３】
次に、実際のバイナリデータを転送する処理について説明する。まず、ファイル受信部１５２１の処理について説明する。ファイル受信部１５２１が、ファイル保存部１５１１を介して、スキャンサービスサーバ１０１から図１７（Ａ）に示す転送データ１８０１を受信する（ステップＳ１７０５）。続いて、ファイル受信部１５２１が、受信した転送データ１８０１を退避領域部１５２５に退避した後（ステップＳ１７０６）、退避領域管理部１５２６に対してアドレスの更新要求を行う。アドレスの更新要求を受けて、退避領域管理部１５２６が、受信済データ終端を示すアドレス１９１４を更新する。受信したデータが先頭データである場合は、退避領域管理部１５２６が、受信済データ先頭を示すアドレス１９１１を更新する。
【０１０４】
退避領域管理部１５２６によるアドレスの更新処理が完了すると、ファイル受信部１５２１が、スキャンサービスサーバ１０１に応答する（ステップＳ１７０８）。スキャンサービスサーバ１０１は、ステップＳ１７０５乃至Ｓ１７０８の転送処理を繰り返し、転送が完了すると、ファイル保存部１５１１を介してファイル受信部１５２１に転送完了通知を送る（ステップＳ１７０９）。なお、転送完了通知を受けたファイル受信部１５２１は、スキャンサービスサーバ１０１に対して応答する（ステップＳ１７１０）。
【０１０５】
次に、ファイル転送部１５２２の処理について説明する。ステップＳ１７２３において、ファイル転送部１５２２が、転送開始処理を行う。具体的には、ファイル転送部１５２２は、ファイル管理サーバ管理ＤＢ１５３１から、ファイル管理サービスサーバに関する情報を取得する（ステップＳ１７２１，Ｓ１７２２）。続いて、ファイル転送部１５２２が、取得されたファイル管理サービスサーバに関する情報に基づいて、転送先決定部１５２４を介して転送先のファイル管理サービスサーバを決定する。そして、ファイル転送部１５２２が、転送先のファイル管理サービスサーバ（この例ではファイル管理サービスサーバＢ１４０２）に対して転送開始通知を行う（ステップＳ１７２４）。ステップＳ１７２４で行われる転送開始通知には、ステップＳ１７０１で行われた転送開始通知に含まれる多重度、タスクＩＤ、Ｎｏに加え、ファイルグループＩＤが含まれる。ステップＳ１７２４の転送開始通知に含まれる多重度は、ステップＳ１７０１の転送開始通知に含まれる多重度より１小さい値である。すなわち、ファイル転送部１５２２は、自サーバがファイルの保存要求を受け付けた時の上記ファイルについて指定された多重度より値が１小さい多重度が指定された保存要求を転送先に対して行う。
【０１０６】
次に、ファイル転送部１５２２は、退避領域管理部１５２６のアドレス１９１３以降からアドレス１９１４で示される退避領域１５２５上のデータを、未転送データとして取得する（ステップＳ１７２６）。ステップＳ１７２７で未転送データが返却された場合は、ファイル転送部１５２２は、ファイル管理サービスサーバＢ１４０２に対して転送データ１８０１を転送する（ステップＳ１７２８，１７２９）。データ転送が正常に完了した場合、ファイル転送部１５２２は、退避領域管理部１５２６の転送済データ終端を示すアドレス１９１３を、受信済データ終端を示すアドレス１９１４に更新する。
【０１０７】
ファイル転送部１５２２は、全てのデータの転送が完了すると、転送完了処理を実行する（ステップＳ１７３２）。具体的には、ファイル転送部１５２２は、ファイル管理サービスサーバＢ１４０２に対して転送完了通知を行う（ステップＳ１７３０，Ｓ１７３１）。ファイル転送部１５２２は、ファイル受信部１５２１に対して転送完了通知を行い（ステップＳ１７３３）、処理を終了する。
【０１０８】
次に、ファイル書込部１５２３の処理について説明する。ファイル書込部１５２３は、退避領域管理部１５２６のアドレス１９１２以降からアドレス１９１４で示される退避領域１５２５上のデータを、未書込データとして取得する（ステップＳ１７４１）。ステップＳ１７４２において、未書込データが返却された場合は、ファイル書込部１５２３は、データ格納領域１５４１に対してファイルを書き込む（ステップＳ１７４３）。これにより、データ格納領域１５４１にファイルが保存される。
【０１０９】
ステップＳ１７４３におけるファイルの書き込みが正常に完了すると、ファイル書込部１５２３は、退避領域管理部１５２６の書込済データ終端を示すアドレス１９１２を、受信済データ終端を示すアドレス１９１４に更新する。
【０１１０】
ファイル書込部１５２３は、全てのデータの転送が完了すると、パス管理ＤＢ１５３２に対して対応するエントリを追加し、ファイル受信部１５２１に対して書込完了通知を行う（ステップＳ１７４４）。
【０１１１】
以上の説明から、ファイル管理サービスサーバＡ１４０１のファイル転送部１５２２は、ファイルの保存要求に指定された多重度が１より大きいかを判断する。上記保存要求に指定された多重度が１より大きいと判断した場合に、ファイル転送部１５２２は、ファイル書込部１５２３によるファイルの保存処理と並列に、次サーバであるファイル管理サービスサーバＢ１４０２へのファイルの転送処理を行う。図１６中では省略しているが、ステップＳ１７２４の転送開始通知に含まれる多重度が１以上の場合は、ファイル管理サービスサーバＢ１４０２も、書込処理と転送処理とを並列に行う。このように、各ファイル管理サービスサーバが書込処理と転送処理を並列に行うことで、高速にファイルを多重保存することができる。
【０１１２】
ファイル管理サービスサーバＡ１４０１、Ｂ１４０２は、それぞれ自サーバへの書込と転送先サーバへの書込が完了したら、ステップＳ１７５１，Ｓ１７４５の処理を行う。すなわち、ファイル管理サービスサーバＡ１４０１、Ｂ１４０２は、それぞれの転送元であるスキャンサービスサーバ１０１、ファイル管理サービスサーバＡ１４０１に対して、正常終了通知を行う。以上がファイルを多重保存する処理の流れである。
【０１１３】
スキャンサービスサーバ１０１からファイル管理サービスサーバにファイルを保存する処理を説明したが、タスクサービスサーバからファイル管理サービスサーバにファイル（処理結果を示すデータのファイル）を保存する場合についても同様の処理が行われる。
【０１１４】
次に、ファイル管理サービスサーバがタスクサービスサーバからファイルの取得要求を受けた場合の処理を説明する。ファイル取得部１５１２が、タスクサービスサーバからのリクエストに応じてファイル管理サービスサーバＡ１４０１乃至Ｘ１４０３に保存されたファイルをタスクサービスサーバに返す。
【０１１５】
ファイル取得部１５１２は、タスクサービスサーバからのリクエストを受信すると、リクエストに含まれるファイルグループＩＤやタスクＩＤ、Ｎｏに基づいて、パス管理ＤＢ１５３２に問い合わせ、格納先のファイルパスを取得する。ファイル取得部１５１２は、格納先のファイル管理サービスサーバとの通信の可否を確認し、通信可能であった場合はファイル管理サービスサーバからバイナリデータを取得し、タスクサービスサーバに返す。
【０１１６】
次に、ファイル管理サービスサーバによるエンティティの削除処理について説明する。ファイル削除部１５１３は、タスクサービスサーバやジョブ管理サービスサーバ８０２からのリクエストに応じて、ファイル管理サービスサーバＡ１４０１乃至Ｘ１４０３に格納されたエンティティを削除する。ファイル削除部１５１３は、タスクサービスサーバやジョブ管理サービスサーバ８０２からのリクエストを受信すると、以下の処理を実行する。ファイル削除部１５１３は、リクエストに含まれるファイルグループＩＤやタスクＩＤ、Ｎｏに基づいて、パス管理ＤＢ１５３２に問い合わせ、格納先のファイルパスを取得する。ファイル削除部１５１３は、格納先のファイル管理サービスサーバとの通信の可否を確認し、通信可能であった場合はエンティティを削除する。エンティティの削除に成功したら、ファイル削除部１５１３は、パス管理ＤＢ１５３２から削除したエンティティに関するエントリを削除する。
【０１１７】
実施例１の情報処理システムによれば、ファイル管理サービスサーバに保存するファイルの多重度が増加しても、ファイル保存にかかる時間の増加を抑えることができる。
【０１１８】
（実施例２）
実施例２の情報処理システムは、一つのファイル管理サービスサーバに負荷が集中しないようにし、ファイルの保存時間が長くなることを防止する。このために、ファイル管理サーバ管理ＤＢ１５３１が、図２０に示す管理データを管理している。管理データは、各ファイル管理サービスサーバが受信中のファイル数を、下り本数（第１データ数）２１０５として有する。また、管理データは、各ファイル管理サービスサーバが送信中のファイル数を、上り本数（第２データ数）２１０６として有する。すなわち、ファイル管理サーバ管理ＤＢ１５３１は、ファイルの送受信状態を示す状態情報を各々のファイル管理サービスサーバに対応づけて記憶する記憶手段として機能する。
【０１１９】
図１８および図１９は、実施例２の情報処理システムの動作処理の例を説明するシーケンス図である。実施例２の情報処理システムの全体構成は、実施例１の情報処理システムの全体構成と同様である。図１８は、転送開始処理を示す。この処理は、図１６中の転送開始処理（Ｓ１７２３）に相当する。図１９は、転送完了処理を示す。この処理は、図１６中の転送完了処理（Ｓ１７３２）に相当する。
【０１２０】
図１８を参照して、転送開始処理について説明する。なお、転送開始処理において実行される転送先の決定処理は、転送先決定部１５２４を介して実行される。まず、ファイル転送部１５２２が、ファイル管理サーバ管理ＤＢ１５３１に対して、各ファイル管理サービスサーバの状態の取得要求を行う（ステップＳ２００１）。
【０１２１】
図２０（Ａ）中に示す管理データにおける符号２１１１、２１１２、２１１３は、ステップＳ２００１の処理がされた時点におけるファイル管理サービスサーバＡ、Ｂ、Ｘに対応するエントリを示す。
【０１２２】
ファイル管理サーバ管理ＤＢ１５３１は、ステップＳ２００２において、ファイル管理サービスサーバＡ、Ｂ、Ｘに対応するエントリ（２１１１、２１１２、２１１３）をファイル転送部１５２２に返却する。ファイル転送部１５２２は、返却されたエントリを参照して、下り本数が最も少ないファイル管理サービスサーバを、ファイルの転送先の候補とする（ステップＳ２００３）。これにより、システム全体におけるデータの下り帯域が最適化する。
【０１２３】
次に、ファイル転送部１５２２が、ファイルの転送先の候補が複数あるかを判断する（ステップＳ２００４）。ファイルの転送先の候補が複数ある場合、ファイル転送部１５２２は、転送先への保存多重度が１であるかを判断する（ステップＳ２００５）。保存多重度は、転送先に転送データが転送される際に設定される多重度である。転送先への保存多重度は、転送元が転送データを受け取った際の保存多重度より１だけ小さい。
【０１２４】
転送先への保存多重度が１である場合、すなわち転送先のサーバが転送の終端であった場合は、処理がステップＳ２００７に進む。そして、ファイル転送部１５２２が、現在の転送先の候補のうち、上りの本数が最も多いサーバのみを転送先の候補とする（ステップＳ２００７）。本実施例では、保存多重度が１である転送先のサーバを終端サーバと呼ぶ。
【０１２５】
転送先への保存多重度が１より大きい場合は、処理がステップＳ２００６に進む。そして、ファイル転送部１５２２が、現在の転送先の候補のうち、上りの本数が最も少ないサーバのみを転送先の候補とする（ステップＳ２００６）。本実施例では、保存多重度が１でないと判断された転送先のサーバを中継サーバと呼ぶ。
【０１２６】
次に、ファイル転送部１５２２が、転送先の候補が複数あるかを判断する（ステップＳ２００８）。転送先の候補が複数ある場合は、処理がステップＳ２００９に進む。そして、ファイル転送部１５２２が、現在の転送先の候補から１つのサーバをランダムに選択し、転送先の候補とする（ステップＳ２００９）。ここまでのステップで、必ず転送先の候補が１つのサーバに絞られる。したがって、ファイル転送部１５２２は、現在の転送先の候補を転送先サーバ２０２０として決定する（ステップＳ２０１０）。
【０１２７】
次に、ファイル転送部１５２２が、転送先サーバ２０２０に対して転送開始通知を行う（ステップＳ２０１１）。転送先サーバ２０２０は、ファイル管理サーバ管理ＤＢ１５３１が管理している自サーバの下り本数を１つ増やす（インクリメントする）処理を行い（ステップＳ２０１２）、受信開始処理を行う（ステップＳ２０１４）。また、ファイル転送部１５２２は、ファイル管理サーバ管理ＤＢ１５３１が管理している自サーバの上り本数をインクリメントする処理を行う（ステップＳ２０１３，Ｓ２０１６）。
【０１２８】
すなわち、ファイル転送部１５２２は、転送先決定部１５２４を介して、ファイル管理サーバ管理ＤＢ１５３１内の管理データを参照して、ファイルの転送先を決定する。
【０１２９】
次に、図１９を参照して、転送完了処理について説明する。まず、ファイル転送部１５２２が、ファイル管理サーバ管理ＤＢ１５３１に対して、自身の上り本数を１つ減らす（デクリメント）する処理を行う（ステップＳ２０２１、Ｓ２０２２）。次に、ファイル転送部１５２２が、転送先サーバ２０２０に対して転送完了通知を行う（ステップＳ２０２３）。転送先サーバ２０２０は、ファイル転送部１５２２からの通知を受けて、ファイル管理サーバ管理ＤＢ１５３１に対して自身の下り本数をデクリメントする処理を行う（ステップＳ２０２４，Ｓ２０２６）。そして、転送先サーバ２０２０が、受信完了処理を行って（ステップＳ２０２６）、処理を終了する。
【０１３０】
図１８のステップＳ２００３の処理により、下りのネットワーク帯域が最適化され、ステップＳ２００６、Ｓ２００７の処理により、中継サーバ、終端サーバの選択が最適化される。
【０１３１】
図１８を参照して説明した中継サーバ、終端サーバの選択処理の効果を説明する。例えば、ファイル管理サービスサーバＡ、Ｂ、Ｘが図２０（Ａ）中の符号２１１１乃至２１１３が示す状態で、一時ファイル管理サービスサーバ８０３に多重度２のファイル保存要求があった場合を想定する。
【０１３２】
図１８を参照して説明した処理に従うと、ファイル管理サービスサーバＸ１４０３が中継サーバとして決定され、ファイル管理サービスサーバＡ１４０１が終端サーバとして決定される。その結果、ファイル管理サービスサーバＡ１４０１の接続状態は、上り本数が１、下り本数が２となる。また、ファイル管理サービスサーバＸ１４０３の接続状態は、上り本数が１、下り本数が１となる。
【０１３３】
この状態で、更に一時ファイル管理サービスサーバ８０３に対して多重度２のファイル保存要求があった場合を想定する。図１８（Ａ）を参照して説明した処理に従うと、ファイル管理サービスサーバＢ１４０２が中継サーバとして決定され、ファイル管理サービスサーバＸ１４０３が終端サーバとして決定される。その結果、各ファイル管理サービスサーバの状態は、図２０（Ｃ）中の符号２１５１乃至２１５３が示す状態となる。図２０（Ｃ）に示す状態は、均等に負荷分散が行われていることを示す。
【０１３４】
一方、本実施例とは異なり、ステップＳ２００６、Ｓ２００７において、Ｓ２００５の保存多重度に対する判断に関わらず、上り本数が最も少ないサーバを転送先サーバ候補とするものと想定する。上記のように一時ファイル管理サービスサーバ８０３に対して２回連続で多重度２の保存要求があった場合は、各ファイル管理サービスサーバの状態は最終的に図２０（Ｂ）中の符号２１３１乃至２１３３が示すように変化する。図２０（Ｂ）中の符号２１３１が示す状態と符号２１３２が示す状態とを比較すると、ファイル管理サービスサーバＡ１４０１の方がファイル管理サービスサーバＢ１４０２よりも上り本数が多く、負荷が適切に分散していないことがわかる。
【０１３５】
上述したことから、本実施例の情報処理システムによれば、ネットワーク負荷やマシン負荷を適切に分散可能なように、最適な転送経路を選択することが可能となる。
【０１３６】
（実施例３）
一時ファイル管理サービスサーバ８０３に対して、例えば多重度３でファイル保存要求が行われた場合、ファイル管理サービスサーバＡ１４０１、Ｂ１４０２、Ｘ１４０３の順で転送経路が選択された場合を想定する。ファイルの転送中に、例えばファイル管理サービスサーバＢ１４０２に障害が発生して停止すると、指定された多重度分のファイルを保存することができなくなる。また、ファイル管理サービスサーバＸ１４０３のデータ格納領域１５４１には中途半端なデータ（書込途中のデータ）が残ってしまい、データ格納領域の容量を圧迫することになる。
【０１３７】
実施例３の情報処理システムは、障害が発生した時にファイル管理サービスサーバＡ１４０１、Ｘ１４０３にてそれぞれ通信のタイムアウトを検出し、各サーバにてファイルの再送処理と、中途半端なデータの削除処理を行う。
【０１３８】
図２１及び図２２は、実施例３におけるファイル転送処理を説明する図である。図２１は、ファイル管理サービスサーバＡ１４０１からファイル管理サービスサーバＢ１４０２に対するファイル転送処理を示す。
【０１３９】
ファイル転送部１５２２が、転送開始処理を行い（ステップＳ２２０１）、転送先のサーバとしてファイル管理サービスサーバＢ１４０２が選択される。次に、ファイル転送部１５２２が、ＥｎｄＦｌａｇ、ＥｒｒｏｒＦｌａｇを初期化する（ステップＳ２２０２）。ＥｎｄＦｌａｇは、転送済のデータが終端まで到達したことを示すフラグである。ＥｒｒｏｒＦｌａｇは、何らかの障害が発生したことを示すフラグである。
【０１４０】
ファイル転送部１５２２が、ＥｎｄＦｌａｇ、ＥｒｒｏｒＦｌａｇが共に０である場合に、転送ループの処理（ステップＳ２２０３）を行う。ファイル転送部１５２２が、退避領域１５２５から未転送データを取得する（ステップＳ２２０４，Ｓ２２０５）。
【０１４１】
次に、ファイル転送部１５２２が、未転送データがあるかを判断する（ステップＳ２２０６）。未転送データがない場合は、転送ループの先頭に戻る。
【０１４２】
未転送データがある場合、ファイル転送部１５２２は、ファイル管理サービスサーバＢ１４０２に対してデータの転送処理（ファイル転送処理）を行う（ステップＳ２２０７）。ファイル管理サービスサーバＢが、上記ステップＳ２２０７で転送されたファイルを受信する（ステップＳ２２０８）。
【０１４３】
次に、ファイル転送部１５２２が、ステップＳ２２０７のファイル転送処理が正常に終了したかを判断する（ステップＳ２２０９）。ファイル転送処理が例えばタイムアウトして正常に終了しなかった場合、ファイル転送部１５２２が、転送再開処理を行い（ステップＳ２２１０）、ステップＳ２２０１に戻る。なお、Ｓ２２１３からＳ２２０１に戻ってＳ２２０１の処理が実行される場合、ファイル転送部１５２２は、１回目で選択した転送先のファイル管理サービスサーバとは異なる他のファイル管理サービスサーバを選択する。これにより、本実施例では、転送データが当初の転送先のファイル管理サービスサーバＢ１４０２とは異なる他のファイル管理サービスサーバに対して先頭から再送信される。
【０１４４】
図２２は、図２１のステップＳ２２１０における転送再開処理を説明するフローチャートを示す。ファイル転送部１５２２が、転送済ポインタ初期化処理を行う（ステップＳ２２２１）。転送済ポインタ初期化処理は、退避領域管理部１５２６にて転送済データ終端のアドレス１９１３を受信済データ先頭のアドレス１９１１に書き換える処理である。そして、ファイル転送部１５２２が、ＥｒｒｏｒＦｌａｇを１にして（ステップＳ２２２２）、処理を終了する。
【０１４５】
図２１に戻って、ステップＳ２２０７のファイル転送処理が正常に終了した場合は、処理がステップＳ２２１１に進む。そして、ファイル転送部１５２２が、転送したデータが終端データであるかを判断する（ステップＳ２２１１）。転送したデータが終端データでない場合は、処理が転送ループ（Ｓ２２０３）の先頭に戻る。
【０１４６】
転送したデータが終端データである場合は、ファイル転送部１５２２が、ＥｎｄＦｌａｇに１を代入し（ステップＳ２２１２）、転送ループ（Ｓ２２０３）を抜ける。
【０１４７】
転送ループを抜けた後、ファイル転送部１５２２が、ＥｒｒｏｒＦｌａｇが１であるかを判断する（ステップＳ２２１３）。ＥｒｒｏｒＦｌａｇが１でない場合は、ファイル転送部１５２２が、転送完了処理を行い（ステップＳ２２１４）、転送処理を終了する。
【０１４８】
ＥｒｒｏｒＦｌａｇが１である場合は、ファイル転送部１５２２が、ファイル管理サービスサーバＢ１４０２への転送処理が正常に終了しなかったと判断して、処理が転送開始処理（Ｓ２２０１）に戻る。
【０１４９】
図２３は、ファイル管理サービスサーバＢ１４０２からファイル管理サービスサーバＸ１４０３へのファイル転送の際の、ファイル管理サービスサーバＸ１４０３によるファイル受信処理を説明する図である。本願では、ファイル管理サービスサーバが、転送データを受信しながら、並行して転送データを他のファイル管理サービスサーバに転送する。つまり、本実施例では、ファイル管理サービスサーバＢ１４０２がファイル管理サービスサーバＡから転送データを受信しながら、並行して転送データをファイル管理サービスサーバＸ１４０３に転送している。そのため、ファイル管理サービスサーバＢ１４０２に障害が転送データの受信中（つまり転送データの転送中）に生じた場合、ファイル管理サービスサーバＸ１４０３には途中の転送データが残ってしまう。ファイル管理サービスサーバＸ１４０３が、この転送データを削除する処理について図２３および図２４を使って説明する。
【０１５０】
ファイル管理サービスサーバＸ１４０３のファイル受信部１５２１が、ＥｎｄＦｌａｇを初期化する（ステップＳ２３０１）。ファイル受信部１５２１は、ＥｎｄＦｌａｇが０の場合に、受信ループ（ステップＳ２３０２）の処理を行う。
【０１５１】
ファイル受信部１５２１は、ファイル管理サービスサーバＢ１４０２から新しいデータを受信するまで待機する（ステップＳ２３０３）。ファイル受信部１５２１が、通信接続がタイムアウトしたかを判断する（ステップＳ２３０４）。通信接続がタイムアウトせずに新しいデータを受信できた場合、ファイル受信部１５２１は、ファイル管理サービスサーバＢ１４０２からデータを受信する（ステップＳ２３０５）。
【０１５２】
次に、ファイル受信部１５２１が、受信データが停止命令であるかを判断する（ステップＳ２３０６）。停止命令は、データ情報格納領域１８１１に停止命令を表すバイナリデータが格納された転送データ１８０１（図１７（Ａ））である。
【０１５３】
受信データが停止命令である場合は、ステップＳ２３１０に進む。受信データが停止命令でない場合は、ファイル受信部１５２１が、受信データの退避命令を発行して（ステップＳ２３０７）、退避領域１５２５に受信データを退避する（ステップＳ２３０８）。
【０１５４】
次に、ファイル受信部１５２１が、受信データが終端データであるかを判断する（ステップＳ２３０９）。受信データが終端データでない場合は、処理が受信ループ（Ｓ２３０２）の先頭に戻る。受信データが終端データである場合は、処理がステップＳ２３１１に進む。
【０１５５】
上記ステップＳ２３０４の判断処理で、接続がタイムアウトした場合は、処理がステップＳ２３１０に進む。そして、ファイル受信部１５２１が、図２４を参照して説明する停止処理を実行する（ステップＳ２３１０）。続いて、ファイル受信部１５２１が、ＥｎｄＦｌａｇを１に設定し（ステップＳ２３１１）、受信ループ（Ｓ２３０２）の処理を抜ける。
【０１５６】
図２４は、図２３のステップＳ２３１０における停止処理を説明する図である。まず、ファイル受信部１５２１が、自身への保存多重度が１であるかを判断する（ステップＳ２３２２）。自身への保存多重度が１より大きい場合、すなわち自身が中継サーバである場合、ファイル受信部１５２１が、ファイル転送部１５２２に対して転送を強制的に停止する命令を行う（ステップＳ２３２３）。
【０１５７】
次に、ファイル転送部１５２２が、転送先サーバ２３５１に対して停止命令を送信する（ステップＳ２３２４）。この停止命令を受けた転送先サーバ２３５１が、図２３のステップＳ２３１０と同様の停止処理を実行する。
【０１５８】
次に、ファイル転送部１５２２が、転送処理強制停止処理を行う（ステップＳ２３２６）。前述のように、ファイル転送部１５２２は、ファイル受信部１５２１とは別スレッドで動作するので、転送処理強制停止処理（Ｓ２３２６）はスレッド停止処理である。転送処理が強制停止された場合、またはステップＳ２３２２で自身への保存多重度が１であり、自身が終端サーバであると判断された場合、ファイル受信部１５２１は、ファイル書込部１５２３に対して書込処理強制停止命令を送信する（ステップＳ２３２７）。
【０１５９】
次に、ファイル書込部１５２３が、書込処理強制停止命令を受けて、データ格納領域１５４１から書込済データの削除を行う（ステップＳ２３２８）。そして、ファイル書込部１５２３が、書込処理強制停止処理を行う（ステップＳ２３２９）。書込処理強制停止処理は、転送処理強制停止処理と同様に、スレッドを停止する処理である。続いて、ファイル受信部１５２１が、退避領域の解放命令を発行して（ステップＳ２３３０）、退避領域１５２５から受信済みのデータを解放する（ステップＳ２３３１）。
【０１６０】
実施例３の情報処理システムによれば、障害発生時にも、障害が発生したファイル管理サービスサーバとは異なるファイル管理サービスサーバを選択することで指定された多重度でファイルを保存可能であるので、可用性が低下しない。また、中途半端なファイルが各ファイル管理サービスサーバに残らないので、容量を圧迫しない。
【０１６１】
本実施例では、ファイル管理サービスサーバＢ１４０２に障害が発生した場合に、既に転送済のデータはファイル管理サービスサーバＸ１４０３から破棄し、先頭から再送するようにした。しかし、ファイル転送部１５２２が、転送再開処理（Ｓ２２１０）で、ファイル管理サービスサーバＡ１４０１乃至Ｘ１４０３に対して既に受信済のデータを問い合わせ、途中から再送してもよい。このように障害の発生したファイル管理サービスサーバを飛ばして途中から再送する場合は、各ファイル管理サービスサーバが転送先サーバを決定するのではなく、先頭サーバであるファイル管理サービスサーバＡ１４０１が経路を決定する必要がある。この場合、ファイル管理サービスサーバＡ１４０１のファイル転送部１５２２は、転送先のサーバ装置とは異なる他のサーバ装置であって、データの一部を受信済みのサーバ装置に対して、該サーバ装置が未受信の分のデータを送信する。
【０１６２】
（実施例４）
一時ファイル管理サービスサーバ８０３からの応答（図１２のステップＳ７１５）は、ファイルを指定された多重度分のファイル保存が完了するまで呼び出し元のスキャンサービスサーバ１０１に返却されない。したがって、転送経路の途中のファイル管理サービスサーバに障害が発生した場合、上記の応答が遅延することがある。そこで、実施例４の情報処理システムでは、一時ファイル管理サービスサーバ８０３に対する保存要求（図１２のステップＳ７１４）において、多重度に加えて保存の最低保証数を指定できるようにする。そして、一時ファイル管理サービスサーバ８０３が、最低保証数分のファイル保存が完了したら、応答（ステップＳ７１５）を返却するようにする。最低保障数は、多重度以下の自然数であり、多重度と同様に自サーバに転送する際にデクリメントされる。
【０１６３】
図２５は、ファイル管理サービスサーバによる転送完了通知判断処理を説明するフローチャートである。転送完了通知判断処理は、ファイルの転送元に対して正常終了通知（図１６のＳ１７４５，Ｓ１７５１）を行うかを判断する処理である。転送完了通知判断処理が行われるタイミングは、書込完了通知（図１６のステップＳ１７４４）の後、または転送先サーバからの正常終了通知（図１６のステップＳ１７４５）の後である。
【０１６４】
ファイル受信部１５２１が、自サーバへの書込が完了したかを判断する（ステップＳ２４０１）。自サーバへの書込が完了していない場合は、処理を終了する。したがって、この場合は、ファイル受信部１５２１は正常終了通知を行わない。
【０１６５】
自サーバへの書込が完了している場合、ファイル受信部１５２１が、自サーバへの最低保障数が１であるかを判断する（ステップＳ２４０２）。自サーバへの最低保障数が１でない場合は、ステップＳ２４０３に進む。そして、ファイル受信部１５２１が、転送先サーバから正常終了通知（図１６のＳ１７５１）がされているかを判断する（ステップＳ２４０３）。
【０１６６】
転送先サーバから正常終了通知がされていない場合は、処理を終了する。したがって、この場合は、ファイル受信部１５２１は正常終了通知を行わない。
【０１６７】
上記ステップＳ２４０２で自サーバへの最低保障数が１であった場合、もしくは上記ステップＳ２４０３で転送先サーバから正常終了通知がされている場合、ファイル受信部１５２１は転送元サーバへの正常終了通知を行う（ステップＳ２４０４）。すなわち、ファイル受信部１５２１は、最低保障数分のデータが保存された時に、最低保障数分のデータの保存が完了したことを通知する通知手段として機能する。
【０１６８】
実施例４の情報処理システムによれば、一時ファイル管理サービスサーバ８０３への保存要求（図１６のＳ７１４）に対する応答（Ｓ７１５）の遅延を軽減することができる。以下、具体的に説明する。一時ファイル管理サービスサーバ８０３に対して、例えば多重度３、最低保障数１でファイル保存要求が行われた場合、ファイル管理サービスサーバＡ１４０１、Ｂ１４０２、Ｘ１４０３の順で転送経路が選択された場合を想定する。ここで、ファイル管理サービスサーバＡが転送データの書込処理を完了した段階で、転送元の一時ファイル管理サービスサーバ８０３に正常終了通知が発行される。よって、例えば、ファイル管理サービスサーバＢおよびＸのいずれかで障害が発生しても、一時ファイル管理サービスサーバ８０３への保存要求（図１６のＳ７１４）に対する応答（Ｓ７１５）の遅延を軽減できる。
【０１６９】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１７０】
１０１  スキャンサービスサーバ
１０２  フローサービスサーバ
１０３  タスクサービスサーバ
１０７  画像形成装置
１０８  クラウドサービスサーバ
【図１】
2014154104.tif 000003
【図２】
2014154104.tif 000004
【図３】
2014154104.tif 000005
【図４】
2014154104.tif 000006
【図５】
2014154104.tif 000007
【図６】
2014154104.tif 000008
【図７】
2014154104.tif 000009
【図８】
2014154104.tif 000010
【図９】
2014154104.tif 000011
【図１０】
2014154104.tif 000012
【図１１】
2014154104.tif 000013
【図１２】
2014154104.tif 000014
【図１３】
2014154104.tif 000015
【図１４】
2014154104.tif 000016
【図１５】
2014154104.tif 000017
【図１６】
2014154104.tif 000018
【図１７】
2014154104.tif 000019
【図１８】
2014154104.tif 000020
【図１９】
2014154104.tif 000021
【図２０】
2014154104.tif 000022
【図２１】
2014154104.tif 000023
【図２２】
2014154104.tif 000024
【図２３】
2014154104.tif 000025
【図２４】
2014154104.tif 000026
【図２５】
2014154104.tif 000027