[第1の実施形態]
以下、本発明の実施形態について図面を参照しながら説明する。
図1は本実施形態に係るクラウドサービスの一例を表した模式図である。クラウドサービスは、クラウドコンピューティングを利用してデータ形式の変換、文書ファイルの翻訳、プリントなどの各種サービスを提供する。ステップS1において、インプット側機器の一例としてのPC(パーソナルコンピュータ)12は例えばワードプロセッサアプリケーションなどで作成した電子文書ファイルをクラウド10上のサーバ11にアップロードする。なお、クラウド10上のサーバ11にアップロードするファイルは、電子文書ファイルに限られず、画像ファイル、動画ファイル、音声ファイルなどの各種電子データでもよい。
ステップS2において、サーバ11はアップロードされた電子文書ファイルを例えばPDFやRPCS(株式会社リコーが開発したページ記述言語)などの別のデータ形式への変換や電子文書ファイルの他言語への翻訳(データ変換処理)などを行う。アウトプット側機器の一例としてのPC13はステップS3において、クラウド10上でデータ変換処理を行ったデータを取得する。なお、例えばアウトプット側機器の他の例としてMFP(複合機)を用いて、取得したデータをプリントしてもよい。
クラウド10側から見ると、PC12とPC13とはクライアントとなる。クライアントであるPC12とPC13は、クラウド10上のサーバ11と通信を行い、所与の目的を達成する。
本実施形態のクラウドサービスではクラウド10上でデータ変換処理を行うため、クライアントであるPC12にデータ変換エンジンを持つ必要がない。ところが、クラウド10側で用意するデータ変換エンジンは多種多様な電子文書ファイルに対応する必要がある。また、電子文書ファイルの種類は今後も増えていく可能性がある。出力に関しても、データ変換エンジンはアウトプット側機器がPC13である場合の他、MFP(複合機)、プロジェクタや、或いは全く未知の機器への出力に対応する可能性がある。さらに、データ変換エンジンは別のクラウドサービスで利用できるデータ形式に対応する可能性もあり得る。
このような事情は、データ変換処理と同様、何らかの処理を実行するクラウド10側において共通の課題であると言える。例えばインプット側機器としてのMFP(複合機)を用いて、このMFP(複合機)でスキャンした画像をクラウド10側でOCR(Optical Character Reader)処理して、別のクラウドサービスが提供するオンラインストレージに保存する場合も共通の課題を有する。
また、別のクラウドサービスが提供するオンラインストレージからファイルを読み出してプリントデータ(印刷ファイル)への変換やOCR処理などのデータ変換処理を行う場合も共通の課題を有する。
以下では、クラウド10上でデータ変換処理を行うクラウドサービスを一例として説明する。なお、上記したように、アウトプット側としてMFP(複合機)を用いたプリントサービス(クラウドプリント)や、MFP(複合機)でスキャンした画像をクラウド10側でOCR処理して、別のクラウドサービスが提供するオンラインストレージに保存処理などにも適用可能である。また、上記したように、別のクラウドサービスが提供するオンラインストレージからファイルを読み出して別のデータ形式への変換やOCR処理などを行う処理にも適用可能である。
図1に示すクラウドサービスは、図2に示すようなクラウドコンピューティング型の情報処理システムで構成される。図2は本実施形態に係るクラウドサービスを実現する情報処理システムの構成例を示すブロック図である。
ローカル側にはPC12、PC13が存在する。PC12及びPC13は、LANなどのネットワーク上のゲートウェイ等に設置されているファイヤウォール103を介してインターネットなどのネットワークに接続する。なお、本実施形態のクラウドサービスではPC12とPC13とが同一のネットワーク上にあってもよいし、なくてもよい。以下ではPC12とPC13とが同一のネットワーク上にないと仮定して説明する。
図2において、クラウド側は、データ変換システム100、ジョブ管理サーバ102、リバースプロキシ104、認証サーバ105及び認証用データベース106を有する構成である。
データ変換システム100は、非同期変換サーバ101、共有ファイルストレージ107、ジョブ情報管理データベース108、及び変更管理データベース109を有する。なお、共有ファイルストレージ107はデータ変換システム100の外側に置く設計としてもよい。さらに、図4に示すようにジョブ情報管理データベース108及び/又は変更管理データベース109は非同期変換サーバ101の一部として含まれる構成としてもよい。
データ変換システム100とジョブ管理サーバ102とは、ローカル側の機器であるPC12がアップロードしたジョブを管理/登録する。ローカル側の機器であるPC13からファイルの取得要求があった場合、データ変換システム100とジョブ管理サーバ102とは取得要求があったファイルをPC13に送信する。
ジョブは、ワードプロセッサアプリケーションなどで作成した電子文書ファイルが含まれる。データ変換システム100は、ジョブに含まれる電子文書ファイルを例えばテキスト形式からPDF形式の電子データに変換する。また、このとき、例えば電子文書ファイルを日本語から英語に翻訳変換することもできる。なお、本実施形態のクラウドサービスをクラウドプリントに適用した場合、データ変換システム100は、アウトプット側機器であるMFPで出力可能なデータ形式(ページ記述言語(PDL))の電子データであるプリントデータに変換する。
図2に示した情報処理システムの利用例について図3を参照して説明する。図3は本実施形態に係るクラウドサービスの手順の一例を表したフローチャートである。
ステップS101において、ユーザはPC12から本実施形態に係るクラウドサービスにログインする。認証処理は認証サーバ105が実行する。ステップS102において、ユーザはデータ形式の変換や言語の翻訳をしたい電子文書ファイルを、PC12から本実施形態に係るクラウドサービスにアップロードする。ステップS102の処理がジョブの登録である。ジョブの登録処理はジョブ管理サーバ102が実行する。ここまでがPC12から行われる手順である。
ジョブが登録されると、本実施形態に係るクラウドサービスはバックグラウンドでデータ変換処理を行う。つまり、本実施形態に係るクラウドサービスは非同期処理の一例としてデータ変換処理を実現している。
ステップS103において、ジョブ管理サーバ102は登録された電子文書ファイルのデータ変換をデータ変換システム100に依頼する。また、ジョブ管理サーバ102は登録された電子文書ファイルのデータ変換の変更要求(例えば変換するデータ形式の変更や翻訳後の言語の変更)を受け付けた場合、変更後のデータ変換をデータ変換システム100に依頼する。ここで行われるデータ変換処理の詳細については後述する。
ユーザはデータ変換を行ったファイルを取得する場合、PC13にて以下の一連の手順を行う。ステップS104において、クラウド側はPC13がクラウドサービスに対応の機器であるかを確かめる。機器としての認証である。これは、例えばアウトプット側機器がMFPであるような場合、そのMFPがクラウドサービスに対応していない場合があるからである。次に、ステップS105において、ユーザはPC13を操作してクラウドサービスにログインする。ユーザとしての認証である。
認証後、PC13はステップS106においてジョブ一覧をクラウドサービスから取得し、表示画面などに表示する。次にユーザはステップS107において、表示されているジョブ一覧の中から所望するジョブを選択する。
ユーザによりジョブが選択されると、PC13はステップS108においてクラウドサービスからジョブを取得する。クラウドサービスは、PC12にデータ変換エンジン(例えばデータ形式変換プログラムや翻訳プログラム)を用意する必要がない。なお、同様に、本実施形態に係るクラウドサービスをクラウドプリントに適用した場合、PC12にアウトプット側機器であるMFP(複合機)のプリンタドライバ(データ変換エンジン)を用意する必要がないので、例えば、会議資料を事前に作成/アップロードしておき、海外出張時に現地で印刷するような用途に有効である。
≪データ変換システム≫
本実施形態に係るデータ変換システム100は、多種多様なデータ変換要求に応えるため、また、データ変換要求の種類の増加に柔軟に対応するため、以下に説明する構成を備える。図4に、データ変換システム100の機能構成を示す。図4は本実施形態に係るデータ変換システムの構成例を示すブロック図である。
図4に示すように、データ変換システム100は、フロントエンドアプリケーション102aと、共有ファイルストレージ107と、非同期変換サーバ101とを含む。フロントエンドアプリケーション102aはジョブ管理サーバ102の一機能である。非同期変換サーバ101は非同期変換サービスを提供する。また、非同期変換サーバ101は、データ変換要求管理手段111と、メッセージキュー112と、ジョブ情報管理データベース108と、変更管理データベース109と、複数の変換手段120を含む構成である。
ジョブ管理サーバ102は、インプット側機器の一例としてのPC12から送信されたジョブを受信して、ジョブに含まれる電子文書ファイル等を共有ファイルストレージ107に登録する機能を備える。また、ジョブ管理サーバ102は、必要なファイル変換を判断して、データ変換システム100に変換を実行させる制御を行う。
データ変換システム100は、処理の単位であるタスクを定義し、複数のタスクをジョブとして取り扱う。データ変換システム100は、メッセージキュー112にジョブを登録しておき、変換手段120がジョブを一つずつ処理していく。変換手段120は、例えばWorkerにより実現される。
データ変換後のファイルは共有ファイルストレージ107に登録される。例えばアウトプット側機器の一例としてのPC13からファイルの取得要求を受信すると、ジョブ管理サーバ102は共有ファイルストレージ107に登録された変換後のファイルをPC13に送信する。
フロントエンドアプリケーション102aは、必要なデータ変換を判断する機能を備える。フロントエンドアプリケーション102aは、例えばPC12が送信したジョブが画像データからPDFデータへのデータ変換を要求するものである場合、画像データ形式からPDFデータ形式へのデータ変換が必要と判断する。また、本実施形態に係るクラウドサービスをクラウドプリントに適用した場合において、例えば電子ファイルがドキュメントファイルであり、アウトプット側機器がRPCS対応の出力機器である場合、フロントエンドアプリケーション102aは、ドキュメントファイルのデータ形式からRPCSのデータ形式へのデータ変換が必要と判断する。
フロントエンドアプリケーション102aは、判断したデータ形式の種類を例えば「"type":"ocr2pdf"」のようなパラメータにして、非同期変換サーバ101に送信するリクエスト(ジョブ)に埋め込む。
同様に、データ変換元のデータのURI(Uniform Resource Identifier)もパラメータとしてリクエスト(ジョブ)に埋め込む。URIは共有ファイルストレージ107におけるデータの存在する場所の情報である。
データ変換の種類とデータのURIを少なくとも含むリクエストを受け取った非同期変換サーバ101では、データ変換要求管理手段111がリクエストを受け取る。データ変換要求管理手段111は、データ変換に係るリクエストを解析して、データ変換の種類に合致するメッセージキュー112に、ジョブ(メッセージ)を入れる。
データ変換要求管理手段111は、メッセージキュー112にジョブ(メッセージ)を入れることと同時に並行して、ジョブ情報管理データベース108に、当該リクエスト(ジョブ)の情報を登録する。このとき、データ変換要求管理手段111は、当該リクエスト(ジョブ)の情報を一意に識別するIDを採番し、ジョブ情報管理データベース108に登録する。
また、データ変換要求管理手段111は、ジョブ情報管理データベース108に登録済の情報に対する変更要求(変更リクエスト)をフロントエンドアプリケーション102aから受け取った場合、当該変更リクエストの情報を変更管理データベース109に登録する。なお、変更リクエストには、変更後のデータ変換の種類に加えて、変更対象であるリクエストの情報を一意に識別するIDが含まれる。また、変更リクエストには、URIが含まれていてもよい。
なお、データ変換要求管理手段111は、フロントエンドアプリケーション102aから受け取った情報が、リクエスト又は変更リクエストのいずれであるかをIDの有無で判断する。すなわち、データ変換要求管理手段111は、フロントエンドアプリケーション102aから受け取った情報に、ジョブの情報を一意に識別するIDが指定されていない合、リクエストであると判断し、IDが指定されている場合、変更リクエストであると判断する。
ジョブ情報管理データベース108に登録される情報は、ジョブ(リクエスト)の情報を一意に識別するID、ファイルの場所(共有ファイルストレージ107上のURI)、ジョブ(リクエスト)に含まれるデータ変換の種類、当該リクエストの状態などである。リクエストの状態としては、「データ変換実行中」、「データ変換中継中」、「データ変換完了」などがある。リクエストの状態は、データ変換の処理状況を示すステータスを表す。
変更管理データベース109に登録される情報は、変更対象であるリクエストの情報を一意に識別するID、変更リクエストに含まれるデータ変換の種類などである。例えば、変換対象のデータを変更する場合、URIが含まれていてもよい。変更管理データベース109にIDを登録することで、ジョブ情報管理データベース108に登録されているどのジョブ(リクエスト)の情報に対する変更なのかを関連付けることができる。
メッセージキュー112は複数の変換手段120に対応するキューを有する。図4では変換手段120とメッセージキュー112が有するキューとが一対一に対応する例を示しているが、多対多に対応していてもよい。
各変換手段120は、その変換手段120に対応するキューを監視しており、キューにメッセージ(ジョブ)が入ると、ジョブ情報管理データベース108に登録された、そのメッセージ(ジョブ)に対応するジョブ(リクエスト)の情報を取りに行く。また、各変換手段120は、ジョブ情報管理データベース108から取得したリクエストの情報に対応する変更リクエストの情報の有無を、変更管理データベース109を参照して確認する。各変換手段120は、ジョブ情報管理データベース108から取得したリクエストの情報に含まれるURIに基づいて、共有ファイルストレージ107上のデータを取得する。
そして、各変換手段120は、リクエストの情報及び変更リクエストの情報に基づいて、取得したデータの変換を行う。各変換手段120は、変換後のデータを共有ファイルストレージ107上に登録し、ジョブ情報管理データベース108上に登録されたリクエストの情報(具体的にはリクエストの状態)を書き換えて更新する。また、後述するように連携してデータ変換する場合、各変換手段120はデータ変換した後、新たなメッセージを次にデータ変換を行う変換手段120のキューに入れる。
複数の変換手段120は、図5に示すように、変換処理ライブラリ120aと変換エンジン120bを備える構成である。変換処理ライブラリ120aは、その変換手段120に対応するキューを監視する処理や、変換後のデータを共有ファイルストレージ107上に登録する処理、変更管理データベース109を参照して変更リクエストの有無を確認する処理などを実行する。
また、変換処理ライブラリ120aは、ジョブ情報管理データベース108上に登録されたリクエストの情報を書き換えて更新する処理などを行う。また、変換処理ライブラリ120aは、連携してデータ変換する場合にデータ変換後の新たなメッセージを次にデータ変換を行う変換手段120のキューに入れる処理などを実行する。
変換エンジン120bとしては、例えば、以下のようなものがある。
・ocr2txt:JPEG(Joint Photographic Experts Group)などの画像データをテキスト形式のデータに変換するエンジン
・txt2doc:テキスト形式のデータをドキュメントファイル形式のデータに変換するエンジン
・txt2pdf:テキスト形式のデータをPDF形式のデータに変換するエンジン
・txt2eng:日本語を英語に翻訳変換するエンジン
・txt2dut:日本語をオランダ語に翻訳変換するエンジン
次に、非同期変換サーバ101による非同期変換サービスの流れについて、説明する。まず、ユーザがクラウド10上にジョブを登録した後に、変更要求を行わない場合の処理について説明する。また、ユーザがデータ形式の変換を要求したリクエスト(処理実行要求)を行った場合について説明する(ユーザが電子文書ファイルの言語の翻訳変換を要求したリクエストを行う場合については、第2の実施形態で説明する。)。図6は、本実施形態に係る非同期変換サーバの動作の一例を示すシーケンス図である。
ステップS11において、フロントエンドアプリケーション102aは共有ファイルストレージ107に登録しておいたデータに対するデータ変換の要求(ジョブ登録依頼)を非同期変換サーバ101のデータ変換要求管理手段111に対して行う。つまり、非同期変換サービスは、フロントエンドアプリケーション102aが共有ファイルストレージ107に登録しておいたデータに対するデータ変換の要求(リクエスト)をデータ変換要求管理手段111に送信すると始まる。
ステップS11で送信されるリクエストは例えば図7(a)に示すような情報である。図7(a)の例では、データ形式を画像データからPDF形式にデータ変換するリクエストであることを示す「"type":"ocr2pdf"」と記述されている。また、図7(a)に示すリクエストには、データ変換しようとしているデータのURIが「"file":"http://example.com/sample.jpg"」と記述されている。
ステップS12において、ジョブ(リクエスト)を受信したデータ変換要求管理手段111はジョブを解析して、データ変換の種類に合致する変換手段120があるか否かを判定する。データ変換の種類に合致する変換手段120がある場合、データ変換要求管理手段111は、その変換手段120に対応するメッセージキュー112のキューに、ジョブ(メッセージ)を登録する。また、このとき、データ変換要求管理手段111は、フロントエンドアプリケーション102aから受信したリクエストの情報(ジョブの情報)をジョブ情報管理データベース108に登録する。図7(b)はジョブ情報管理データベース108に登録したリクエストの情報である。データ変換要求管理手段111は、リクエストの情報を一意に識別するIDを採番し、このIDをリクエストの情報に埋め込んだ上で登録する。図7(b)に示す例では、「"_ID":12345」とIDが記述されている。
ステップS13において、データ変換要求管理手段111はジョブ登録結果をフロントエンドアプリケーション102aに返す。ここでは、第1の変換手段121に対応するメッセージキュー112のキューにジョブが登録されたものとして説明を続ける。
ステップS14において、自身が処理できるジョブに対応するキューを監視している第1の変換手段121はキューにジョブが登録されたことを検知する。
ステップS15において、第1の変換手段121は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。例えば、第1の変換手段121は「"_ID":12345」に該当する変更リクエストの情報が変更管理データベース109に登録されているか否かを判断し、登録されている場合、変更要求があったと判断する。
ステップS16において、第1の変換手段121はキューに登録されたジョブの情報(リクエストの情報)をジョブ情報管理データベース108から取得する。
第1の変換手段121は取得したジョブの情報(リクエストの情報)に含まれるタスクの内容を解析し、そのタスクを変換手段120でデータ変換できる種類のタスクに分割する。ステップS16におけるタスクの分割は、タスク分割定義に基づいて行われる。図8は、本実施形態に係るタスク分割定義の一例を説明するための図である。図8のタスク分割では、「ocr2pdf」は画像データからテキスト形式のデータに変換するタスク「ocr2txt」と、テキスト形式のデータをPDF形式のデータに変換するタスク「txt2pdf」に分割できることを示している。同様に、図8の例では、「ocr2doc」は画像データからテキスト形式のデータに変換するタスク「ocr2txt」と、テキスト形式のデータをドキュメント形式のデータに変換するタスク「txt2doc」に分割できることを示している。
したがって、第1の変換手段121は、図9(a)に示すような「ocr2pdf」のタスクが含まれるリクエストの情報(ジョブの情報)は、図9(b)に示すような「ocr2txt」のタスクと「txt2pdf」のタスクを含むリクエストの情報(ジョブの情報)に分割する。なお、本実施形態では、一つの変換手段120で画像データをPDFデータに変換することはできないものとする。
これにより、フロントエンドアプリケーション102aは複数の変換手段120を連携させて「ocr2pdf」のデータ変換を行う。すなわち、フロントエンドアプリケーション102aは例えば「ocr2pdf」のタスクを「ocr2txt」及び「txt2pdf」の二つのタスクに分割する第1の変換手段121に対応するメッセージキュー112にジョブを登録する。第1の変換手段121は「ocr2pdf」のタスクを「ocr2txt」及び「txt2pdf」の二つのタスクに分割する。第1の変換手段121は、次に行うタスク(すなわち、「ocr2txt」)に対応するキューに、それぞれのタスクを含むジョブを再登録することで、複数の変換手段120を連携させたデータ変換が可能になる。本実施形態では、データ変換の種類「ocr2txt」のデータ変換が可能な第2の変換手段122と、データ変換の種類「txt2pdf」のデータ変換が可能な第3の変換手段123とが存在するものとして説明する。
したがって、第1の変換手段121は、1つの変換手段120で変換できないデータ変換の種類のタスクを含むジョブから第2の変換手段122及び第3の変換手段123で変換できるデータ変換の種類のタスクを含むジョブを生成する。第1の変換手段121は、第2の変換手段122及び第3の変換手段123で変換できるデータ変換の種類のタスクを含むジョブを生成することにより、第2の変換手段122と第3の変換手段123とを連携させたデータ変換を実現している。
なお、例えば、第2の変換手段122が、第1の変換手段121が行うタスクの分割を行ってもよい。すなわち、各変換手段120はタスクの分割が行えるようにし、最初に処理を行うタスクに対応する変換手段120がタスクの分割を行うようにしてもよい。
図6に戻り説明を続ける。ステップS17において、ステップS15と同様に、第1の変換手段121は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。ステップS18において、第1の変換手段121は分割したタスクを含むジョブを、次に行うタスク(例えばocr2txt)のデータ変換の種類に対応するキューに登録する。ステップS19において、自身が処理できるジョブに対応するキューを監視している第2の変換手段122はキューにジョブが登録されたことを検知する。
ステップS20において、ステップS15と同様に、第2の変換手段122は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。ステップS21において、第2の変換手段122はキューに登録されたジョブの情報をジョブ情報管理データベース108から取得する。第2の変換手段122はジョブの情報を解析し、先頭のタスクの情報に含まれるURIに基づいて共有ファイルストレージ107上のデータを取得し、先頭のタスクの情報に含まれるデータ変換の種類に応じたデータ変換を行う。
第2の変換手段122は、変換後のデータを共有ファイルストレージ107上に登録又は更新する。また、第2の変換手段122はデータ変換したことを表すために、ジョブ情報管理データベース108に登録されているジョブの情報を更新する。このとき、リクエストの状態が例えば「データ変換中継中」に更新される。ステップS22において、ステップS20と同様に、第2の変換手段122は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。
そして、ステップS23において、第2の変換手段122はジョブの情報から先頭のタスク(処理済み)の情報を削除し、次に行うタスク(例えばtxt2pdf)のデータ変換の種類に対応するキューに、残りのタスクを含むジョブを登録する。
ステップS24において、自身が処理できるジョブに対応するキューを監視している第3の変換手段123はキューにジョブが登録されたことを検知する。ステップS25において、ステップS22と同様に、第3の変換手段123は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。ステップS26において、第3の変換手段123はキューに登録されたジョブの情報をジョブ情報管理データベース108から取得する。
第3の変換手段123はジョブの情報を解析し、先頭のタスクの情報に含まれるURIに基づいて共有ファイルストレージ107上のデータを取得し、先頭のタスクの情報に含まれるデータ変換の種類に応じたデータの変換を行う。
第3の変換手段123は、変換後のデータを共有ファイルストレージ107上に登録又は更新する。また、第3の変換手段123は変換したことを表すために、ジョブ情報管理データベース108に登録されているジョブの情報を更新する。このとき、リクエストの状態が例えば「データ変換完了」に更新される。ステップS27において、ステップS25と同様に、第3の変換手段123は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。
そして、ステップS28において、第3の変換手段123はジョブの情報から先頭のタスク(処理済み)の情報を削除し、次に行うタスクがジョブ情報に含まれていないため、他のキューにジョブを登録することなく処理を終了する。
なお、各変換手段120は、タスクの分割又はデータ変換を行う前後に変更管理データベース109を参照して変更要求の有無を確認しているが、これに限られない。例えば、各変換手段120は、タスクの分割を行う前又はタスクの分割を行った後のいずれか一方で変更要求の有無を確認するようにしてもよい。同様に、各変換手段120は、データ変換を行う前又はデータ変換を行った後のいずれか一方で変更要求の有無を確認するようにしてもよい。
上述した動作により、本実施形態では直接変換する変換手段120が存在しない変換要求のリクエストを満足する変換手段120を用意するのではなく、複数の既存の変換エンジン120を組み合わせて連携させることで、変換要求を処理できるようになる。
次に、ユーザがクラウド10上にジョブを登録した後に、変更要求を行った場合について説明する。つまり、例えばユーザがクラウド10上にジョブを登録した後に、変換するデータ形式を変更したような場合である。例えばユーザがクラウド10上に、画像データをPDFに変換するジョブを登録した後、このジョブを画像データからドキュメントデータに変換するように変更要求を行った場合である。
上述したように、画像データをPDFに変換する場合、「ocr2pdf」を「ocr2txt」と「txt2pdf」の2つのタスクに分割し、それぞれ変換を行うための変換手段が連携して変換を行う。また、画像データからドキュメントデータに変換する場合の変更要求である「ocr2doc」は「ocr2txt」と「txt2doc」と分割される。なお、本実施形態では、一つの変換手段120で画像データからドキュメントデータに変換することはできないものとする。
まず、非同期変換サーバの変換手段120が処理する前のタスクを変更する場合について説明する。すなわち、例えば、「txt2pdf」のタスクを処理する前に、ユーザが変更要求を行い、「txt2pdf」が「txt2doc」に変更されるような場合について説明する。図10は、本実施形態に係る非同期変換サーバの動作の他の例を示すシーケンス図である。
ステップS31〜S41の処理は、それぞれ図6のステップS11〜S21の処理と同様のため説明を省略する。ステップS42において、ユーザが登録したジョブの変更要求を行うと、フロントエンドアプリケーション102aはデータ変換の変更リクエスト(ジョブの情報の変更依頼)を非同期変換サーバ101のデータ変換要求管理手段111に対して行う。
ステップS43において、データ変換要求管理手段111は変更リクエストを変更管理データベース109に登録する。ここで、変更管理データベース109に登録する変更リクエストの情報について説明する。図11は、本実施形態に係る変更リクエストの情報の一例を説明するための図である。図11に示す変更リクエストには、「"_id"」と「"type"」が指定されている。"_id"は、ジョブ情報管理データベース108に登録されている変更対象のリクエストの情報(ジョブの情報)を特定するための情報である。「"type"」は変更内容である。図12に示す例では、「"_id"」が「12345」のリクエスト(ジョブ)のデータ変換を「ocr2doc」(画像データからドキュメントデータへの変換)に変更する場合を示している。
ステップS44において、データ変換要求管理手段111は登録結果をフロントエンドアプリケーション102aに対して行う。
ステップS45において、第2の変換手段122は変更管理データベース109を参照して変更要求(変更リクエスト)の有無を確認する。例えば、第2の変換手段122は「"_ID":12345」に該当する変更リクエストの情報が変更管理データベース109に登録されているか否かを判断し、登録されている場合、変更要求があったと判断する。
ステップS46において、第2の変換手段122はステップS45で変更要求(変更リクエスト)があったと判断した場合、変更管理データベース109から変更リクエストの情報を取得し、ジョブ内のタスクを書き換える。すなわち、例えば、図9(b)に示すジョブの情報を図12に示すジョブの情報に書き換える。具体的には、2番目に処理されるタスク(txt2pdf)を「txt2doc」に書き換える。これにより、後続の処理を第3の変換手段123(txt2pdfを行う変換手段120)ではなく、第4の変換手段124(txt2docを行う変換手段120)に依頼することができる。なお、ジョブの情報を書き換えた後、書き換え後のジョブの情報をジョブ情報管理データベース108に登録又は更新し、変更管理データベース109から変更リクエストの情報を削除する。
ステップS47において、第2の変換手段122はジョブの情報から先頭のタスク(処理済み)の情報を削除し、次に行うタスク(例えばtxt2doc)のデータ変換の種類に対応するキュー(すなわち、第4の変換手段124に対応するキュー)に、残りのタスクを含むジョブを登録する。
ステップS48において、自身が処理できるジョブに対応するキューを監視している第4の変換手段124はキューにジョブが登録されたことを検知する。ステップS49において、第4の変換手段124は変更管理データベース109を参照して変更要求(変更リクエスト)の有無を確認する。
ステップS49において、第4の変換手段124はキューに登録されたジョブの情報(ステップS46で書き換えたジョブの情報)をジョブ情報管理データベース108から取得する。
第4の変換手段124はジョブの情報を解析し、先頭のタスクに含まれるURIに基づいて共有ファイルストレージ107上のデータを取得し、先頭のタスクの情報に含まれるデータ変換の種類に応じたデータ変換を行う。
第4の変換手段は、変換後のデータを共有ファイルストレージ107上に登録又は更新する。また、第4の変換手段124は変換したことを表すために、ジョブ情報管理データベース108に登録されているジョブの情報を更新する。このとき、リクエストの状態が例えば「データ変換完了」に更新される。ステップS51において、ステップS49と同様に第4の変換手段124は変更管理データベース109を参照して変更要求(変更リクエスト)の有無を確認する。そして、ステップS52において、第4の変換手段124はジョブの情報から先頭のタスク(処理済み)の情報を削除し、次に行うタスクがジョブの情報に含まれていないため、他のキューにジョブを登録することなくタスクを終了する。
上述した動作により、ジョブの変更要求があった場合でも、すでに処理済みのタスク(図10で説明した例では、ocr2txt)を再度処理する必要がない。
すなわち、上述した動作によれば、図13に示すように、例えばタスクA、タスクB、タスクC、タスクDからなるジョブについて、タスクA及びタスクBの処理が完了したタイミングでタスクD(未処理)を削除してタスクEを追加する変更要求があった場合、従来のシステムと異なり、タスクA及びタスクBを再度処理する必要がない。したがって、ユーザがジョブの変更要求を行った場合において、変換処理に関するユーザの待ち時間が短縮される。
次に、非同期変換サーバの変換手段120がすでに処理を行ったタスクを変更する場合について説明する。すなわち、例えば「ocr2txt」のタスクが処理された後に、「ocr2txt」が「doc2txt」に変更されるような場合について説明する。図14は、本実施形態に係る非同期変換サーバの動作の他の例を示すシーケンス図である。
ステップS61〜S73の処理は、それぞれ図10のステップS31〜S41及びステップS45、ステップS47の処理と同様のため説明を省略する。また、ステップS74〜S76の処理は、それぞれ図10のステップS42〜S44の処理と同様のため説明を省略する。なお、ステップS74の処理における変更要求は、「"_id"」が「12345」のリクエスト(ジョブ)のデータ変換を「doc2pdf」(ドキュメントデータからドキュメントデータへの変換)に変更するものであるとする。つまり、この変更要求は「doc2txt」と「txt2pdf」の2つのタスクに分割される。
ステップS77の処理は、図6のステップS24の処理と同様のため説明を省略する。ステップS78において、第3の変換手段123は変更管理データベース109を参照し変更要求(変更リクエスト)の有無を確認する。例えば、第3の変換手段121は「"_ID":12345」に該当する変更リクエストの情報が変更管理データベース109に登録されているか否かを判断し、登録されている場合、変更要求があったと判断する。
ステップS79において、第3の変換手段123はステップS78で変更要求(変更リクエスト)があったと判断した場合、変更管理データベース109から変更リクエストの情報を取得し、ジョブ内のタスクを書き換える。すなわち、例えば、図9(b)に示すジョブの情報の最初のタスクを「ocr2txt」から「doc2txt」に書き換える。また、この場合、データ変換の変換元のデータも変更になるため、URIも例えば「"file":"http://example.com/sample.doc"」に書き換える。なお、ジョブの情報を書き換えた後、書き換え後のジョブの情報をジョブ情報管理データベース108に登録又は更新し、変更管理データベース109から変更リクエストの情報を削除する。
ステップS80において、第3の変換手段123は次に処理を行うタスク(例えばdoc2txt)のデータ変換の種類に対応するキュー(すなわち、第5の変換手段125に対応するキュー)に、タスクを含むジョブを登録する。なお、このとき、ジョブの情報の先頭のタスクが処理済みである場合、先頭のタスクの情報を削除する。
ステップS81において、自身が処理できるジョブに対応するキューを監視している第5の変換手段125はキューにジョブが登録されたことを検知する。ステップS82において、第5の変換手段125は変更管理データベース109を参照して変更要求(変更リクエスト)の有無を確認する。
ステップS83において、第5の変換手段125はキューに登録されたジョブの情報(ステップS79で書き換えたジョブの情報)をジョブ情報管理データベース108から取得する。
第5の変換手段125はジョブの情報を解析し、先頭のタスクに含まれるURIに基づいて共有ファイルストレージ107上のデータを取得し、先頭のタスクの情報に含まれるデータ変換の種類に応じたデータ変換を行う。
第5の変換手段は、変換後のデータを共有ファイルストレージ107上に登録又は更新する。また、第5の変換手段125は変換したことを表すために、ジョブ情報管理データベース108に登録されているジョブの情報を更新する。このとき、リクエストの状態が例えば「データ変換中継中」に更新される。ステップS84において、ステップS82と同様に第5の変換手段125は変更管理データベース109を参照して変更要求(変更リクエスト)の有無を確認する。
そして、ステップS85において、第5の変換手段125はジョブの情報から先頭のタスク(処理済み)の情報を削除し、次に行うタスク(例えばtxt2pdf)のデータ変換の種類に対応するキューに、残りのタスクを含むジョブを登録する。
ステップS86〜S90の処理は、それぞれ図6のステップS24〜S28の処理と同様のため説明を省略する。
上述した動作により、ジョブの変更要求があった場合でも、すでに処理済みのタスクを再度処理する必要がない。すなわち、上述した動作によれば、図15に示すように、例えばタスクA、タスクB、タスクC、タスクDからなるジョブについて、タスクA及びタスクBの処理が完了したタイミングでタスクB(処理済み)を削除してタスクEを追加する変更要求があった場合、従来のシステムと異なり、タスクAを再度処理する必要がない。したがって、ユーザがジョブの変更要求を行った場合において、変換処理に関するユーザの待ち時間が短縮される。
以上のように、本実施形態によれば、データ変換のリクエストの増加に柔軟に対応することができるようになる。また、本実施形態によれば、フロントエンドアプリケーション102aは変換手段120のタスクを一つ含むジョブを登録することで、複数の変換手段120が処理することを意識することなく、複数のタスクを実行できる。
また、本実施形態によれば、ユーザがジョブの登録を行った後、ジョブの変更要求を行った場合、ジョブの変更要求によって変更になるタスクが未処理のタスクであっても、すでに処理済のタスクであっても、変更要求前にすでに処理済のタスクに関しては再度処理する必要がなく、変換処理に関するユーザの待ち時間が短縮される。
なお、変換手段120の種類としては、上記実施形態のものとに限定されない。データ変換を行う変換手段以外にも、例えばバーコード画像のデータを文字データに変換する変換手段や、画像ファイルのデータからOCR処理して、文字列のデータに変換する変換手段、また、第2の実施形態で述べるように言語を他言語に翻訳変換する変換手段など、種々のものが考えられる。また、上記実施形態は、矛盾しない範囲で適宜組み合わせて適用することも可能である。
[第2の実施形態]
第2の実施形態は、前述した第1の実施形態と一部を除いて同様であるため、同一部分について適宜説明を省略する。本実施形態について図16を用いて説明する。なお、図16において、特に言及した処理以外は第1の実施形態の図10の対応する処理と同様であるため説明を省略する。
ステップS202において、データ変換要求管理手段111によってジョブ情報管理データベース108に登録されたジョブの情報は、図17(a)に示すような情報であるとする。すなわち、本実施形態では、データ形式の変換「"type":"ocr2pdf"」に加えて、他言語への翻訳変換「"translate":"english"」(日本語から英語への翻訳変換)が含まれている。このようなジョブの情報は、ステップS206において、図17(b)に示すような3つのタスクに分割される。すなわち、画像データからテキスト形式データへの変換(「ocr2txt」)、テキスト形式データからPDF形式データへの変換(「txt2pdf」)、及び日本語から英語への翻訳変換(「txt2eng」)の3つのタスクに分割される。
このような、翻訳変換を含むタスクの分割は、例えば図18に示すようtranslate定義に基づいて行われる。すなわち、例えば「"translate":"english"」と指定されていた場合、日本語を英語に翻訳変換する「txt2eng」タスクを含むジョブに分割される。
ステップS212の処理における、変更要求は図19に示すような変更リクエストの情報であったとする。すなわち、「"translate":"dutch"」との指定は、日本語からオランダ語に翻訳変換することをリクエストする変更リクエストである。このとき、ステップS216の処理では、日本語から英語への翻訳変換「txt2eng」が日本語からオランダ語への翻訳変換「txt2dut」に書き換えられる。そして、S222において、例えば日本語から英語への翻訳変換「txt2eng」タスクを処理する第6の変換手段126に対応するキューではなく、日本語からオランダ語への翻訳変換「txt2dut」タスクを処理する第7の変換手段127に対応するキューに、タスクを含むジョブを登録する。
ステップS225において、第7の変換手段127はキューに登録されたジョブの情報をジョブ情報管理データベース108から取得する。また、共有ファイルストレージ107上のデータを取得し、データ変換の種類に応じたデータ変換(日本語からオランダ語への翻訳変換)を行う。
以上のように、本実施形態によれば、図18のようにタスクを分割するための定義を導入することでデータ形式の変換以外の種々の処理を含むジョブをタスクに分割することができる。
本発明は、具体的に開示された上記実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。なお、変換手段120は実行手段及び処理分割手段の一例である。メッセージキュー112は、記憶手段の一例である。変更管理データベース109は、変更要求記憶手段の一例である。共有ファイルストレージ107は、データ記憶手段の一例である。