(57)【特許請求の範囲】
【請求項１】
画像形成装置からジョブの処理依頼を受信したことに応じて、前記ジョブに対応するメッセージを記憶手段に格納する、要求受信プログラムを実行することにより実現される要求受信部と、
前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は、該取得したメッセージに基づく処理を行う、バックエンド処理プログラムを実行することにより実現されるバックエンド処理部と、
前記記憶手段に格納されたメッセージを可視状態または不可視状態にする制御部とを有するクラウドコンピューティングシステムであって、
前記要求受信部は、
前記画像形成装置からのジョブの処理依頼を受信し、該受信したジョブを分割し、該分割された夫々のジョブの実行順序を決定し、該分割した夫々のジョブに対応するメッセージを複数の前記記憶手段に格納する格納手段を有し、
前記バックエンド処理部は、
前記決定された分割ジョブの実行順序に従って、前記複数の記憶手段のいずれかに格納されているメッセージを取り出し、該取り出したメッセージに基づき前記分割されたジョブの文書処理を行う文書処理手段を有し、
前記制御部は、前記メッセージが特定の前記バックエンド処理部により取得されたことに応じて、同一の前記メッセージが他の前記バックエンド処理部に取得されないように前記メッセージを不可視状態とし、前記特定のバックエンド処理部による処理が終了せずに前記メッセージが前記不可視状態となってから所定時間経過した後、前記メッセージを前記不可視状態から前記可視状態へと変更し、前記他のバックエンド処理部が前記メッセージを取得できるように制御する
ことを特徴とするクラウドコンピューティングシステム。
【請求項２】
前記記憶手段は、キューであり、
前記格納手段は、前記画像形成装置から文書処理に関する要求を受信し、受信した要求内容に応じて、前記文書処理のジョブを並列処理可能な単位に分割して分割ジョブを生成するとともに夫々の分割ジョブの実行順序を決定した上で、該分割ジョブを含むメッセージを複数の前記キューに格納し、
前記文書処理手段は、前記決定された分割ジョブの実行順序に従って、前記キューに格納されたメッセージに含まれる分割ジョブを取り出し、取り出した分割ジョブを実行して文書処理を行い、文書処理結果を前記画像形成装置に返す
ことを特徴とする請求項１に記載のクラウドコンピューティングシステム。
【請求項３】
前記格納手段は、実行処理コストが同じである分割ジョブを含むメッセージを同じ前記キューに格納して、前記キューとメッセージとの対応情報をキュー情報として記憶し、メッセージと該メッセージに含まれる分割ジョブの実行順序と該メッセージが格納されている前記キューとを対応付けて分割ジョブ情報として記憶し、
前記文書処理手段は、前記キュー情報を参照して、夫々の前記キューの先頭に格納されているメッセージを認識し、前記記憶された分割ジョブ情報に基づいて、前記認識したメッセージに含まれる分割ジョブの実行順序を取得し、該実行順序が最も早い分割ジョブを含むメッセージを格納している前記キューからメッセージを取り出し、該メッセージに含まれる分割ジョブを実行する
ことを特徴とする請求項２に記載のクラウドコンピューティングシステム。
【請求項４】
前記格納手段は、前記文書処理のジョブを文書のページ単位に分割して前記分割ジョブを生成する
ことを特徴とする請求項２または請求項３に記載のクラウドコンピューティングシステム。
【請求項５】
前記格納手段は、前記画像形成装置から受信した文書処理に関する要求内容が、帳票データと印刷データを重ね合わせるフォーム合成処理である場合に、該フォーム合成処理に含まれる帳票データの生成処理、印刷データの生成処理、または帳票データと印刷データとの合成処理に対応する分割ジョブを生成する
ことを特徴とする請求項２または請求項３に記載のクラウドコンピューティングシステム。
【請求項６】
画像形成装置からジョブの処理依頼を受信したことに応じて、前記ジョブに対応するメッセージを記憶手段に格納する、要求受信プログラムを実行することにより実現される要求受信部と、前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は、該取得したメッセージに基づく処理を行う、バックエンド処理プログラムを実行することにより実現されるバックエンド処理部と、前記記憶手段に格納されたメッセージを可視状態または不可視状態にする制御部とを有するクラウドコンピューティングシステムにおける文書処理方法であって、
前記要求受信部が、前記画像形成装置からのジョブの処理依頼を受信し、該受信したジョブを分割し、該分割された夫々のジョブの実行順序を決定し、該分割した夫々のジョブに対応するメッセージを複数の前記記憶手段に格納する工程と、
前記バックエンド処理部が、前記決定された分割ジョブの実行順序に従って、前記複数の記憶手段のいずれかに格納されているメッセージを取り出し、該取り出したメッセージに基づき前記分割されたジョブの文書処理を行う工程と
前記制御部が、前記メッセージが特定の前記バックエンド処理部により取得されたことに応じて、同一の前記メッセージが他の前記バックエンド処理部に取得されないように前記メッセージを不可視状態とし、前記特定のバックエンド処理部による処理が終了せずに前記メッセージが前記不可視状態となってから所定時間経過した後、前記メッセージを前記不可視状態から前記可視状態へと変更し、前記他のバックエンド処理部が前記メッセージを取得できるように制御する工程とを有する文書処理方法。
【請求項７】
請求項６に記載の文書処理方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドコンピューティングシステム、文書処理方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、インターネット上のサーバにて動作する各種アプリケーションを利用可能な、クラウドコンピューティングシステムという技術が注目されている。クラウドクラウドコンピューティングシステムは、サーバの負荷やトランザクションの多寡に応じて、仮想的なコンピュータ（Virtual Machine ：ＶＭ）を複数起動させることを容易にできる。その結果、複数のＶＭを用いて処理を実行することで、並列処理が可能となる。クラウドコンピューティングシステムを利用したサービスの１つとして、ドライバレスな印刷サービスが考えられる。この印刷サービスでは、ＰＣ（Personal Computer ）にドライバをインストールすることなく、ＶＭ上のアプリケーションサーバに印刷データ変換サービスを実装し、実装された印刷データ変換サービスを用いて、印刷データを生成する。
【０００３】
なお、特許文献１は、印刷データ変換処理を行う演算装置（デコンポーザ）の起動数を、印刷データの１ページあたりの情報量やページ数より決定し、適切な数の演算装置を用いて並列処理する印刷制御装置を提案している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２９３３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般に、システムが複数の演算装置を用いて並列処理を行う場合には、演算装置の数と処理対象の数との間の関係を決定する明確な基準がない。従って、処理に必要な最適な演算装置の数を求めることは困難である。
【０００６】
特許文献１が提案する印刷制御装置は、メモリの残容量等の、刻々と大きく変化する対象に基づいて演算装置の起動数を決定する。しかし、クラウドコンピューティングシステムにおいて、ＶＭの起動にはある程度の時間必要であるため、即時にＶＭの起動数を変化させることは困難である。例えば、システムがＶＭの起動時間を待ってから処理を開始した場合、処理の結果を出すために時間を要する。予めＶＭを起動させておくことも考えられるが、無駄にＶＭを起動させてしまう、もしくは起動すべきＶＭが足りないという状況が生じ得る。
【０００７】
また、従来、１つのコンテンツの印刷データ変換処理のジョブを並列処理可能な単位に分割し、複数のキューを用いて並列的に処理するシステムにおいて、複数のキューに格納されたジョブの適切な実行順序を決定して処理するシステムはなかった。
【０００８】
本発明は、処理依頼されたジョブを分割して分割ジョブを生成し、夫々の分割ジョブを適切な実行順序で文書処理するクラウドコンピューティングシステムの提供を目的とする。
【課題を解決するための手段】
【０００９】
本発明の一実施形態のクラウドコンピューティングシステムは、  画像形成装置からジョブの処理依頼を受信したことに応じて、前記ジョブに対応するメッセージを記憶手段に格納する、要求受信プログラムを実行することにより実現される要求受信部と、
前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は、該取得したメッセージに基づく処理を行う、バックエンド処理プログラムを実行することにより実現されるバックエンド処理部と、前記記憶手段に格納されたメッセージを可視状態または不可視状態にする制御部とを有するクラウドコンピューティングシステムである。前記要求受信部は、前記画像形成装置からのジョブの処理依頼を受信し、該受信したジョブを分割し、該分割された夫々のジョブの実行順序を決定し、該分割した夫々のジョブに対応するメッセージを複数の前記記憶手段に格納する格納手段を有し、前記バックエンド処理部は、前記決定された分割ジョブの実行順序に従って、前記複数の記憶手段のいずれかに格納されているメッセージを取り出し、該取り出したメッセージに基づき前記分割されたジョブの文書処理を行う文書処理手段を有し、前記制御部は、前記メッセージが特定の前記バックエンド処理部により取得されたことに応じて、同一の前記メッセージが他の前記バックエンド処理部に取得されないように前記メッセージを不可視状態とし、前記特定のバックエンド処理部による処理が終了せずに前記メッセージが前記不可視状態となってから所定時間経過した後、前記メッセージを前記不可視状態から前記可視状態へと変更し、前記他のバックエンド処理部が前記メッセージを取得できるように制御する。
【発明の効果】
【００１０】
本発明によれば、起動している全てのＶＭを用いて並列的に文書処理を行わせることが可能である。また、並列処理の際には、処理の順番を考慮して適切な順番で処理を行うことで、処理の高速化を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態のシステムの全体構成を示す図である。
【図２】文書処理システムが備えるサーバと、画像形成装置のハードウェア構成の例を示す図である。
【図３】本実施形態のシステムの機能ブロック図の例である。
【図４】文書処理システムを実現するプラットフォームシステムを示す図である。
【図５】キュー管理テーブルとメッセージ管理テーブルの例を示す図である。
【図６】キューに格納されるメッセージの例を示す図である。
【図７】メッセージのキューへの登録処理を説明するフローチャートである。
【図８】文書処理システムから画像形成装置に対する印刷データの送信処理を説明する図である。
【図９】バックエンド処理部による文書処理を説明するフローチャートである。
【図１０】キューに格納されるメッセージの例を示す図である。
【図１１】メッセージのキューへの登録処理を説明するフローチャートである
【図１２】バックエンド処理部による文書処理を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、本実施形態を添付の図面に基づいて説明する。まず、本実施形態で使用される用語の一般的な定義について説明する。ポーリングとは、クライアントがホストに要求をした処理の経過や完了を確認するために、クライアントが一定間隔でホストに処理の経過状況を問い合わせる処理である。コンテンツとは、例えば、文書データや画像データを組み合わせた電子データである。印刷データ変換処理とは、例えば、ユーザが印刷したいコンテンツを、ＭＦＰ（Multi Function Peripheral ）やプリンタ等の画像形成装置が印刷データへ変換する処理である。印刷データは、例えば、コンテンツを印刷データ処理によって変換処理したデータのことである。印刷データは、例えば、ＰＤＬ（Page Description Language ）、ＰＤＦ（Portable Document Format）、ラスタイメージ等である。
【００１３】
図１は、本実施形態のシステムの全体構成を示す図である。図１に示すシステムは、文書リポジトリ１０１、文書処理システム１０２、画像形成装置１０３とを備える。文書リポジトリ１０１と文書処理システム１０２と画像形成装置１０３とは、ネットワーク１００を介して接続されている。ネットワーク１００は、有線、無線を問わない。
【００１４】
文書リポジトリ１０１は、コンテンツを保存し、画像形成装置１０３からの要求に応じて、コンテンツを画像形成装置１０３に対して提供する処理装置である。画像形成装置１０３は、文書処理システム１０２に対して印刷要求を行い、この印刷要求に応答した文書処理システム１０２から印刷データを受信し、受信した印刷データを印刷処理する。画像形成装置１０３は、外部からのアクセスが制限されたローカルエリアに配置されており、ネットワーク１２０からファイアウォールで遮断されている。文書処理システム１０２は、複数のサーバ２００を含むサーバ群を備える。
【００１５】
文書処理システム１０２は、画像形成装置１０３から印刷要求を受け取り、文書リポジトリに保存されているコンテンツに対して印刷要求に応じた処理を実行して印刷データを生成し、生成した印刷データを画像形成装置１０３に送信する。文書処理システム１０２は、クラウドに設けられているクラウドコンピューティングシステムである。クラウドとは、クラウドコンピューティング環境におけるサーバ群が配置される領域のことである。クラウドコンピューティング環境においては、ユーザはコンピュータ処理をネットワーク経由でサービスとして利用する。クラウドに設けられた文書処理システム１０２から発する要求によりファイアウォール内部にアクセスすることはできない。従って、文書処理システム１０２は、画像形成装置１０３からの要求の応答を返すことによって、画像形成装置１０３に対して通信を行う。本実施形態の文書処理方法は、図１に示す文書処理システム１０２によって実現される。また、本実施形態のコンピュータプログラムは、この文書処理方法をコンピュータに実行させる。
【００１６】
図２は、文書処理システムが備えるサーバと、画像形成装置のハードウェア構成の例を示す図である。図２（Ａ）は、文書処理システム１０２が備えるサーバ２００のハードウェア構成の例を示す。このサーバ２００は、ＣＰＵ２０１、直接記憶部２０２、間接記憶部２０３、ネットワークインタフェース２０４を有する。
【００１７】
ＣＰＵ（Central Processing Unit）２０１は、所定のプログラムを実行し、サーバ２００の各種制御を指示する処理部である。直接記憶部２０２は、ＣＰＵ２０１がプログラムを実行する際に使用するワークメモリである。このプログラムは直接記憶部２０２にロードされる。直接記憶部２０２は、ＲＡＭ（Random Access Memory）を備える。間接記憶部２０３には、アプリケーションプログラム、ＯＳ（Operating System）を含む各種プログラムが記憶されている。間接記憶部２０３に記憶されている各種プログラムは、ＣＰＵ２０１がプログラムを実行する際に直接記憶部２０２へ移動する。間接記憶部２０３は、ＲＯＭ（Read Only Memory）またはＨＤＤ（Hard Disc Drive ）を備える。なお、ＣＰＵ２０１がマルチプロセッサであってもよい。ネットワークインタフェース２０６は、ネットワーク１００に接続されており、サーバ２００とネットワーク１００に接続されている他の装置との通信を媒介する。
【００１８】
図２（Ｂ）は、画像形成装置１０３のハードウェア構成の例を示す。画像形成装置１０３は、画像処理ユニット３０１と印刷ユニット３０７とを備える。画像処理ユニット３０１は、文書処理システム１０２から印刷データを取得し、この印刷データに対して所定の画像処理を実行する。印刷ユニット３０７は、画像処理ユニット３０１によって画像処理された印刷データを印刷する。
【００１９】
画像処理ユニット３０１は、ＣＰＵ３０２、直接記憶部３０３、間接記憶部３０４、ユーザインタフェース３０５、ネットワークインタフェース３０６を備える。ＣＰＵ３０２は、所定のプログラムを実行し、画像処理ユニット３０１の各種制御を指示するユニットである。直接記憶部３０３は、ＣＰＵ３０２がプログラムを実行する際に使用するワークメモリである。このプログラムは直接記憶部３０３にロードされる。直接記憶部３０３は、ＲＡＭにより実現される。間接記憶部３０４には、アプリケーションプログラムを含む各種プログラムが記憶されている。間接記憶部３０４に記憶されている各種プログラムは、ＣＰＵ３０２がプログラムを実行する際に直接記憶部３０３へ移動する。間接記憶部３０４は、ＳＳＤ（Solid State Drive ）またはＨＤＤにより実現される。ＣＰＵ３０２がマルチプロセッサであってもよい。ユーザインタフェース３０５は、ユーザからの入力を受け付ける機能を持つ。ユーザインタフェース３０５は、タッチパネルや、マウス、キーボードなどの機器を介してユーザからの入力を受け付ける。ネットワークインタフェース３０６は、ネットワーク１００に接続されており、ネットワーク１００に接続されている他の装置との通信を媒介する。
【００２０】
図３は、本実施形態のシステムの機能ブロック図の例である。文書リポジトリ１０１はＷｅｂサーバ部４０１１、文書蓄積部４０１２を備える。Ｗｅｂサーバ部４０１１は、文書処理システム１０２、画像形成装置１０３からのリクエストを受信し、各要求に応じた処理を行う。文書リポジトリ１０１は、例えば、画像形成装置１０３のウェブブラウザ４０３４から文書一覧取得のためのＨＴＴＰ要求を受け、文書蓄積部４０１２に保存されている各種コンテンツの情報を返す。文書蓄積部４０１２は、図２（Ｂ）の間接記憶部２０３によって実現される。文書リポジトリ１０１に保存されるコンテンツ、コンテンツの保存方法には特に指定はない。
【００２１】
文書処理システム１０２は、ストレージ４０２１、キューサービス４０２２、テーブル４０２３、フロントエンド処理部４０２５、バックエンド処理部４０２４を備える。ストレージ４０２１は、バックエンド処理部４０２４による処理の実行結果のデータを始めとする各種データを保存しておく機能を持つ。ストレージ４０２１は、図２（Ｂ）の間接記憶部２０３によって実現される。キューサービス４０２２は、キューを有する。キューサービス４０２２は、フロントエンド処理部４０２５とバックエンド処理部４０２４とが非同期でデータ通信できるようにする機能を持つ。また、キューサービス４０２２は、キューに追加されているメッセージを不可視、または可視にする機能を持つ。キューサービス４０２２は、図２（Ｂ）の間接記憶部２０３に保存されているキュープログラムが、直接記憶部２０２にロードされて、ＣＰＵ２０１により実行されることで実現される。また、キューサービス４０２２が有するキューは、間接記憶部２０３によって実現される。
【００２２】
テーブル４０２４は、処理の状態等の情報を保持する記憶部としての機能を有する。フロントエンド処理部４０２５は、画像形成装置１０３からジョブの処理依頼を受信したことに応じて、ジョブに対応するメッセージを記憶手段であるキューに格納する、要求受信部である。フロントエンド処理部４０２５は、要求受信プログラムを実行することにより実現される。フロントエンド処理部４０２５は、画像形成装置１０３からのジョブの処理依頼を受信し、該受信したジョブを分割する。フロントエンド処理部４０２５は、該分割された夫々のジョブの実行順序を決定し、該分割した夫々のジョブに対応するメッセージを複数のキューに格納する格納手段を有する。
【００２３】
具体的には、フロントエンド処理部４０２５が備える格納手段は、画像形成装置１０３から文書処理に関する要求（例えば、印刷要求、印刷データ要求）を受信する。印刷要求は、印刷データ変換処理を実行することを求める要求である。印刷データ要求は、印刷データ変換処理によって得られる印刷データを送信するように求める要求である。フロントエンド処理部４０２５は、キューサービス４０２２が有する複数のキューを介して、バックエンド処理部４０２４に対して処理内容を伝える機能を有する。フロントエンド処理部４０２５は、受信した要求内容に応じて、文書処理のジョブを並列処理可能な単位に分割して分割ジョブを生成するとともに夫々の分割ジョブの実行順序を決定した上で、該分割ジョブを含むメッセージを複数のキューに格納する。メッセージは、文書処理に関するジョブを含む情報である。
【００２４】
バックエンド処理部４０２４は、キューに対しメッセージの取得要求を定期的に行い、キューからメッセージを取得した場合は、該取得したメッセージに基づく処理を行う。バックエンド処理部４０２４は、バックエンド処理プログラムを実行することにより実現される。バックエンド処理部４０２４は、文書処理手段を有する。この文書処理手段は、フロントエンド処理部４０２５によって決定された分割ジョブの実行順序に従って、複数のキューのいずれかに格納されているメッセージを取り出す。そして、文書処理手段は、該取り出したメッセージに基づき分割されたジョブの文書処理を行い、該文書処理の結果を記憶手段に格納する。
【００２５】
具体的には、バックエンド処理部５０３１は、フロントエンド処理部４０２５によって決定された分割ジョブの実行順序に従って、キューからメッセージを取得する。バックエンド処理部５０３１は、取得したメッセージから分割ジョブを取り出し、取り出した分割ジョブを実行して文書処理を行い、文書処理結果を前記画像形成装置に返す。キューを用いてフロントエンド処理部４０２５からバックエンド処理部４０２４に対してジョブを受け渡すようにすることで、フロントエンド処理部４０２５とバックエンド処理部４０２４とが非同期で処理を実行することができる。
【００２６】
バックエンド処理部４０２４は、該バックエンド処理部４０２４に対応するサーバ２００のメモリに処理プログラムをロードし処理を行う。フロントエンド処理部４０２５の機能は、図２（Ｂ）の間接記憶部２０３に保存されているフロントエンド処理プログラムが、直接記憶部２０２にロードされて、ＣＰＵ２０１により実行されることで実現される。同様に、バックエンド処理部４０２４の機能は、図２（Ｂ）の間接記憶部２０３に保存されているバックエンド処理プログラムが、直接記憶部２０２にロードされて、ＣＰＵ２０１により実行されることで実現される。
【００２７】
画像形成装置１０３は、印刷処理部４０３１、印刷要求送信部４０３２、ユーザインタフェース４０３３、ウェブブラウザ４０３４を有する。印刷処理部４０３１は、印刷データの印刷処理を行う。印刷要求送信部４０３２は、ユーザインタフェース４０３３によって指定された印刷設定等を、文書処理システム１０２のフロントエンド処理部４０２５に送信し、その応答を受信するプログラムである。ユーザインタフェース４０３３は、ユーザが印刷装置１０３によって提供される各種アプリケーションを使用するためのインタフェースである。画像形成装置１０３は、ユーザインタフェース４０３３を介して入力されるユーザ操作に従って、各種アプリケーションを実行する。ウェブブラウザ４０３４は、ネットワーク１００を介して接続されているデバイス内に保存されているデータや情報をユーザが閲覧するようにする機能を有する。ウェブブラウザ４０３４は、図２（Ａ）の直接記憶部３０３に保存されているプログラムが、間接記憶部３０４にロードされ、ＣＰＵ３０２により実行されることで実現される。また、ユーザは、ウェブブラウザ４０３４を用いてネットワーク１００上に存在するコンテンツを閲覧し、ユーザインタフェース４０３３を用いて選択、印刷指示を行うことができる。
【００２８】
図４は、文書処理システムを実現するプラットフォームシステムを示す図である。ユーザは、文書処理システム１０２が備えるサーバ２００の物理ハードウェアリソースをコンピューティングリソースとして使用することができる。図４に示すプラットフォームシステムは、ロードバランサー５０１、ＶＭ（Virtual Machine ）５０２、５０３、ストレージサービス５０４、ファブリックコントローラ５０５を備える。ＶＭ５０２、５０３は、プラットフォームシステムの内部に複数設けられている。ＶＭは、仮想化技術によって物理的なサーバを論理的なコンピュータに分割し、分割された中で独立したオペレーティングシステムをもって動作する論理的なコンピュータである。この論理的なコンピュータの単位をインスタンスという。
【００２９】
ＶＭ５０２は、フロントエンド処理部５０２１、フロントエンド処理部エージェント５０２２を備える。フロントエンド処理部５０２１は、ロードバランサー５０１を介してユーザからの処理依頼を受信する。フロントエンド処理部５０２１は、外部ネットワークからの要求を受け付ける機能を有する。また、フロントエンド処理部は、後述するキュー５０４２を介してバックエンド処理部５０３１への処理依頼を送信する機能を有する。フロントエンド処理部５０２１の高い可用性を確保するために、外部ネットワークからの要求（例えばＨＴＴＰによる通信）は、ＶＭ５０２の外部にあるロードバランサー５０１を通じて行われる。ロードバランサー５０１は、外部ネットワークからの要求を一元的に管理し、同等な要求受信機能を有する複数のＶＭに対し、選択的に要求を転送する。フロントエンド処理部エージェント５０２２は、ＶＭ５０２の使用状況、フロントエンド処理部５０２１の稼動状態、ＶＭ５０２のリソースの使用状況、およびフロントエンド処理部５０２１のエラー情報を含む各種情報を収集する。フロントエンド処理部エージェント５０２２は、収集した各種情報をファブリックコントローラ５０５に定期的に送信する。
【００３０】
フロントエンド処理部５０３１は、フロントエンド処理部エージェント５０２２を介してのみ、ファブリックコントローラ５０５にアクセスすることができる。フロントエンド処理部５０２１、バックエンド処理部５０３１は、ファブリックコントローラ５０５によって管理されている。これにより、各インスタンスの拡張性と可用性が保証される。例えば、フロントエンド処理部５０２１、またはバックエンド処理部５０３１において、ある特定のインスタンスがサーバの故障によって停止した場合を想定する。この場合、ファブリックコントローラ５０５は、フロントエンド処理部エージェント５０２２、またはバックエンド処理部エージェント５０３２から定期通知を受け取れなくなる。定期通知を受け取らなくなったファブリックコントローラ５０５は、新しいインスタンスに処理が委譲されるようにＶＭに対して指示を出す。その結果、処理を実行しているインスタンス数が一定に保たれるため、処理の遅延を抑えることができる。
【００３１】
ＶＭ５０３は、バックエンド処理部５０３１、バックエンド処理部エージェント５０３２で構成される。バックエンド処理部５０３１は、キュー５０４２を介してフロントエンド処理部５０２１からの処理依頼を受信し、処理を行う。バックエンド処理部５０３１も、フロントエンド処理部５０２１と同様に、バックエンド処理部エージェント５０３２を介してファブリックコントローラ５０５にアクセスする。
【００３２】
フロントエンド処理部５０２１とバックエンド処理部５０３１は、スケールアウトすることが可能である。スケールアウトとは、ＶＭ５０２、５０３が増加し、フロントエンド処理部５０２１、バックエンド処理部５０３１のインスタンスが増加することをいう。フロントエンド処理部５０２１のスケールアウトを行うことで、ユーザ数の増加などによりトラフィックが増加した場合でも、負荷を分散させることができる。また、バックエンド処理部５０３１のスケールアウトを行うことで、バックエンド処理部１つ当たりのデータ処理量が減少する。これにより、ユーザからの処理依頼に対する結果をより早く返すことができる。
【００３３】
ストレージサービス５０４は、ストレージ５０４１、複数のキュー５０４２、複数のテーブル５０４３を備える。キュー５０４２は、フロントエンド処理部５０２１とバックエンド処理部５０３１とが非同期でデータ通信できるようにする。フロントエンド処理部５０２１とバックエンド処理部５０３１は、キュー５０４２に対し各種指示を出すことで、非同期でデータ通信する。フロントエンド処理部５０２１がキュー５０４２に対して行う指示とは、メッセージの追加指示である。バックエンド処理部５０３１がキュー５０４２に対して行う指示とは、メッセージの取得指示、メッセージの削除指示である。
【００３４】
フロントエンド処理部５０２１とバックエンド処理部５０３１が非同期でデータ通信する一連の動作について説明する。フロントエンド処理部５０２１は、ユーザからの処理依頼に応じたメッセージを作成し、メッセージをキューに追加するようにキュー５０４２に追加指示を送信する。追加指示を受信したキュー５０４２は、キューにメッセージを追加する。バックエンド処理部５０３１は、メッセージを取得するために、キュー５０４２に取得指示を出す。取得指示を受けたキュー５０４２は、メッセージと、メッセージ毎に固有に割り振られたメッセージＩＤと、受取ＩＤとを取得指示に対するレスポンスとしてバックエンド処理部５０３１に返す。メッセージＩＤとは、メッセージを一意に定めるためにメッセージごとに割り振られた固有の情報である。受取ＩＤは、処理が終了したバックエンド処理部５０３１がメッセージを削除指示する際に使用する。メッセージと、メッセージＩＤと、受取ＩＤは、関連付けされて保存される。
【００３５】
バックエンド処理部５０３１は、処理依頼を完了すると、受取ＩＤに対応するメッセージの削除指示をキュー５０４２に対して行う。削除指示を受けたキュー５０４２は、バックエンド処理部５０３１が指示した受取ＩＤに対応するメッセージをキューから削除する。これにより、削除指示を出したバックエンド処理部５０３１以外のバックエンド処理部５０３１が同じメッセージを処理するという冗長な処理を防ぐことができる。
【００３６】
次に、キュー５０４２に追加されているメッセージを不可視、または可視にする機能について詳細に説明する。不可視機能は、バックエンド処理部５０３１がキューからメッセージを取得した際に、他のバックエンド処理部５０３１が同一のメッセージを取得しないように、他のバックエンド処理部５０３１がメッセージを取得できない状態（不可視状態）にする機能である。ここで、再度メッセージが取得可能な状態（可視状態）になるまでの時間を不可視時間と呼ぶ。フロントエンド処理部５０２１がキューを作成する際に任意の時間を不可視時間として設定できる。不可視時間中にバックエンド処理部５０３１の処理が終了しない場合、可視状態になり、バックエンド処理部５０３１がメッセージを再取得し処理する。
【００３７】
また、バックエンド処理部５０３１が、処理中に何らかの理由でクラッシュし、処理の継続が不可能になった場合でも、不可視時間の間は再処理を行うことができない。また、処理時間が不可視時間を超過した場合には、処理が完了していないメッセージが可視状態になり、他のバックエンド処理部５０３１により処理が開始してしまうために、削除することができない。そのため、キュー５０４２に設定される不可視時間は、キュー５０４２に格納されている任意のメッセージの処理時間よりも長くする必要がある。しかし、不可視時間を長くし過ぎると、バックエンド処理部５０３１がクラッシュした場合に、再処理までに時間がかかってしまう。従って、フロントエンド処理部５０２１が、キュー５０４２にメッセージを格納する際に、メッセージに含まれるジョブ（分割ジョブ）の処理時間が近くなるように（実行処理コストが同じになるように）メッセージをグループ化する。フロントエンド処理部５０２１は、グループ化されたメッセージをキュー５０４２に格納する。
【００３８】
ストレージ５０４１は、データ保存に利用される記憶領域を提供する。ストレージ５０４１にはメタデータを関連付けることができる。メタデータは名前と値のペアで表現される。メタデータはデータと独立して取得、設定することができる。テーブル５０４３は、ストレージサービス５０４上に複数設けられる。夫々のテーブル５０４３が一意の名前を持つ。本実施形態では、テーブル５０４３が、キュー管理テーブル６０１（図５（Ａ）を参照）とメッセージ管理テーブル６０２（図５（Ｂ）を参照）とを有する。プラットフォーム利用者は、夫々のテーブルの名前に基づいてテーブルにアクセスすることができる。テーブル５０４３は、主にサービスの状態を保持するために用いられる。テーブル５０４３は、エンティティと呼ばれる基本的なデータ項目から構成される。エンティティは一連のプロパティで構成される。プロパティはエンティティ内の１つの値を表す。本実施形態では、テーブルを表形式で表現する。表の行をエンティティ、列をプロパティと呼ぶ。
【００３９】
図５は、キュー管理テーブルとメッセージ管理テーブルの例を示す図である。図５（Ａ）は、キュー管理テーブル６０１の例を示す。キュー管理テーブル６０１は、夫々のキュー５０４２に格納されたメッセージに関する情報（キュー情報）を管理するテーブルである。具体的には、キュー管理テーブル６０１は、キューＩＤとメッセージＩＤリストといったデータ項目を有する。キューＩＤは、キューを一意に識別する識別情報である。メッセージＩＤリストは、キューに格納されているメッセージの識別情報であるメッセージＩＤのリストである。図４中のフロントエンド処理部５０２１が、キュー管理テーブル６０１にキュー情報を格納する。夫々のキューに格納されているメッセージは、フロントエンド処理部５０２１によってグループ化されたメッセージである。具体的には、フロントエンド処理部５０２１は、メッセージに含まれるジョブ（分割ジョブ）の実行処理コスト（例えば処理時間）が同じなるようにメッセージをグループ化する。すなわち、フロントエンド処理部５０２１が備える格納手段は、実行処理コストが同じである分割ジョブを含むメッセージを同じキューに格納して、キューとメッセージとの対応情報をキュー情報として所定の記憶部（ストレージ）に記憶する。
【００４０】
図５（Ｂ）は、メッセージ管理テーブル６０２の例を示す図である。メッセージ管理テーブル６０２は、メッセージＩＤ、実行順、キューＩＤ、処理といったデータ項目を有する分割ジョブ情報を格納する。メッセージＩＤは、メッセージの識別情報である。実行順は、当該メッセージＩＤが示すメッセージに含まれるジョブ（分割ジョブ）の実行順序である。キューＩＤは、当該メッセージＩＤが示すメッセージが格納されているキューの識別情報である。処理は、各メッセージの処理状況を示す。「処理中」は、バックエンド処理部５０３１がメッセージを処理していることを示す。「未処理」は、バックエンド処理部５０３１がメッセージを処理していないことを示す。フロントエンド処理部５０２１が、図５（Ｂ）に示す分割ジョブ情報をストレージに記憶する。すなわち、フロントエンド処理部５０２１は、メッセージと該メッセージに含まれる分割ジョブの実行順序と該メッセージが格納されているキューとを対応付けて分割ジョブ情報として記憶部に記憶する。
【００４１】
バックエンド処理部５０３１（が備える文書処理手段）は、処理の開始時に、キュー管理テーブル６０１にアクセスしてキュー情報を参照する。そして、バックエンド処理部５０３１は、各キューのリストの先頭のメッセージのメッセージＩＤ（例えば、図５（Ａ）に示すＭｅｓｓａｇｅ３，Ｍｅｓｓａｇｅ１）を取得する。これにより、バックエンド処理部５０３１は、夫々のキューの先頭に格納されているメッセージを認識する。そして、バックエンド処理部５０３１は、取得した各キューの先頭のメッセージのメッセージＩＤと、メッセージ管理テーブル６０２に格納された分割ジョブ情報とを用いて、メッセージを取得するキューを選択する。具体的には、バックエンド処理部５０３１は、分割ジョブ情報に基づいて、上記認識したメッセージに含まれる分割ジョブの実行順序を取得する。バックエンド処理部５０３１は、各キューの先頭のメッセージの中で、メッセージに含まれる分割ジョブの実行順序が最も早く、かつ、処理中ではないメッセージを選択する。そして、バックエンド処理部５０３１は、選択したメッセージが格納されているキューにアクセスしてメッセージを取り出し、取り出したメッセージに含まれる分割ジョブを実行する。すなわち、バックエンド処理部５０３１は、取得した実行順序が最も早い分割ジョブを含むメッセージを格納しているキューからメッセージを取り出し、該メッセージに含まれる分割ジョブを実行する。これにより、実行されるべき順序を保ってメッセージを処理することができる。
【００４２】
図６は、キューに格納されるメッセージの例を示す図である。図６に示すメッセージは、文書処理システム１０２が画像形成装置１０３から受ける印刷要求が複数のページを含むコンテンツに対応する印刷データである場合における、キュー５０４２に格納されるメッセージである。メッセージは、ＭｅｓｓａｇｅＩＤ、処理内容、Ｄｅｖｉｃｅ、ＣｏｎｔｅｎｔｓＩＤ、Ｐａｇｅ、Ｃｏｎｔｅｎｔｓ  Ｐａｔｈを含む。ＭｅｓｓａｇｅＩＤはメッセージＩＤである。処理内容は、実行すべきジョブの内容を示す。この例では、処理内容として印刷データ変換処理が指定されている。Ｄｅｖｉｃｅは、印刷要求の要求元の処理装置（画像形成装置１０３）である。ＣｏｎｔｅｎｔｓＩＤは、文書リポジトリ１０１の文書蓄積部４０１２が保持しているコンテンツの識別情報である。このコンテンツは、印刷データ変換処理の対象となるコンテンツである。Ｐａｇｅは、印刷データ変換処理の対象のページの番号である。Ｃｏｎｔｅｎｔｓ  Ｐａｔｈは、印刷データ変換処理の対象となるコンテンツが保存されている文書リポジトリ１０１上のパスである。メッセージは、文書リポジトリ１０１へのアクセスに必要なアカウント名や、パスワードなども含む。メッセージに格納する情報は、自由に変化させることができるので、必要な情報を格納することで、任意のコンテンツに対して、任意の処理をすることができるようになる。
【００４３】
図７乃至９を用いて、本発明の実施例１の文書処理について説明する。図７は、メッセージのキューへの登録処理を説明するフローチャートである。まず、画像形成装置１０３が、ウェブブラウザ４０３４を用いて指定された、文書リポジトリ１０１のＷｅｂサーバ部４０１１に対して文書一覧を要求し（ステップＳ１）、文書一覧情報を取得する。取得される文書一覧情報のフォーマットは、画像形成装置が理解できるフォーマットであれば、特に指定はない。次に、画像形成装置１０３が、取得した文書一覧情報をウェブブラウザ４０３４に表示する（ステップＳ２）。続いて、画像形成装置１０３が、表示された文書一覧情報の中から印刷を行う文書を選択する（ステップＳ３）。文書の選択方法は、タッチパネルや、キーボード、マウス等のユーザインタフェース４０３３を介して行われる。
【００４４】
次に、画像形成装置１０３が、文書処理システム１０２のフロントエンド処理部４０２５に印刷要求を送信する（ステップＳ４）。印刷要求は、選択された文書を一意に識別する情報と印刷する際の設定情報等を含む。選択された文書を一意に識別する情報は、文書リポジトリ１０１上の文書の保存場所を示す情報を含む。文書リポジトリ１０１がコンテンツを保存する際に各文書に一意のＩＤを割り振っておき、このＩＤを用いて文書を一意に識別することも可能である。画像形成装置１０３が印刷要求を送信した後、画像形成装置１０３が、印刷データ受信処理（ステップＳ５）を行う。
【００４５】
フロントエンド処理部４０２５が、画像形成装置１０３から送信された印刷要求を受信する（ステップＳ６）。フロントエンド処理部４０２５が、受信した印刷要求に含まれる情報に基づいて、文書リポジトリ１０１から処理対象のコンテンツの情報を取得する（ステップＳ７）。続いて、フロントエンド処理部４０２５が、ページ毎に印刷データ変換処理されるように、画像形成装置１０３から受け付けた印刷要求が示すジョブを並列処理可能な単位のジョブに分割する（ステップＳ８）。すなわち、フロントエンド処理部４０２５（が備える格納手段）は、文書処理のジョブを文書のページ単位に分割して分割ジョブを生成する。フロントエンド処理部４０２５は、ページ順に従って印刷データ変換処理されるように、各ページの印刷データ変換処理の実行順（図５（Ｂ）を参照）を、ページ順に従って１から順に割り振る。フロントエンド処理部４０２５は、各実行順に現在メッセージ管理テーブル６０２に格納されているメッセージの中で最も大きい実行順の値を足し合わせる。これにより、ページ番号の小さいものから印刷データ変換処理が行われることになる。フロントエンド処理部４０２５は、さらに、ページ毎に印刷データ変換処理に必要となる処理時間を算出する。
【００４６】
次に、フロントエンド処理部４０２５が、分割ジョブを含むメッセージに対応する分割ジョブ情報をメッセージ管理テーブル６０２に登録する（ステップＳ９）。登録される分割ジョブ情報は、各メッセージを一意に識別するメッセージＩＤ、各メッセージの実行順、そのメッセージが格納されるキューを一意に識別するためのキューＩＤ、処理状況を示す処理である。Ｓ８において算出した印刷データ変換処理の処理時間よりも大きい不可視時間であって、所定の時間範囲内にある不可視時間が設定されたキューが存在している場合、フロントエンド処理部４０２５がそのキューのＩＤをキューＩＤに登録する。上記時間範囲は、文書処理システム１０２によるサービスの提供者が自由に決めることができる。時間範囲の大きさは、上記ステップＳ８で行った処理時間の算出処理に依存する。処理時間の算出が正確に行われる場合は、時間範囲は小さくてもよい。逆に、処理時間の算出が正確ではない場合は、時間範囲としてある程度の大きさをとる必要がある。また、上記不可視時間が設定されたキューが存在していない場合には、フロントエンド処理部４０２５が、所定の不可視時間を設定したキューを作成し、そのキューのＩＤキューＩＤに登録する。そして、フロントエンド処理部４０２５が、メッセージ管理テーブル６０２の処理に「未処理」を設定する。
【００４７】
次に、フロントエンド処理部４０２５が、メッセージ管理テーブル６０２に登録された分割ジョブ情報に含まれるメッセージＩＤを、キュー管理テーブル６０１に登録する（ステップＳ１０）。具体的には、フロントエンド処理部４０２５が、メッセージ管理テーブル６０２に登録された分割ジョブ情報に含まれるキューＩＤとメッセージＩＤとを取得する。そして、フロントエンド処理部４０２５が、キュー管理テーブル６０１における、上記取得したキューＩＤに対応するメッセージＩＤリストに、上記取得したメッセージＩＤを追加する。次に、フロントエンド処理部４０２５が、各メッセージをキュー５０４２に登録する（ステップＳ１１）。ステップＳ１１の処理により、フロントエンド処理部４０２５が、印刷データ変換処理をバックエンド処理部４０２４に委譲したことになる。
【００４８】
図８は、文書処理システムから画像形成装置に対する印刷データの送信処理を説明する図である。図８中のステップＳ２１乃至Ｓ２８が、図７のステップＳ５の印刷データの受信処理に対応する。まず、画像形成装置１０３が、印刷データ変換処理された文書を取得するために、フロントエンド処理部４０２５に対して印刷データ要求を送信する（ステップＳ２１）。印刷データ要求には、送信を求める文書のＩＤ（文書ＩＤ）が含まれる。続いて、フロントエンド処理部４０２５が、画像形成装置１０３からの印刷データ要求を受け、ストレージ４０２１に受信した文書ＩＤに対応する印刷データが保存されているかを判断する（ステップＳ２２）。
【００４９】
ストレージ４０２１に受信した文書ＩＤに対応する印刷データが保存されている場合は、ステップＳ２３に進む。ストレージ４０２１に受信した文書ＩＤに対応する印刷データが保存されてない場合は、ステップＳ２４に進む。ステップＳ２３において、フロントエンド処理部４０２５が、ストレージ４０２１から印刷データを取得し、画像形成装置１０３に送信するためのレスポンスに印刷データを格納し（ステップＳ２３）、ステップＳ２５に進む。フロントエンド処理部４０２５は、画像形成装置１０３との間で決められている任意のフォーマットでレスポンスに印刷データを格納する。ステップＳ２４においては、フロントエンド処理部が、印刷データが存在していないことを示す情報をレスポンスに格納し（ステップＳ２４）、ステップＳ２５に進む。そして、フロントエンド処理部４０２５が、レスポンスを印刷データ要求に対する応答として画像形成装置１０３に返す（ステップＳ２５）。
【００５０】
次に、画像形成装置１０３が、フロントエンド処理部４０２５からレスポンスを受信する（ステップＳ２６）。続いて、画像形成装置１０３が、受信したレスポンスに印刷データが含まれているかを判断する（ステップＳ２７）。受信したレスポンスに印刷データが含まれていない場合、ステップＳ２１に戻る。受信したレスポンスに印刷データが含まれている場合は、画像形成装置１０３が、印刷データに対して印刷処理を行う（ステップＳ２８）。
【００５１】
図９は、バックエンド処理部による文書処理を説明するフローチャートである。図９では、バックエンド処理部５０３１のインスタンス数は１として説明するが、複数のバックエンド処理部５０３１が存在している場合でも同じように動作する。すなわち、複数のバックエンド処理部５０３１を用いた並列処理が可能である。
【００５２】
まず、バックエンド処理部５０３１が、キュー５０４２をポーリングする（ステップＳ３１）。フロントエンド処理部４０２５からのメッセージの通知はキュー５０４２を介して行われるため、バックエンド処理部５０３１は、処理がない間、常にキューをポーリングする。続いて、バックエンド処理部５０３１が、ポーリングの結果、キュー５０４２にメッセージが登録されているかを判断する（ステップＳ３２）。キュー５０４２にメッセージが登録されていない場合は、ステップＳ３１に戻る。キュー５０４２にメッセージが登録されている場合は、ステップＳ３３に進む。
【００５３】
次に、バックエンド処理部４０２４が、キュー管理テーブル６０１にアクセスし、夫々のキューＩＤに対応するメッセージＩＤリストの先頭に登録されているメッセージＩＤを取得する（ステップＳ３３）。続いて、バックエンド処理部４０２４が、メッセージ管理テーブル６０２から、ステップＳ３３で取得したメッセージＩＤのうち、実行順序が最も早いメッセージのメッセージＩＤに対応するエンティティを取得する（ステップＳ３４）。ステップＳ３４において取得されるエンティティに対応するメッセージが、最先に処理されるべきメッセージである。
【００５４】
次に、バックエンド処理部４０２４が、取得したエンティティに含まれる処理を参照して、メッセージに含まれるジョブが処理中であるかを判断する（ステップＳ３５）。ジョブが処理中でない場合は、エンティティに含まれる処理に「未処理」を設定して、ステップＳ３６に進む。ジョブが処理中である場合は、エンティティに含まれる処理に「処理中」を設定して、ステップＳ３７に進む。ステップＳ３７において、バックエンド処理部４０２４が、実行順序が次に早いメッセージに対応するエンティティをメッセージ管理テーブル６０２から取得し（ステップＳ３７）、ステップＳ３５に戻る。
【００５５】
ステップＳ３６においては、バックエンド処理部４０２４が、ステップＳ３４で取得したエンティティに含まれるキューＩＤに対応するキューからメッセージを取得する（ステップＳ３６）。続いて、バックエンド処理部４０２４は、取得したメッセージに基づき、メッセージに含まれるジョブを実行する（ステップＳ３８）。具体的には、バックエンド処理部４０２４は、メッセージに含まれる文書リポジトリ１０１上のパスにアクセスし、指定のページのコンテンツを取得する。そして、バックエンド処理部４０２４が、印刷要求（図７のステップＳ４）に含まれる、印刷する際の設定情報に従い、コンテンツを印刷データに変換する（ステップＳ３８）。
【００５６】
次に、バックエンド処理部４０２４が、印刷データをストレージ４０２１に格納する（ステップＳ３９）。バックエンド処理部４０２４は、ストレージ４０２１に、データを一意に識別可能な情報（例えばコンテンツＩＤ）をメタデータとして与える。続いて、バックエンド処理部４０２４が、メッセージ管理テーブル６０２、キュー管理テーブル６０１を更新する（ステップＳ４０）。具体的には、バックエンド処理部４０２４は、メッセージ管理テーブル６０２から、処理が終了したメッセージに対応するエンティティを削除する。また、バックエンド処理部４０２４が、キュー管理テーブル６０１から、メッセージを取得したキューのキューＩＤに対応するメッセージＩＤリストを更新する。続いて、バックエンド処理部４０２４が、処理が終了したメッセージをキューから削除する（ステップＳ４１）。
【００５７】
実施例１の文書処理システムによれば、起動している全てのＶＭを用いて、印刷データ変換を行うことが可能となり、コストを抑えることができる。また、実施例１の文書処理システムによれば、ページ順に従った適切な順序で印刷データ変換を実行することができる。
【００５８】
次に、実施例２について説明する。実施例２の文書処理システムの構成は、実施例１の文書処理システムの構成と同様である。実施例２の文書処理システムは、帳票データと印刷データとを重ね合わせる処理（フォーム合成処理）を実行する。フォーム合成処理には、帳票データの生成処理（以下、フォーム登録処理と記述）、印刷データの生成処理（以下、印刷データ変換処理と記述）、帳票データと印刷データとの合成処理（以下、合成処理と記述）が含まれる。
【００５９】
フロントエンド処理部４０２５（が備える格納手段）は、画像形成装置１０３から受信した文書処理に関する要求内容がフォーム合成処理である場合に、以下の処理を実行する。フロントエンド処理部４０２５は、該フォーム合成処理に含まれるフォーム登録処理、印刷データ変換処理、または合成処理に対応する分割ジョブを生成する。そして、フロントエンド処理部４０２５は、夫々の分割ジョブの実行順序を決定した上で、該分割ジョブを複数のキューに格納する。
【００６０】
図１０は、実施例２においてキューに格納されるメッセージの例を示す図である。図１０（Ａ）は、フォーム登録処理用のメッセージ例である。図１０（Ｂ）は、印刷データ変換用処理のメッセージ例である。図１０（Ｃ）は、合成処理用のメッセージ例である。図１０（Ａ）に示すフォーム登録処理用のメッセージは、ＭｅｓｓａｇｅＩＤ、処理内容、ＦｏｒｍＩＤ、Ｆｏｒｍ  Ｐａｔｈ、Ｓｔｏｒｅ  Ｐａｔｈを有する。ＭｅｓｓａｇｅＩＤはメッセージＩＤである。処理内容は、実行すべきジョブの内容を示す。この例では、処理内容としてフォーム登録が指定されている。ＦｏｒｍＩＤは、フォーム合成に用いるフォームデータを一意に識別する識別情報である。Ｆｏｒｍ  Ｐａｔｈは、フォームデータが保存されている場所へのパスである。Ｓｔｏｒｅ  Ｐａｔｈは、フォームの登録先のパスである。なお、フォーム登録処理用のメッセージは、文書リポジトリ１０１へのアクセスに必要なアカウント名や、パスワードなども有する。
【００６１】
図１０（Ｂ）に示す印刷データ変換用のメッセージは、ＭｅｓｓａｇｅＩＤ、処理内容、ＣｏｎｔｅｎｔｓＩＤ、Ｐａｇｅ、Ｃｏｎｔｅｎｔｓ  Ｐａｔｈ、Ｓｔｏｒｅ  Ｐａｔｈを有する。このメッセージでは、処理内容として印刷データ変換が指定されている。ＣｏｎｔｅｎｔｓＩＤ、Ｐａｇｅ、Ｃｏｎｔｅｎｔｓ  Ｐａｔｈ、Ｓｔｏｒｅ  Ｐａｔｈを有する。ＣｏｎｔｅｎｔｓＩＤは、文書リポジトリ１０１の文書蓄積部４０１２が保持しているコンテンツの識別情報である。このコンテンツは、印刷データ変換処理の対象となるコンテンツである。Ｐａｇｅは、印刷データ変換処理の対象のページの番号である。Ｃｏｎｔｅｎｔｓ  Ｐａｔｈは、印刷データ変換処理の対象となるコンテンツが保存されている文書リポジトリ１０１上のパスである。Ｓｔｏｒｅ  Ｐａｔｈは、変換後のデータの保存先へのパスである。
【００６２】
図１０（Ｃ）に示す合成処理用のメッセージは、ＭｅｓｓａｇｅＩＤ、処理内容、Ｃｏｎｔｅｎｔｓ  Ｐａｔｈ、Ｆｏｒｍ  Ｐａｔｈを有する。このメッセージでは、処理内容としてフォーム合成が指定されている。Ｃｏｎｔｅｎｔｓ  Ｐａｔｈは、フォーム合成に用いる印刷データが保存されている場所へのパスである。Ｆｏｒｍ  Ｐａｔｈは、フォーム合成に用いるフォームデータが保存されている場所へのパスである。
【００６３】
図１１は、実施例２における、メッセージのキューへの登録処理を説明するフローチャートである。図１１中に示すステップＳ５１乃至Ｓ５３は、図７中に示すステップＳ１乃至Ｓ３と同様である。また、図１１中に示すステップＳ５６乃至Ｓ５８は、図７中に示すステップＳ５乃至Ｓ７と同様である。図１１のステップＳ５４において、画像形成装置１０３が、フォーム合成に用いるフォームデータを選択する（ステップＳ５４）。ステップＳ５４においては、画像形成装置１０３は、ウェブブラウザ４０３４を用いて、ネットワーク１００上に存在するフォームデータを選択する。続いて、画像形成装置１０３が、選択された文書を一意に識別する情報、印刷する際の設定情報、フォームデータを一意に識別する情報を送信する。選択された文書を一意に識別するための情報は、文書リポジトリ１０１上の文書の保存場所を示す情報である。文書リポジトリ１０１にコンテンツを保存する際に各文書に一意になるようにＩＤを割り振っておき、割り振られたＩＤを用いて一意に識別することも可能である。また、フォームデータを一意に識別するための情報は、フォームデータの保存場所を示す情報（フォームＩＤ）である。
【００６４】
ステップＳ５９において、文書処理システム１０２のフロントエンド処理部４０２５が、フォーム登録処理、印刷データ変換処理、または合成処理に対応する分割ジョブ情報をメッセージ管理テーブル６０２に登録する（ステップＳ５９）。フロントエンド処理部４０２５は、例えば、フォーム登録処理に対応する分割ジョブ情報、印刷データ変換処理に対応する分割ジョブ情報、合成処理に対応する分割ジョブ情報の順に、分割ジョブ情報を登録する。フロントエンド処理部４０２５は、少なくとも印刷データ変換処理に対応する分割ジョブ情報については、ページ順に印刷データ変換処理されるように、メッセージ管理テーブル６０２において、各ページの印刷データ変換処理の実行順序を割り振る。
【００６５】
次に、フロントエンド処理部４０２５が、メッセージ管理テーブル６０２に登録された分割ジョブ情報に含まれるメッセージＩＤを、キュー管理テーブル６０１に登録する（ステップＳ６０）。そして、フロントエンド処理部４０２５が、各メッセージをキューに登録する（ステップＳ６１）。なお、実施例２における文書処理システムから画像形成装置に対する印刷データの送信処理は、図８を参照して説明した印刷データの送信処理と同様である。
【００６６】
図１２は、実施例２における、バックエンド処理部による文書処理を説明するフローチャートである。図１２では、バックエンド処理部５０３１のインスタンス数は１として説明するが、複数のバックエンド処理部５０３１が存在している場合でも同じように動作する。すなわち、複数のバックエンド処理部５０３１を用いた並列処理が可能である。図１２のステップＳ７１乃至Ｓ７７は、図９のステップＳ３１乃至Ｓ３７と同様である。また、図１２のステップＳ８８は、図９のステップＳ４０と同様である。
【００６７】
図１２のステップＳ７８において、バックエンド処理部５０３１が、キューから取得したメッセージに含まれる処理内容がフォーム登録であるかを判断する（ステップＳ７８）。キューから取得したメッセージに含まれる処理内容がフォーム登録である場合は、ステップＳ７９に進む。キューから取得したメッセージがフォーム登録でない場合は、ステップＳ８１に進む。
【００６８】
ステップＳ７９において、バックエンド処理部５０３１が、取得したメッセージに含まれるＦｏｒｍ  Ｐａｔｈ（図１０（Ａ）を参照）に基づいて、フォームデータを取得する（ステップＳ７９）。そして、バックエンド処理部５０３１が、取得したフォームデータをストレージ５０４１に保存する（ステップＳ８０）。バックエンド処理部５０３１は、取得したメッセージに含まれるフォームＩＤ（図１０（Ａ）を参照）もストレージ５０４１に保存する。
【００６９】
ステップＳ８１において、バックエンド処理部５０３１が、キューから取得したメッセージがフォーム合成であるかを判断する（ステップＳ８１）。キューから取得したメッセージがフォーム合成である場合は、ステップＳ８５に進む。キューから取得したメッセージがフォーム合成でない場合は、ステップＳ８５に進む。
【００７０】
ステップＳ８２において、バックエンド処理部５０３１が、キューから取得したメッセージ（図１０（Ｃ）を参照）に含まれるＦｏｒｍ  Ｐａｔｈに基づいて、ストレージ５０４１からフォームデータを取得する（ステップＳ８２）。続いて、バックエンド処理部５０３１が、メッセージに含まれるＣｏｎｔｅｎｔｓ  Ｐａｔｈに基づいて、ストレージ５０４１から印刷データを取得する（ステップＳ８３）。そして、バックエンド処理部５０３１が、印刷データとフォームデータとを合成し（ステップＳ８４）、ステップＳ８８に進む。
【００７１】
ステップＳ８５において、バックエンド処理部５０３１が、取得したメッセージ（図１０（Ｂ）を参照）に含まれるＣｏｎｔｅｎｔｓ  Ｐａｔｈに基づいて、文書リポジトリ１０１から印刷変換処理対象のコンテンツを取得する（ステップＳ８５）。バックエンド処理部５０３１が、取得したコンテンツを印刷データ変換する（ステップＳ８６）。そして、バックエンド処理部５０３１が、印刷データ変換によって得られた印刷データをストレージ５０４１に格納し（ステップＳ８７）、ステップＳ８８に進む。
【００７２】
実施例２の文書処理によれば、文書処理システム１０２がフォーム合成をする前に、フォームデータの登録処理、印刷データ変換処理を行うことができる。従って、フォーム合成をするために必要なジョブの実行を適切な順序で行うことができる。
【００７３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００７４】
１０１  文書リポジトリ
１０２  文書処理システム
１０３  画像形成装置
【図１】
0005623139.tif 000002
【図２】
0005623139.tif 000003
【図３】
0005623139.tif 000004
【図４】
0005623139.tif 000005
【図５】
0005623139.tif 000006
【図６】
0005623139.tif 000007
【図７】
0005623139.tif 000008
【図８】
0005623139.tif 000009
【図９】
0005623139.tif 000010
【図１０】
0005623139.tif 000011
【図１１】
0005623139.tif 000012
【図１２】
0005623139.tif 000013