(57)【要約】【課題】画像形成装置がＷｅｂサーバに対して行う印刷要求がファイルフォーマット変換に関する設定を含む場合に、この設定に応じたファイルフォーマット変換処理を適切に実行することができる印刷システムを提供する。【解決手段】Ｗｅｂサーバ１０２が、画像形成装置１０１から依頼された印刷要求に応じて、印刷サービス４７０に印刷指示を行い、印刷サービス４７０に設定に応じたファイルフォーマット変換を行わせることによって、印刷データを生成させる。画像形成装置１０１が、印刷データをＷｅｂサーバから取得して印刷を実行し、印刷状態が変化する度に、印刷サービス４７０に対して印刷状態を通知して管理させる。Ｗｅｂサーバ１０２は、印刷サービス４７０が管理する印刷状態を取得し、取得した印刷状態に応じたジョブ情報画面を生成して画像形成装置１０１に送信する。【選択図】図４
2013050804.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された、Ｗｅｂサーバと、印刷サービスと、前記Ｗｅｂサーバにより提供される画面を表示するＷｅｂブラウザを有する画像形成装置とを備える印刷システムであって、
前記Ｗｅｂサーバは、
前記画像形成装置から依頼された印刷要求に応じて、前記ネットワークを介して、前記印刷サービスに対して印刷指示を行う印刷指示手段と、
前記印刷サービスが管理する前記印刷指示に応じた印刷データの印刷状態を前記ネットワークを介して取得する印刷状態取得手段と、
前記印刷状態取得手段が取得した印刷状態に応じたジョブ情報画面を生成する画面生成手段と、
前記画面生成手段が生成したジョブ情報画面を前記ネットワークを介して前記Ｗｅｂブラウザに送信する画面送信手段とを備え、
前記印刷状態取得手段は、前記印刷サービスから前記印刷データを取得し印刷を実行する前記画像形成装置が前記印刷データの印刷状態が変化することに応じて通知してくる情報を基にして前記印刷サービスが管理する前記印刷データの印刷状態を取得する
ことを特徴とする印刷システム。
【請求項２】
前記印刷指示手段は、前記印刷要求がファイルフォーマット変換に関する設定を含む場合に、前記印刷サービスに前記設定に応じたファイルフォーマット変換を行わせることによって、印刷データを生成させ、
前記印刷状態取得手段は、前記印刷指示手段が前記印刷サービスに対して印刷指示を出した後に定期的にポーリングを行うことによって、前記印刷サービスから前記印刷状態を取得し、
前記画面生成手段は、前記印刷状態取得手段が取得する印刷状態が変更された場合に、該印刷状態に応じた更新画面を生成し、
前記画面送信手段は、前記生成された更新画面を前記ネットワークを介して前記Ｗｅｂブラウザに送信する
ことを特徴とする請求項１に記載の印刷システム。
【請求項３】
前記印刷状態取得手段は、前記画像形成装置から、前記印刷サービスが管理する印刷状態に応じたジョブ情報画面の取得要求を定期的に受け付け、該ジョブ情報画面の取得要求を受け付けたことを契機として、前記印刷サービスから前記印刷状態を取得する
ことを特徴とする請求項２に記載の印刷システム。
【請求項４】
前記画像形成装置は、
印刷状態が変化した場合に、前記ネットワークを介して前記印刷サービスに前記印刷状態を送信する印刷状態送信手段と、
印刷状態の変更通知を求める要求であって、前記Ｗｅｂサーバが指定した印刷状態を含む動作要求を前記印刷状態送信手段に送信する動作要求手段と、
前記印刷状態送信手段から、該印刷状態送信手段が前記印刷サービスに送信する前記印刷状態を受信する受信手段と、
前記動作要求手段から前記動作要求を受け付け、該動作要求が含む印刷状態と前記受信手段が受信した前記印刷状態とを比較し、該比較結果に基づいて、印刷状態の変更通知を生成する変更通知生成手段と、
前記Ｗｅｂブラウザを介して、前記印刷状態の変更通知を前記Ｗｅｂサーバに送信する通知手段とを備え、
前記Ｗｅｂサーバが備える前記印刷状態取得手段は、前記画像形成装置のＷｅｂブラウザを介して前記変更通知を受信し、受信した前記変更通知に対応する印刷状態を取得する
ことを特徴とする請求項１に記載の印刷システム。
【請求項５】
前記画像形成装置は、
前記変更通知生成手段が前記動作要求を受信してから予め決められた時間が経過したかを判断するタイマー監視手段と、
前記タイマー監視手段が、前記変更通知生成手段が前記動作要求を受信してから予め決められた時間が経過したと判断した場合に、前記受信手段が受信した印刷状態が前記動作要求が含む印刷状態に変更されているかを判断し、前記受信手段が受信した印刷状態が前記動作要求が含む印刷状態に変更されていない場合に、タイムアウトが発生したと判断するタイムアウト判断手段と、
前記タイムアウト判断手段がタイムアウトが発生したと判断した場合に、前記動作要求に対応する印刷をキャンセルするキャンセル手段とを有する
ことを特徴とする請求項４に記載の印刷システム。
【請求項６】
前記通知手段は、前記印刷状態の変更通知を前記Ｗｅｂサーバを介さずに前記Ｗｅｂサーバに対して通知する
ことを特徴とする請求項４または請求項５に記載の印刷システム。
【請求項７】
前記画像形成装置が、さらに、
前記変更通知生成手段が前記動作要求手段から前記動作要求を受信したことを契機として、前記ネットワークを介して、前記印刷サービスに対して前記印刷データの取得要求を行う印刷データ要求手段を備える
ことを特徴とする請求項４に記載の印刷システム。
【請求項８】
ネットワークを介して接続された、Ｗｅｂサーバと、印刷サービスと、前記Ｗｅｂサーバにより提供される画面を表示するＷｅｂブラウザを有する画像形成装置とを備える印刷システムにおける印刷制御方法であって、
前記Ｗｅｂサーバが、前記画像形成装置から依頼された印刷要求に応じて、前記ネットワークを介して、前記印刷サービスに対して印刷指示を行う工程と、
前記印刷サービスが、前記Ｗｅｂサーバから印刷指示を受け、該印刷指示に従って印刷データを生成する工程と、
前記画像形成装置が、前記印刷サービスから前記印刷データを取得し印刷を実行する工程と、
前記印刷サービスが、前記画像形成装置が前記印刷データの印刷状態が変更することに応じて通知してくる情報を基にして前記印刷データの印刷状態を管理する工程と、
前記Ｗｅｂサーバが、前記印刷サービスが管理する前記印刷指示に応じた印刷データの印刷状態を前記ネットワークを介して取得する工程と、
前記Ｗｅｂサーバが、前記取得した前記印刷サービスが管理する印刷状態に応じたジョブ情報画面を生成する工程と、
前記Ｗｅｂサーバが、前記生成したジョブ情報画面を前記ネットワークを介して前記Ｗｅｂブラウザに送信する工程とを含む
ことを特徴とする印刷制御方法。
【請求項９】
請求項８に記載の印刷制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷システム、印刷制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
クライアントからサーバに対して印刷指示を送信し、印刷指示を受信したサーバが印刷対象のコンテンツを印刷データに変換するコンテンツ印刷システムが提案されている。注目されているクラウドコンピューティングも、サーバがクライアントにサービスを提供するシステム形態の一つである。
【０００３】
クラウドコンピューティングは、多くのコンピューティング・リソースを用いてデータ変換やデータ処理を分散実行し、多くのクライアントからの要求を同時に処理することが主な特徴である。現在、このクラウドコンピューティングを実現するクラウドコンピューティング環境上にＷｅｂサービスを実装し、多種多様なサービスを提供するベンダーが乱立しつつある。
【０００４】
クラウドコンピューティング環境上でサービスを提供するベンダーの中で注目すべきベンダーはＧｏｏｇｌｅ(登録商標)である。Ｇｏｏｇｌｅ(登録商標)は、大規模なデータセンターを多数設立する他、デバイスと連携させて提供するサービスを提案し、デバイスとサービス間のデータ通信の仕組みを開発している。例えば、Ｇｏｏｇｌｅ(登録商標)は画像形成装置と連携してサービスを提供するためのデータ通信の仕組みを開発し、Ｇｏｏｇｌｅ(登録商標)が用意したクラウドコンピューティング環境とデータ通信を画像形成装置が行うためのインターフェースを公開した。このシステムでは、画像形成装置はサービスから印刷要求を受信し、印刷を実行する。そして印刷状態の変化は、Ｗｅｂアプリケーションがサービスに対してポーリングすることにより取得される。
【０００５】
また、ネットワークを介してＷｅｂサーバに接続されるＰＣなどの情報処理装置がネットワーク上のＷｅｂサーバに接続され、Ｗｅｂサーバにより提供される操作画面を、情報処理装置が備えるＷｅｂブラウザ上に表示するシステムが知られている。このシステムでは、まず情報処理装置上のＷｅｂブラウザが、Ｗｅｂサーバに対して操作画面を要求（リクエスト）する。そして、Ｗｅｂサーバ上のＷｅｂアプリケーションが情報処理装置からの要求に応えて、Ｗｅｂブラウザに操作画面を表示させるためのＨＴＭＬデータを情報処理装置に応答（レスポンス）する。情報処理装置のＷｅｂブラウザは、受信したＨＴＭＬデータを解析し、ＨＴＭＬデータの記述に基づいた操作画面を表示する。更に、Ｗｅｂブラウザに表示された操作画面を介してユーザが指示を入力すると、入力された指示をＷｅｂブラウザがＷｅｂサーバに対して通知する。そして、この通知を受けたＷｅｂサーバ上のＷｅｂアプリケーションは、入力された指示に従って処理を実行する。
【０００６】
最近では、スキャナやプリンタを備えたＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）の中にも、上述したようなＷｅｂブラウザを備えているものがある。そして、ＭＦＰは、上述した手順を用いてＷｅｂサーバにより提供される操作画面をＭＦＰのＷｅｂブラウザに表示し、ユーザからの各種指示を受け付ける。
【０００７】
また更には、ＭＦＰが備える各機能を利用するための指示を入力する操作画面をＷｅｂサーバが提供し、ユーザがＷｅｂブラウザ上に表示された操作画面を介して、ＭＦＰに対する指示を入力するシステムも考えられている。このシステムでは、Ｗｅｂサーバは、ユーザから入力された指示の内容に従って、ＭＦＰに対して各種処理の実行を依頼する。そして、この依頼を受けたＭＦＰは、依頼された処理を実行する。これにより、ＭＦＰを操作するための全ての操作画面をＭＦＰ内で保持しておく必要がなくなり、また操作画面の変更もＷｅｂサーバ上で容易に行うことができるようになる。
【０００８】
具体的には、ＭＦＰの各機能をＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）的に公開し、Ｗｅｂサーバから適宜呼び出す方法が考えられている。この方法では、Ｗｅｂサーバ側に処理のメインロジックを持たせ、ＭＦＰの制御やユーザとの対話的処理をサーバに実行させて、処理の負荷を軽減させることができる。例えばＷｅｂサービスとしてＭＦＰの機能を公開することで、Ｗｅｂサーバからはローカルなサブルーチンを呼び出すようにＭＦＰが提供する機能を実行できる。また、その呼び出しの応答を管理することで処理のメインロジックをサーバ側に持たせることができる。
【０００９】
また、更にはＷｅｂブラウザに表示された操作画面を介して入力された指示に基づいてＷｅｂサーバが制御スクリプトを提供し、デバイスがその制御スクリプトを実行することでＭＦＰを操作するシステムも考えられている。
【００１０】
上述したシステムでは、制御スクリプトは、Ｗｅｂブラウザからのリクエストに対する応答としてデバイスに渡される。そのため、ＷｅｂサーバからＭＦＰにコネクションを張る必要がなく、ＭＦＰがファイアウォールで守られていたり、ネットワークアドレス変換を用いる環境にいたりする場合でも利用が可能である。
【００１１】
なお、特許文献１は、操作パネルに表示されるコンテンツを、画像形成装置に発生したイベントに応じて変更する画像形成装置を開示する。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００８−１３１３８８
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１は、操作パネルの表示制御をＷｅｂブラウザを用いて行うシステムである。特許文献１が開示する画像形成装置や、Ｗｅｂサーバから提供される操作画面を表示するＷｅｂブラウザを備え、表示された操作画面で入力された印刷指示に従って処理を実行するＭＦＰのようなシステムにおいて印刷を実行することが想定される。この場合、Ｗｅｂアプリケーションで管理している様々なファイルフォーマットについて印刷したいという要求にこたえることが難しい。なぜならば、サーバ側、もしくはＭＦＰ側にファイルフォーマット変換用のモジュールを搭載する必要があり、日々増えていくファイルフォーマットに対応していくには非常にコストがかかるという問題が存在するからである。
【００１４】
つまり、従来は、Ｗｅｂブラウザを備える画像形成装置がＷｅｂサーバに対して行う印刷要求がファイルフォーマット変換に関する設定を含む場合に、この設定に応じたファイルフォーマット変換処理を適切に実行することができる印刷システムはなかった。
【００１５】
また、特許文献１が開示する技術は、画像形成装置が、画像形成装置内のハードウェア制御に伴うイベントに従って、表示コンテンツを変更する技術である。従って、画像形成装置が、Ｗｅｂサーバを介して外部印刷サービスに対して印刷指示を行い、外部印刷サービスが印刷指示に従って印刷データを生成し、画像形成装置が上記印刷データを取得して印刷出力するシステムにこの技術を適用すると以下の問題がある。すなわち、特許文献１が開示する技術によっては、画像形成装置のＷｅｂブラウザが表示する、Ｗｅｂサーバから提供される画面を、外部印刷サービスが管理するジョブ状態（印刷状態）の変化に応じて更新することができない。
【００１６】
本発明は、Ｗｅｂブラウザを備える画像形成装置がＷｅｂサーバに対して行う印刷要求がファイルフォーマット変換に関する設定を含む場合に、この設定に応じたファイルフォーマット変換処理を適切に実行することができる印刷システムの提供を目的とする。
【００１７】
また、本発明は、画像形成装置が、Ｗｅｂサーバを介して外部印刷サービスに対して印刷指示を行い、外部印刷サービスが印刷指示に従って印刷データを生成し、画像形成装置が上記印刷データを取得して印刷出力するシステムである。この印刷システムは、画像形成装置のブラウザが表示する、Ｗｅｂサーバから提供されるジョブ情報画面を、外部印刷サービスが管理する印刷状態の変化に応じて更新する。
【課題を解決するための手段】
【００１８】
本発明の一実施形態の印刷システムは、ネットワークを介して接続された、Ｗｅｂサーバと、印刷サービスと、前記Ｗｅｂサーバにより提供される画面を表示するＷｅｂブラウザを有する画像形成装置とを備える印刷システムである。前記Ｗｅｂサーバは、前記画像形成装置から依頼された印刷要求に応じて、前記ネットワークを介して、前記印刷サービスに対して印刷指示を行う印刷指示手段と、前記印刷サービスが管理する前記印刷指示に応じた印刷データの印刷状態を前記ネットワークを介して取得する印刷状態取得手段と、前記印刷状態取得手段が取得した印刷状態に応じたジョブ情報画面を生成する画面生成手段と、前記画面生成手段が生成したジョブ情報画面を前記ネットワークを介して前記Ｗｅｂブラウザに送信する画面送信手段とを備える。前記印刷状態取得手段は、前記印刷サービスから前記印刷データを取得し印刷を実行する前記画像形成装置が前記印刷データの印刷状態が変化することに応じて通知してくる情報を基にして前記印刷サービスが管理する前記印刷サービスの印刷状態を取得する。
【発明の効果】
【００１９】
本発明の印刷システムによれば、ファイルフォーマット変換機能を持った外部の印刷サービスを利用して印刷を実行することにより、Ｗｅｂアプリケーションにおいてファイルフォーマット変換への要求に低コストで答えて印刷機能を提供することができる。また、本発明の印刷システムにおいては、外部印刷サービスにおいて変化した印刷状態を示すジョブ情報画面をＷｅｂアプリケーションからＷｅｂブラウザに通知する。これにより本発明の印刷システムは、外部印刷サービスが管理する印刷状態の変化に伴って、画像形成装置のジョブ情報画面を更新することができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態のコンテンツ印刷システムの全体図である。
【図２】ＭＦＰの構成を示すブロック図である。
【図３】Ｗｅｂサーバ、印刷サーバの構成を示すブロック図である。
【図４】ソフトウェア構成を示す図である。
【図５】Ｗｅｂアプリケーションからプロバイダへ処理を依頼する動作のシーケンス図である。
【図６】Ｗｅｂサーバ応答処理とＭＦＰの処理のフローチャートである。
【図７】レスポンスヘッダと処理要求の例である。
【図８】処理結果の例である。
【図９】印刷処理のシーケンス図である。
【図１０】印刷処理のシーケンス図である。
【図１１】コンテンツ印刷システムのログイン画面、設定画面の例である。
【図１２】印刷サービスへの印刷指示の例である。
【図１３】コンテンツ印刷システムの実行中画面、完了画面の例である。
【図１４】プリンタへの印刷指示の例である。
【図１５】プリンタが取得する印刷設定の例である。
【図１６】印刷サービスへのジョブ状態変更指示の例である。
【図１７】印刷サービスへのジョブ状態取得の例である。
【図１８】サービスプロバイダの処理部の構成を示すブロック図である。
【図１９】サービスプロバイダへの動作要求の例である。
【図２０】ジョブ状態変更の通知の例である。
【図２１】印刷処理のシーケンス図である。
【図２２】印刷処理のシーケンス図である。
【発明を実施するための形態】
【００２１】
（実施例１）
図１は、本実施形態のコンテンツ印刷システムの構成例である。本システムはＭＦＰ１０１と、Ｗｅｂアプリケーションサーバ１０２と、印刷サーバ１０３とを備える。コンテンツ印刷システムを構成するＭＦＰ１０１、Ｗｅｂアプリケーションサーバ１０２、および印刷サーバ１０３は、インターネット１０４を介して接続でき、互いにデータ通信することができる。ネットワーク１００は各装置間で通信を行うための基盤であって、インターネット１０４に接続されている。
【００２２】
ＭＦＰ１０１は、Ｗｅｂアプリケーションサーバ１０２および印刷サーバ１０３とインターネット１０４を介して各種処理を要求または実行する画像形成装置である。Ｗｅｂアプリケーションサーバ１０２は、Ｗｅｂコンテンツをネットワークを介して配信する機能を持っており、ＭＦＰ１０１からのリクエストに応じてＷｅｂコンテンツを返す。印刷サーバ１０３は、Ｗｅｂアプリケーションサーバ１０２またはＭＦＰ１０１からの各種リクエストを受け付け、各種リクエストに応じた処理を行い、各装置にレスポンスを返す。
【００２３】
なお、各装置は複数台あっても良い。また、各サーバも複数台で構成されていても良い。さらに、ＭＦＰ１０１はローカルなＩＰアドレスで管理されていても良い。その場合ネットワーク１００とＭＦＰ１０１の間にゲートウェイ（不図示）が存在し、ゲートウェイはアドレス変換を行う。例えばゲートウェイにはルーターが含まれる。また前記ゲートウェイや、ＭＦＰ１０１がファイアウォール機能を備えていても良い。
【００２４】
図２は本実施例のＭＦＰ１０１の機器構成図の一例である。ＭＦＰ１０１は、本発明を制御するＣＰＵ（Central Processing Unit）２０１、ＣＰＵ２０１のワークエリアを提供するＲＡＭ（Random Access Memory）２０２を備える。また、ＭＦＰ１０１は、画像を読み取る読取装置２０３、画像を印刷する印刷装置２０４、本発明のプログラムや様々な設定を記憶する記憶装置２０５を備える。記憶装置２０５は、ＨＤＤ（Hard Disc Drive）やＮＶＲＡＭ（Non Volatile Random
Access Memory）等でもよい。さらに、ユーザがコマンドの入力を行うユーザ入力装置２０６、画面表示を行うＵＩ表示装置２０７、他機器とネットワークによる通信を行うネットワーク装置２０８、メインバス２００により構成されている。
【００２５】
なお、本実施例では、特に断らない限り、ＭＦＰ１０１は、ＣＰＵ２０１がメインバス２００を介して各装置を制御する。具体的には、ＣＰＵ２０１は、ＲＡＭ２０２、読み取り装置２０３、印刷装置２０４、記憶装置２０５、ユーザ入力装置２０６、ＵＩ（User Interface）表示装置２０７、ネットワーク装置２０８を制御する。また、タッチパネルディスプレイのようにＵＩ表示装置２０７がユーザ入力装置２０６を兼ねても良い。
【００２６】
図３は本実施例のアプリケーションサーバ１０２、印刷サーバ１０３の機器構成図の一例である。各装置は、本発明を制御するＣＰＵ３０１、ＣＰＵ３０１のワークエリアを提供するＲＡＭ３０２、本発明のプログラム、設定を記憶する記憶装置３０３、他機器とネットワークによる通信を行うネットワーク装置３０４、メインバス３００を備える。なお、本実施例は特に断らない限り、ＣＰＵ３０１がメインバス３００を介してＲＡＭ３０２、記憶装置３０３、ネットワーク装置３０４を制御することによって本実施例の印刷処理を実行する。
【００２７】
図４は本実施例におけるコンテンツ印刷システム全体のソフトウェア構成を説明するための図である。ＭＦＰ１０１／アプリケーションサーバ１０２／印刷サーバ１０３のそれぞれが有ずるＣＰＵ２０１／ＣＰＵ３０１が制御プログラムを実行することにより図４に示す各機能部を実現する。
【００２８】
アプリケーションサーバ１０２は、Ｗｅｂアプリケーション４１０を有する。さらに、Ｗｅｂアプリケーション４１０は、プレゼンテーション部４１１、ロジック部４１２、プリンタ情報取得部４１３、印刷指示部４１４及びジョブ状態取得部４１５を含む。
【００２９】
プレゼンテーション部４１１は、ＭＦＰ１０１からのリクエストに応えてＷｅｂブラウザ４２０で表示すべき操作画面、又はサービスプロバイダ４４０への処理要求を、ＭＦＰ１０１にレスポンスとして送信する。また、プレゼンテーション部４１１は、ＭＦＰ１０１のＷｅｂブラウザ４２０に表示された操作画面を介して入力されたユーザからの入力情報をＭＦＰ１０１から受け取る。
【００３０】
ロジック部４１２は、プレゼンテーション部４１１から渡されたＭＦＰ１０１からの入力情報に対して処理を行う。ロジック部４１２は、たとえば、ユーザからの入力に応じて、表示すべき画面を変更したり、ＭＦＰ１０１のデバイス機能実行のための処理要求を作成したりする。
【００３１】
プリンタ情報取得部４１３、印刷指示部４１４、ジョブ状態取得部４１５は、ロジック部４１２からの指示に従って、印刷サービス４７０の印刷サービス提供部４７５と通信を行う。すなわち、プリンタ情報取得部４１３は、プリンタ情報提示部４７７に対して一覧リストを要求する。印刷指示部４１４は、印刷指示受付部４７６に対して印刷設定を含む印刷指示を行う。ジョブ状態取得部４１５は、ジョブ状態提示部４７８に対してジョブ状態を要求する。
【００３２】
ＭＦＰ１０１は、Ｗｅｂブラウザ４２０、転送アプリケーション４３０、サービスプロバイダ４４０、印刷プロキシ４６０、ジョブ制御部４５０を有している。Ｗｅｂブラウザ４２０、転送アプリケーション４３０、サービスプロバイダ４４０のそれぞれは、ＭＦＰ１０１が有しているＣＰＵ２０１が制御プログラムを実行することにより実現される。なお、前記Ｗｅｂブラウザ４２０は、Ｗｅｂサーバ１０２のコンテンツを表示するものに限定するものではない。同様に、前記Ｗｅｂサーバ１０２もＨＴＴＰプロトコルに従ってリクエスト／レスポンスを送受信するＷｅｂサーバに限定するものではない。前記Ｗｅｂブラウザ４２０は、任意のサーバと通信を行うことによってコンテンツを取得し、画面に表示するといった機能を有するものであればよい。
【００３３】
Ｗｅｂブラウザ４２０は、通信部４２１、解析部４２２、画面表示部４２３、転送アプリ起動部４２４、およびアップロード処理部４２５を有する。通信部４２１は、ＨＴＴＰプロトコルに従って、Ｗｅｂアプリケーションサーバ１０２のＷｅｂアプリケーション４１０のプレゼンテーション部４１１と通信する。
【００３４】
より具体的には、通信部４２１は、Ｗｅｂブラウザ４２０で表示した操作画面を介して入力される情報をＷｅｂアプリケーション４１０に対するリクエストとして送信する。また、通信部４２１は、Ｗｅｂアプリケーション４１０から送信されるレスポンスを受信する。
【００３５】
解析部４２２は、Ｗｅｂアプリケーション４１０から受信したレスポンスを解析する。レスポンスの中にはＷｅｂブラウザ４２０に表示すべき操作画面の内容を示す記述であるＨＴＭＬデータや、もしくは、サービスプロバイダへの処理要求が記載されている。解析部４２２は、ＨＴＴＰレスポンスヘッダのＣｏｎｔｅｎｔ−Ｔｙｐｅフィールドがａｐｐｌｉｃａｔｉｏｎ／ｖｎｄ．ｅｅｅｅｅ．ｗｅｂｓｅｒｖｉｃｅであるかを確認する。前記Ｃｏｎｔｅｎｔ−Ｔｙｐｅフィールドであると確認した場合は、Ｗｅｂアプリケーション４１０から受信したレスポンスがサービスプロバイダへの処理要求であると判断し、転送アプリ起動部４２４に受信したレスポンスに対する処理を依頼する。
【００３６】
画面表示部４２３は、解析部４２２による解析結果に基づいて、ＨＴＭＬデータをＵＩ表示装置２０７に操作画面を表示する。
【００３７】
転送アプリ起動部４２４は、解析部４２２による解析結果に基づいて、Ｗｅｂアプリケーション４１０から受信したレスポンスを処理要求と判断して、転送アプリケーション４３０に対し、サービスプロバイダ４４０に転送するように依頼する。なお、レスポンスが本発明におけるＭＦＰへの処理要求であるかどうかの判別が可能であれば、ＨＴＴＰレスポンスヘッダを参照する以外の方法でも良い。
【００３８】
アップロード処理部４２５は、デバイス内部からの要求に応じて、指定されたデータを、通信部４２１を介してＷｅｂアプリケーションサーバ１０２に送信する。本実施例ではＨＴＴＰ
ＰＯＳＴコマンドを用いて指定のデータをアップロードするが、Ｗｅｂブラウザが処理可能なプロトコルであれば何でもよい。
【００３９】
転送アプリケーション４３０は、動作要求送信部４３１、制御部４３２を有する。制御部４３２は、Ｗｅｂブラウザ４２０の転送アプリ起動部４２４からの依頼を受け、サービスプロバイダへのレスポンスに対する処理要求を、動作要求送信部４３１に依頼する。
【００４０】
動作要求送信部４３１は、制御部４３２から依頼を受け、サービスプロバイダ４４０の動作要求受信部４４１に処理要求を転送し、また、処理要求に対する結果を受信する。このとき動作要求送信部４３１は、図７（Ａ）で示される前記Ｗｅｂアプリケーションから受信したレスポンスのヘッダ８００に記載されている宛先８０１に転送を行う。
【００４１】
転送アプリケーション４３０は、ＷＥＢブラウザ４２０が受信したレスポンスの一部をサービスプロバイダ４４０へ転送したり、あるいは、サービスプロバイダ４４０の処理結果をＷＥＢブラウザ４２０へ転送したりするためのアプリケーションである。転送アプリケーションは、一般的にＷＥＢブラウザ４２０で対応できない形式のファイル（音声や動画，アニメーションなど）を処理できるようにするヘルパーアプリケーションとして動作し、Ｗｅｂブラウザ４２０と独立して動作する。しかしながら、処理要求の転送を行う機能を有すれば、転送アプリケーション４３０はヘルパーアプリケーションではなくてもよい。転送アプリケーション４３０は、プラグインや、Ｗｅｂブラウザ４２０内の一機能、またはＷｅｂアプリケーション４１０から受信したレスポンス内に記載されたＪａｖａ（登録商標）Ｓｃｒｉｐｔとして存在しても良い。
【００４２】
サービスプロバイダ４４０は、動作要求受信部４４１、処理部４４２を有する。動作要求受信部４４１は、転送アプリケーション４３０から処理要求を受け付ける。処理部４４２は、動作要求受信部４４１が受け付けた処理要求を受け取り、依頼された処理を実行する。
【００４３】
サービスプロバイダ４４０は、さまざまな処理を行うプログラムであり、機能ごとに分かれて複数存在しても良い。たとえば、印刷機能を持ったサービスプロバイダやスキャン機能を持ったサービスプロバイダが存在し、それらのサービスプロバイダは処理要求に従って、ジョブ制御部４５０のジョブ管理部４５１に対してジョブを登録する。
【００４４】
ジョブ制御部４５０は、ジョブ管理部４５１と、ジョブ実行部４５２を有する。ジョブ管理部４５１は、スキャンやプリントなどハードウェア資源を利用するジョブの管理を行う。ジョブ実行部４５２はジョブ管理部４５１で管理されているジョブに従って処理を実行する。
【００４５】
印刷プロキシ４６０は、印刷サービス通信モジュール４６１と印刷ジョブ生成部４６６、制御部４６７を有する。また、印刷サービス通信モジュール４６１は、印刷データ取得部４６２、ジョブ状態送信部４６３、印刷設定取得部４６４、印刷通知受信部４６５を有する。
【００４６】
印刷サービス通信モジュール４６１は、プリンタ通信モジュール４６１と相互に通信可能である。具体的には、印刷通知受信部４６５は、印刷サービス４７０の印刷通知送信部４８３から送信される通知情報を受信する。印刷サービス通信モジュール４６１と、印刷サービスのプリンタ通信モジュール４８０は対をなすモジュールであるため、印刷通知受信部４６５は、印刷通知送信部４８３が送信する通知情報を解釈することが可能である。印刷データ取得部４６２は、印刷通知受信部４６５で受信した通知情報に記載されている印刷データ取得先情報を基に印刷データ格納部４８１から印刷データを取得する。また、印刷設定取得部４６４は、刷通知受信部４６５で受信した通知情報に記載されている印刷設定取得先情報を基に、印刷設定格納部４８３から印刷設定を取得する。
【００４７】
制御部４６７は、印刷データ取得部４６２と印刷設定取得部４６４から取得した印刷データと印刷設定に従って、印刷ジョブ生成部４６６にジョブの生成を依頼する。印刷ジョブ生成部４６６は制御部４６７の依頼に従ってジョブを生成し、ジョブ管理部４５１に生成したジョブを登録する。ジョブ状態送信部４６３は、印刷サービス４７０で管理されるジョブ状態の変更を通知するモジュールである。ジョブ状態送信部４６３は、印刷が完了した場合などジョブの状態が変更された場合に、印刷制御部の指示に従ってジョブ状態受信部４８４に対してジョブ状態変更通知を送信する。
【００４８】
印刷サーバ１０３は、印刷サービス４７０を有する。印刷サービス４７０は、印刷サービス提供部４７５、印刷データ情報取得部４７１、制御部４７２、プリンタ情報格納部４７３、ジョブ状態格納部４７４、およびプリンタ通信モジュール４８０を有する。印刷サーバ１０３は、Ｗｅｂアプリケーション４１０から印刷データを取得する。そして、印刷サーバ１０３は、プリンタ、またはそれに準拠するインターフェースを持つモジュールに対して印刷データを送信し、印刷を遂行する。
【００４９】
印刷サービス提供部４７５は、印刷指示受付部４７６、プリンタ情報提示部４７７、ジョブ状態提示部４７８を有する。プリンタ情報提示部４７７は、Ｗｅｂアプリケーション４１０のプリンタ情報取得部４１３からの一覧リスト取得要求を受けたことに応じて、ユーザ情報を基にそのユーザが利用可能なプリンタの一覧リストを生成する。プリンタ情報提示部４７７は、図１１（Ｂ）で示されるように、一覧リストを生成すると、プリンタ情報取得部４１３に送信する。印刷指示受付部４７６は、印刷設定を含む印刷指示をＷｅｂアプリケーション４１０の印刷指示部４１４から受信する。
【００５０】
印刷データ情報取得部４７１は、印刷指示受付部４７６から印刷データ取得先情報を受信し、受信した印刷データ取得先情報を基にＷｅｂアプリケーション４１０から印刷対象となるコンテンツを取得する。また、印刷データ情報取得部４７１は、印刷指示受付部４７６から印刷設定とユーザが選択したプリンタＩＤを受信する。プリンタＩＤはプリンタ個々に割り振られた一意な識別子であり、印刷サービス４７０で管理されている。
【００５１】
なお、印刷データ情報取得部４７１は、Ｗｅｂアプリケーション４１０から取得したコンテンツと印刷設定を基に、必要に応じてコンテンツを印刷データに変換する場合もある。すなわち、印刷設定でファイルフォーマット変換が指定されている場合、印刷データ情報取得部４７１は、コンテンツのファイルフォーマット変換を行う。また、印刷データ情報取得部４７１が、プリンタ情報格納部４７３に格納されているプリンタ情報から、印刷を実行する対象となるプリンタが印刷可能なファイルフォーマットを特定し、コンテンツをそのファイルフォーマットに変換しても良い。プリンタ情報には、印刷サーバから印刷の指示を出すことができるプリンタのプリンタＩＤや、プリンタ名、印刷可能なファイルフォーマットが記載されている。
【００５２】
制御部４７２は、印刷データ情報取得部４７１から印刷データ、印刷設定、プリンタＩＤを取得する。プリンタ通信モジュール４８０は、印刷サービス通信モジュール４６１を有する装置と通信を行うことが可能であり、２者間のデータ通信のインターフェースである。プリンタ通信モジュール４８０は印刷データ格納部４８１、印刷設定格納部４８２、印刷通知送信部４８３、ジョブ状態受信部４８４を有する。
【００５３】
印刷データ格納部４８１は、制御部４７２から印刷データを受信し格納する。印刷設定格納部４８２は、制御部４７２から印刷設定を受信し格納する。制御部４７２は、印刷データ格納部４８１、および印刷設定格納部４８２から格納が終了した旨を受信したことに応じて、印刷通知送信部４８３に通知情報を送るように指示をする。ジョブ状態受信部４８４は、印刷サービス通信モジュール４６１のジョブ状態受信部４６３からジョブ状態変更通知を受信し、ジョブ状態格納部４７４に格納する。ジョブ状態格納部４７４は、ジョブ状態提示部４７８から、ジョブＩＤを受信して、受信したジョブＩＤに対応するジョブ状態をジョブ状態提示部４７８に送信する。
【００５４】
ジョブ状態提示部４７８は、Ｗｅｂアプリケーション４１０のジョブ状態取得部４１５からジョブＩＤを伴う依頼を受信し、その依頼に従ってジョブ状態格納部４７４にジョブＩＤを送信する。また、ジョブ状態提示部４７８は、該当ジョブのジョブ状態をジョブ状態格納部４７４から受信し、ジョブ状態取得部４１５に送信する。
【００５５】
印刷通知送信部４８３は、制御部４７２から通知情報を送るように指示されたことに応じて、印刷データの格納場所、および印刷設定の格納場所を制御部４７２から取得し、通知情報を生成する。また、印刷通知送信部４８３は、プリンタＩＤを制御部４７２から取得し、プリンタ情報格納部４７３が格納している情報を基にプロキシＩＤを特定する。プロキシＩＤは印刷サービス通信モジュール４６１個々に割り振られた一意な識別子であり、印刷サービス４７０で管理されている。印刷通知送信部４８３は、特定したプロキシＩＤを持つインターフェースに対して、そのプロキシが管理するプリンタＩＤに対する印刷データが準備できたことを通知するため通知情報を送信する。
【００５６】
この通信情報は、印刷サービス独自の通信方式に準拠しており、通信にはこの独自の通信方式を解釈可能なインターフェースの実装が必要となる。プリンタに実装すればプリンタを直接印刷サーバに登録することができるし、サーバやクライアントなどの通信可能な装置に実装すればプロキシとして登録可能となる。本実施例では、印刷サービス通信モジュール４６１がこの独自の通信方式を解釈可能なインターフェースを実装しており、プリンタ通信モジュール４８０との通信が可能となっている。
【００５７】
なお、プリンタ通信モジュール４８０と、印刷サービス通信モジュール４６１が通信を行えるような仕組みを、印刷サーバ１０３を提供するベンダーの仕様と呼ぶ。そして、この仕様は、印刷サーバ１０３を管理しているベンダーに深く依存する。印刷サーバ１０３を管理しているベンダーは、印刷サーバ１０３にプリンタ通信モジュール４８０を実装し、印刷サービス通信モジュール４８０と通信を行うための印刷サービス通信モジュールの仕様を公開する。プリンタ通信モジュール４８０、および印刷サービス通信モジュール４６１のインターフェースは、印刷サーバ１０３を管理しているベンダーが公開するデータ通信の仕様に準じて作成されるインターフェースである。
【００５８】
ここで、本実施形態における情報処理システムにおいて、サービスプロバイダを利用する流れを説明する。図５は、本実施形態における情報処理システムにおいて、サービスプロバイダを利用してスキャンを実行する一連の処理を示したシーケンス図である。
【００５９】
まず、ユーザがＭＦＰ１０１のユーザ入力装置２０６から、Ｗｅｂブラウザ４２０の起動を行うためのボタン（不図示）押下を受けつけると、Ｗｅｂブラウザ４２０を起動する。前記ボタンは、ハードウェアボタンに限ったものではなく、タッチパネル上に表示されたボタンでも良い。Ｗｅｂブラウザ４２０は、起動するとＷｅｂサーバ１０２上のＷｅｂアプリケーション４１０に設定画面のリクエストを行う。本例では、設定画面のコンテンツを示すＵＲＬがあらかじめＭＦＰ１０１に設定されているものとする。
【００６０】
Ｓ５００では、Ｗｅｂブラウザ４２０は、前記ＵＲＬで示されるコンテンツを保持するＷｅｂアプリケーション４１０に対して、ＨＴＴＰのＧＥＴコマンドによるリクエストを行う。具体的には、Ｗｅｂブラウザ４２０が通信部４２１を介してＨＴＴＰプロトコルによりＷｅｂサーバ１０２のＷｅｂアプリケーション４１０と通信を行う。これにより、Ｗｅｂブラウザ４２０からＷｅｂアプリケーション４１０へのリクエストが行われる。以下、通信部４２１の動作は省略して説明する。
【００６１】
Ｓ５０１では、Ｗｅｂアプリケーション４１０のロジック部４１２は、Ｓ５００のリクエストに応じて、設定画面のＨＴＭＬデータを作成する。プレゼンテーション部４１１は、ＨＴＴＰのレスポンスとして、ＷｅｂブラウザにＨＴＭＬデータを送信する。Ｗｅｂブラウザ４２０の解析部４２２は、受け取ったＨＴＭＬデータを解析し、画面表示部４２３を介してＵＩ表示装置２０７に設定画面の表示を行う。
【００６２】
Ｓ５０２では、Ｗｅｂブラウザ４２０は、Ｗｅｂアプリケーション４１０に対して、処理の実行を指示する。ユーザにより、Ｓ５０１で表示された設定画面のボタンが押されると、Ｗｅｂブラウザ４２０は、前記設定画面で設定されたパラメーターをＷｅｂアプリケーション４１０に通知する。すなわち、Ｗｅｂブラウザ４２０は、印刷要求を作成し、Ｗｅｂアプリケーション４１０は、Ｗｅｂブラウザ４２０から依頼された印刷要求を受け付ける。Ｗｅｂブラウザ４２０から通信にはＨＴＴＰプロトコルのＰＯＳＴコマンドを利用する。
【００６３】
図６（Ａ）は、図５のＳ５０３におけるサーバ処理フローを示した図である。Ｗｅｂアプリケーション４１０のロジック部は、レスポンスを生成する。
【００６４】
Ｓ６００では、Ｗｅｂアプリケーション４１０は、図５のＳ５０２でＷｅｂブラウザ４２０が通知した情報を受け付ける。Ｓ６０１では、ロジック部４１２は、Ｓ５０２のＰＯＳＴコマンドで送信された情報を元に、ＨＴＴＰレスポンスヘッダ８００を生成する。
【００６５】
Ｓ６０２では、ロジック部４１２がＳ５０２のＰＯＳＴコマンドで送信された情報を元に、ＨＴＴＰレスポンスボディとして、ＭＦＰ１０１での処理実行のための処理要求９００を生成する。Ｓ６０３では、Ｗｅｂアプリケーション４１０は、前記Ｓ６０１、Ｓ６０２で生成したＨＴＴＰレスポンスヘッダと、ＨＴＴＰレスポンスボディを合わせてＨＴＴＰレスポンスとしてＷｅｂブラウザ４２０に送信する。
【００６６】
図６（Ｂ）は、図５のＳ５０３からＳ５０９におけるＭＦＰ１０１の処理フローを示した図である。Ｓ７００、Ｓ７０１、Ｓ７０２は、図５のＳ５０４に対応する。Ｓ７００では、Ｗｅｂブラウザ４２０は、Ｓ６０３でＷｅｂアプリケーション４１０が送信したＨＴＴＰレスポンスを受信する。ＨＴＴＰレスポンスは、ＨＴＴＰレスポンスヘッダ８００とＨＴＴＰレスポンスボディが含まれる。
【００６７】
Ｓ７０１では、解析部４２２は、前記Ｓ７００で受信したＨＴＴＰレスポンスヘッダのＣｏｎｔｅｎｔ−Ｔｙｐｅフィールドがａｐｐｌｉｃａｔｉｏｎ／ｖｎｄ．ｅｅｅｅｅ．ｗｅｂｓｅｒｖｉｃｅであるかを確認する。そうであった場合はＳ７０２に進む。そうでない場合は、Ｓ７１０に進む。
【００６８】
Ｓ７０２では、転送アプリ起動部４２４は、転送アプリケーション４３０の制御部４３２に対して、前記Ｓ７００で受信したＨＴＴＰレスポンスボディをサービスプロバイダ４４０に転送するように依頼する。このとき、転送に必要な情報として、前記Ｓ７００で受信したＨＴＴＰレスポンスヘッダも制御部４３２に渡す。
【００６９】
Ｓ７０３、Ｓ７０４は、図５のＳ５０５に対応する。Ｓ７０３では、制御部４３２は、前記ステップ７０２で受信したＨＴＴＰレスポンスヘッダに記載されている宛先８０１を宛先として、前記Ｓ７００で受信したＨＴＴＰレスポンスボディを、動作要求送信部４３１を介して送信する処理を開始する。本実施例では制御部４３２は、ＨＴＴＰ
ＰＯＳＴコマンドで送信するが、他の送信方法でも良い。また、制御部４３２は現在の時刻を取得しタイムアウトの監視を開始する。
【００７０】
Ｓ７０４では、制御部４３２は、前記Ｓ７０３で開始した送信処理にかかった時間が、後述のタイムアウト時間８０２に指定された時間を超えていないか判断する。Ｓ７０３において、制御部４３２が、転送が終了するまでにタイムアウト時間８０２を超えなかったと判断した場合、Ｓ７０５に進む。制御部４３２が、転送が終了するまでにタイムアウト時間８０２を超えたと判断した場合、Ｓ７０９に進む。
【００７１】
Ｓ７０５、Ｓ７０６は、図５のＳ５０６に対応する。Ｓ７０５では、サービスプロバイダ４４０は、Ｓ７０３で転送アプリケーション４３０が送信した処理要求９００を動作要求受信部４４１で受信し、処理要求９００に従って処理部４４２でジョブを生成する。また、実行結果１０００をレスポンスとして、動作要求受信部４４１を介して転送アプリケーション４３０に送信する処理を開始する。
【００７２】
Ｓ７０６では、制御部４３２は、前記Ｓ７０５で開始した送信処理にかかった時間が、後述のタイムアウト時間８０２に指定された時間を超えていないか判断する。制御部４３２が、前記Ｓ７０５における転送が終了するまでにタイムアウト時間８０２を超えなかったと判断した場合、Ｓ７０７に進む。制御部４３２が、転送が終了するまでにタイムアウト時間８０２を超えたと判断した場合、Ｓ７０９に進む。
【００７３】
Ｓ７０７、又はＳ７０９は、図５のＳ５０７に対応する。Ｓ７０７では、転送アプリケーション４３０の制御部４３２は、実行結果１０００を、動作要求送信部４３１を介して受信する。その後、Ｗｅｂブラウザ４２０のアップロード処理部４２５に対して、実行結果１０００をＷｅｂアプリケーション４１０に対してアップロードするように依頼する。制御部４３２は、アップロードを依頼する際、アップロード処理部４２５に対してアップロードの宛先としてアップロード宛先８０４を指定する。アップロード宛先８０４はＨＴＴＰレスポンスヘッダ８００に記載されているが、転送アプリケーション４３０からアップロード処理部４２５を指定せず、Ｗｅｂブラウザ４２０がこの情報を記憶しておいてその情報を使用してもよい。また宛先を固定値とし、Ｗｅｂアプリ４１０から指定しないシステムとしても良い。
【００７４】
Ｓ７０９では、転送アプリケーション４３０の制御部４３２は、エラー結果１１００を生成する。その後、Ｗｅｂブラウザ４２０のアップロード処理部４２５に対して、エラー結果１１００をＷｅｂアプリケーション４１０に対してアップロードするように依頼する。依頼に際して、制御部４３２は、アップロード処理部４２５に対してアップロードの宛先としてアップロード宛先８０４を指定する。アップロード宛先８０４はＨＴＴＰレスポンスヘッダ８００に記載されているが、転送アプリケーション４３０からアップロード処理部４２５を指定せず、Ｗｅｂブラウザ４２０がこの情報を記憶しておいてその情報を使用してもよい。また宛先を固定値とし、Ｗｅｂアプリケーション４１０から指定しないシステムとしても良い。
【００７５】
Ｓ７０８は、図５のＳ５０８に対応する。Ｓ７０８では、アップロード処理部４２５は、通信部４２１を介してＨＴＴＰ
ＰＯＳＴコマンドを用いて、制御部４３２からの依頼に従って実行結果１０００、又はエラー結果１１００のアップロードをＷｅｂアプリケーション４１０に対して依頼する。このとき、アップロード処理部４２５は、転送アプリケーション４３０の制御部４３２から依頼された宛先８０４に対してアップロードを依頼する。
【００７６】
図５に戻り、Ｓ５０９では、Ｗｅｂアプリケーション４１０は、Ｗｅｂブラウザ４２０に対して、画面表示用のＨＴＭＬコンテンツをレスポンスする。なお、Ｗｅｂブラウザ４２０は、前記Ｓ７００で、レスポンスを受信し、前記Ｓ７０１でＨＴＴＰレスポンスヘッダのＣｏｎｔｅｎｔ−Ｔｙｐｅフィールドがａｐｐｌｉｃａｔｉｏｎ／ｖｎｄ．ｅｅｅｅｅ．ｗｅｂｓｅｒｖｉｃｅでない場合、Ｓ７１０に進む。レスポンスを受け取ったＷｅｂブラウザ４２０は、Ｓ７１０において、解析部４２２によるＨＴＭＬデータの解析結果に基づいて、ＵＩ表示装置２０７に操作画面を表示する。
【００７７】
図７（Ａ）は、本実施例におけるＷｅｂアプリケーション４１０がＷｅｂブラウザ４２０に対して返すＨＴＴＰレスポンスヘッダを示す。ＨＴＴＰレスポンスヘッダ８００は、宛先８０１、タイムアウト時間８０２、転送時コンテントタイプ８０３、アップロード宛先８０４、コンテントタイプ８０５を有する。
【００７８】
宛先８０１は、図６（Ｂ）のＳ７０３において、転送アプリケーション４３０が処理要求９００であるＨＴＴＰレスポンスボディを転送する際の宛先である。宛先８０１は複数のサービスプロバイダが公開するサービスの何れかを指し示す。
【００７９】
タイムアウト時間８０２は、前記Ｓ７０３、Ｓ７０５において、転送アプリケーション４３０の制御部４３２が動作要求送信部４３１を介して、サービスプロバイダ４４０と通信する際のタイムアウト時間を秒単位で示す。制御部４３２は、サービスプロバイダと通信を行っている間、処理時間を計測し、タイムアウト時間８０２で指定された時間を超えた場合、通信を停止する。
【００８０】
転送時コンテントタイプ８０３は、Ｓ７０３において、転送アプリケーション４３０が、サービスプロバイダ４４０にＨＴＴＰレスポンスボディを転送する際にＨＴＴＰヘッダ８００のＣｏｎｔｅｎｔ−Ｔｙｐｅフィールドに記載する内容である。ＨＴＴＰ
Ｐｏｓｔコマンドを用いた転送の際に、転送先のサービスプロバイダ４４０が正しく理解できるＣｏｎｔｅｎｔ−Ｔｙｐｅを記載する必要があるためである。転送時コンテントタイプ８０３が省略されている場合は、転送アプリケーション４３０が転送時にデフォルトの値を設定するようにしても良い。
【００８１】
アップロード宛先８０４は前述の通り、前記Ｓ７０７、Ｓ７０９においてＷｅｂブラウザが処理結果１０００をＷｅｂアプリケーション４１０にアップロードを依頼する際の宛先である。
【００８２】
コンテントタイプ８０５は前述の通り、前記Ｓ７０１において受信したＨＴＴＰレスポンスボディの内容が、処理要求か、Ｗｅｂブラウザ４２０に表示するＨＴＭＬコンテンツかの判断に用いる。
【００８３】
図７（Ｂ）は、Ｗｅｂアプリケーション４１０で生成され、Ｗｅｂブラウザ４２０にレスポンスとして返される処理要求９００の内容を示す図である。処理要求９００は、スキャン要求９０１と送信要求９０２を有する。処理要求９００はＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）フォーマットで記載されているが、ＭＦＰ１０１に対する処理が記載できて、ＭＦＰ１０１が処理できる形式であれば何でもよい。
【００８４】
スキャン要求９０１は、ＭＦＰ１０１に対してスキャン処理の実行を要求する命令である。また、スキャン要求９０１には、スキャンの制御に関わる設定値を記載することができる。例えば、ＤｏｃｕｍｅｎｔＳｉｚｅタグでスキャンする原稿のサイズを指定したり、Ｃｏｌｏｒタグでスキャン時のカラーモード（オート、カラー、グレイスケール等）を指定したりできる。
【００８５】
送信要求９０２は、ＭＦＰ１０１に対してスキャン結果画像の送信を要求する命令である。また、送信要求９０１には、送信の制御に関わる設定を記載することができる。例えば、Ｐｒｏｔｏｃｏｌタグで送信プロトコルを指定したり、Ｄｅｓｔｉｎａｔｉｏｎタグで宛先を指定したり、ＦｉｌｅＦｏｒｍａｔタグで送信する際にどの画像フォーマットに変換してから送信したりすることができる。
【００８６】
図８（Ａ）はサービスプロバイダ４４０が返す処理結果の内容を示す図である。処理結果１０００はジョブ結果１００１を有する。ジョブ結果１００１は、前記Ｓ７０５で実行されたジョブの結果がＲｅｓｕｌｔＣｏｄｅタグに記載されている。正常に終了した場合はＯＫコードが記載され、エラーが発生した場合はエラーコードが記載される。Ｗｅｂアプリケーション４１０は、Ｗｅｂブラウザ４２０のアップロード処理部４２５を介してこの処理結果１０００を受信することにより、ユーザに対して処理結果に応じたＨＴＭＬコンテンツを生成し、Ｗｅｂブラウザに送信することができる。
【００８７】
図８（Ｂ）は、転送アプリケーション４３０においてエラーが発生した際に、転送アプリケーション４３０の制御部４３２が生成するエラー内容を示す図である。エラー結果１１００には、エラーコードと、転送アプリケーション４３０がサービスプロバイダ４４０とＨＴＴＰプロトコルで通信した際のＨＴＴＰステータスコードが記載されている。
【００８８】
転送アプリケーション４３０における動作要求送信部４３１や制御部４３２でエラーが発生した際、制御部４３２はエラー結果１１００を生成する。そして、前記Ｓ７０５で処理結果のアップロードを依頼したのと同様に、エラー内容のアップロードをＷｅｂブラウザ４２０に依頼する。本実施例では、Ｃｏｎｔｅｎｔ−Ｔｙｐｅをａｐｐｌｉｃａｔｉｏｎ／ｘ−ｗｗｗ−ｆｏｒｍ−ｕｒｌｅｎｃｏｄｅｄとし、パラメーターとしてエラーコードとＨＴＴＰステータスコードを送信する。
【００８９】
例えば、転送アプリケーション４３０がサービスプロバイダ４４０と通信を行っている間にタイムアウト時間８０２で指定された時間を超えた場合、この通信を停止し、エラーコードをＴＩＭＥＯＵＴ＿ＥＲＲＯＲとしてエラー結果を生成する。また、サービスプロバイダが異常なＨＴＴＰステータスコードを返してきた場合、そのステータスコードと、エラーコードとしてＳＴＡＴＵＳ＿ＣＯＤＥ＿ＥＲＲＯＲを記載してエラー結果を生成する。
【００９０】
次に、本発明のコンテンツ印刷システムにおいて、印刷を実行する流れを説明する。図９および図１０は、本実施形態におけるコンテンツ印刷システムにおいて、印刷サービス利用して印刷を実行する一連の処理を示したシーケンス図である。まず、ユーザがＭＦＰ１０１のユーザ入力装置２０６から、Ｗｅｂブラウザの起動を行うためのボタン（不図示）押下を受けつけると、Ｗｅｂブラウザ４２０が起動する。
【００９１】
Ｓ１２０１では、Ｗｅｂブラウザ４２０は、Ｗｅｂサーバ１０２上のＷｅｂアプリケーション４１０にＨＴＴＰのＧＥＴコマンドによるログイン画面のリクエストを行う。本例では、ログイン画面のコンテンツを示すＵＲＬは、あらかじめＭＦＰ１０１に設定されているものとする。具体的には、Ｗｅｂブラウザ４２０が通信部４２１を介してＨＴＴＰプロトコルによりＷｅｂサーバ１０２のプレゼンテーション部４１１と通信を行う。これにより、Ｗｅｂブラウザ４２０からＷｅｂアプリケーション４１０へのリクエストが行われる。以下、通信部４２１の動作は省略して説明する。
【００９２】
Ｓ１２０２では、Ｗｅｂアプリケーション４１０のロジック部４１２が、前記Ｓ１２０１のリクエストに応じて、ログイン画面のＨＴＭＬデータを作成する。プレゼンテーション部４１１は、作成された画面をＨＴＴＰのレスポンスとして、Ｗｅｂブラウザ４２０に送信を行う。Ｗｅｂブラウザ４２０の解析部４２２は受け取ったＨＴＭＬデータを解析し、画面表示部４２３は、ＵＩ表示装置２０７にログイン画面の表示を行う。
【００９３】
図１１（Ａ）はログイン画面の例である。ユーザは、ＩＤ入力欄１３０１、パスワード入力欄１３０２に、それぞれ、印刷サービス４７０を利用するために必要なＩＤとパスワードを入力する。
【００９４】
ユーザにより、Ｓ１２０２で表示されたログイン画面のログインボタン１３０３が押されると、Ｗｅｂブラウザ４２０は、Ｗｅｂアプリケーション４１０に対して、ログインの実行を指示する（Ｓ１２０３）。すなわち、Ｗｅｂブラウザ４２０は、前記ログイン画面で設定されたＩＤとパスワードをＷｅｂアプリケーション４１０に通知する。通信にはＨＴＴＰ／ＨＴＴＰＳプロトコルのＰＯＳＴコマンドを利用する。
【００９５】
Ｓ１２０４では、Ｗｅｂアプリケーション４１０のプリンタ情報取得部４１３は、前記ステップ１２０３で通知されたＩＤとパスワードを用いて印刷サービス４７０にログインを行う。次に、プリンタ情報取得部４１３は、プリンタ情報を取得するため印刷サービス４７０のプリンタ情報提示部４７７にリクエストを送る。なお、ログイン方法は、Ｂａｓｉｃ認証や、Ｗｅｂサービスによる認証など、ユーザの権限の正当性を検証することができればどのような方法でも良い。Ｓ１２０５では、プリンタ情報提示部４７７は、制御部４７２を介してプリンタ情報格納部４７３からプリンタ情報を取得し、プリンタ情報取得部４１３に送信する。
【００９６】
図１１（Ｂ）はプリンタ情報の例である。プリンタ情報には、ユーザが利用可能なプリンタＩＤ１３０１とプリンタ名が含まれる。Ｓ１２０６では、Ｗｅｂアプリケーション４１０のロジック部４１２は、前記Ｓ１２０５で取得したプリンタ情報を元に、プリンタ選択や印刷の設定が可能な印刷設定画面を生成する。次にプレゼンテーション部４１１は生成された画面をＷｅｂブラウザ４２０に送信する。Ｗｅｂブラウザ４２０の解析部４２２は、受け取った印刷設定画面のＨＴＭＬデータを解析し、画面表示部４２３を介してＵＩ表示装置２０７に印刷設定画面の表示を行う。
【００９７】
図１１（Ｃ）は印刷設定画面の例である。プリンタ選択リストボックス１３０４には、ユーザが利用可能なプリンタの一覧が設定されており、ユーザは印刷を実行するプリンタを選択する。本実施例ではユーザは、ＭＦＰ１０１に対応するプリンタを選択する。また、図１１（Ｃ）の例では、サイズ選択リストボックス１３０５、カラー選択リストボックス１３０６、両面印刷選択リストボックス１３０７が存在し、ユーザは、印刷用紙サイズや、印刷カラーモード、片面／両面設定を行うことができる。
【００９８】
ユーザにより、Ｓ１２０６で表示された印刷設定画面の実行ボタン１３０８が押されると、Ｗｅｂブラウザ４２０は、Ｗｅｂアプリケーション４１０に対して印刷要求を指示する（Ｓ１２０７）。すなわち、Ｗｅｂブラウザ４２０は、前記印刷設定面で設定された情報をＷｅｂアプリケーション４１０に通知する。通信にはＨＴＴＰプロトコルのＰＯＳＴコマンドを利用する。
【００９９】
Ｓ１２０８では、Ｗｅｂアプリケーション４１０の印刷指示部４１４は、印刷サービス４７０の印刷指示受付部４７６に対して印刷指示を送信する。すなわち、印刷指示部４１４は、Ｗｅｂブラウザ４２０から依頼された印刷要求に応じて、ネットワークを介して印刷サービスに対して印刷指示を行う印刷指示手段として機能する。印刷指示受付部４７６は、印刷指示を受信すると、当該印刷指示を制御部４７２に渡す。
【０１００】
図１２（Ａ）は、印刷サービス４７０に送信された印刷指示の例である。印刷サービスに対する印刷指示は、前記ステップ１２０７でＷｅｂアプリケーション４１０に送信された使用されるプリンタのプリンタＩＤ１４０１と印刷設定１４０２を含む。また印刷設定１４０２には、印刷コンテンツの所在１４０３が記載されている。印刷指示部４１４は、この時、印刷設定がファイルフォーマット変換に関する設定を含む場合に、印刷サービス４７０に印刷設定に応じたファイルフォーマット変換を行わせる。印刷サービス４７０は、ファイルフォーマット変換を行うことにより印刷データを生成する。
【０１０１】
Ｓ１２０９では、印刷データ情報取得部４７１が、制御部４７２の指示に従って、前記印刷設定に含まれる印刷コンテンツの所在１４０３で示される場所から印刷データを取得するため、Ｗｅｂアプリケーション４１０にリクエストを送る。ステップ１２１０では、Ｗｅｂアプリケーション４１０は、前記ステップ１２０９のリクエストのレスポンスとして印刷データ情報取得部４７１に印刷データを送り、印刷データ情報取得部４７１が当該印刷データを制御部４７２に渡す。
【０１０２】
印刷コンテンツはＷｅｂアプリケーション４１０が保持しても良いし、他のファイルサーバが保持していても良い。また、本実施例では、印刷データは印刷データ情報取得部４７１からＷｅｂアプリケーション４１０にリクエストを行うことにより取得されるが、Ｗｅｂアプリケーション４１０からＳ１２０８の印刷実行要求時に印刷サービス４７０に送信する構成を用いてもよい。また、本実施例では、印刷データ取得の際の通信プロトコルはＨＴＴＰ／ＨＴＴＰＳを想定しているが、印刷サービス４７０が印刷データを取得できればその他のプロトコルでもよい。
【０１０３】
Ｓ１２１１では、制御部４７２は、印刷データを印刷データ格納部４８１に格納し、印刷サービス印刷設定を印刷設定格納部４８２に格納する。ユーザが印刷設定でファイルフォーマットを指定している場合、Ｓ１２１１で印刷データ情報取得部４７１は、使用されるプリンタのプリンタ情報から印刷可能なデータ形式を参照する。そして必要に応じてデータ形式の変換を行う。また、本実施例では、印刷データ情報取得部４７１が取得した印刷データからデータ形式を判断するが、Ｓ１２０８において、Ｗｅｂアプリケーション４１０が、変換する印刷データのデータ形式を指示するようにしてもよい。印刷指示受付部４７６は、印刷データ格納部４８１、および印刷設定格納部４８２から格納が終了した旨を受信したことに応じて、ジョブ情報を生成し、ジョブ状態格納部４７４に格納する。このジョブ情報にはジョブを識別するための一意なＩＤであるジョブＩＤと、ジョブの実行ステータスを表すジョブ状態が含まれる。
【０１０４】
Ｓ１２１２では、印刷指示受付部４７６は、ジョブ状態格納部４７４にジョブ情報を格納すると、Ｓ１２０８の印刷指示リクエストに対するレスポンスを印刷指示部４１４に返す。
【０１０５】
図１２（Ｂ）は、印刷サービス４７０に送信された印刷指示に対するレスポンスの例である。Ｓ１２１１で印刷指示受付部４７６が生成したジョブ情報に含まれるジョブＩＤ１４０４が記載されている。Ｓ１２１３では、Ｗｅｂアプリケーション４１０のロジック部４１２は実行中画面を生成する。次にプレゼンテーション部４１１は生成された画面をＷｅｂブラウザ４２０に実行中画面を送信する。
【０１０６】
図１３（Ａ）は、実行中画面の表示例である。本実施例では「印刷実行中です。」が表示される。また、図１３（Ｃ）は、図１３（Ａ）の実行中画面のＨＴＭＬデータである。実行中画面のデータにはポーリング設定１５０１が記載されており、Ｗｅｂブラウザ４２０は、このポーリング設定１５０１に従って、Ｗｅｂアプリケーション４１０に対して一定時間経過後にリクエスト（ジョブ情報画面の取得要求）を送信する。ジョブ情報画面の取得要求は、印刷サービス４７０が管理するジョブ状態に応じたジョブ情報画面の送信を求める要求である。
【０１０７】
Ｓ１２１４では、印刷通知送信部４８３が、制御部４７２の指示に従って、印刷サービス通信モジュール４６０の印刷通知受信部４６５に、プリンタ印刷指示を送信する。本実施例では、印刷通知送信部４８３から印刷通知受信部４６５にプリンタ印刷指示を送信するが、印刷通知受信部４６５から、定期的に印刷通知送信部４８３にプリンタ印刷指示をリクエストする構成を用いても良い。
【０１０８】
図１４は、プリンタ印刷指示の例である。プリンタ印刷指示には、印刷データ取得先情報１６０１と印刷設定取得先情報１６０２が含まれる。
【０１０９】
Ｓ１２１５では、印刷通知受信部４６５は、プリンタ印刷指示を受け取ると、印刷通知送信部４８３に対して応答を返す。
【０１１０】
Ｓ１２１６では、印刷データ取得部４６２は、プリンタ印刷指示の印刷データ取得先情報１６０１に記載されている場所に、印刷データを要求する。また、印刷設定取得部４６４は、プリンタ印刷指示の印刷設定取得先情報１６０２に記載されている場所に、プリンタ印刷設定を要求する。
【０１１１】
Ｓ１２１７では、印刷データ格納部４８２は、Ｓ１２１６の要求のレスポンスとして、印刷データ取得部４６２に印刷データを送信する。印刷データ取得部４６２は、受信した印刷データを制御部４６７に渡す。また、印刷設定格納部４８２は、Ｓ１２１６の要求のレスポンスとして、プリンタ印刷設定取得部４６４にプリンタ印刷設定を送信する。印刷設定取得部４６４は、受信した印刷設定を制御部４６７に渡す。
【０１１２】
図１５はプリンタ印刷設定の例である。プリンタ印刷設定には、印刷用紙サイズや、カラー設定、両面設定などが記載されている。
【０１１３】
Ｓ１２１８では、制御部４６７は、Ｓ１２１６、Ｓ１２１７で取得した印刷データ、プリンタ印刷設定を元に印刷ジョブ生成部４６６にプリンタ印刷ジョブの生成を依頼する。印刷ジョブ生成部４６６は、印刷ジョブ生成の依頼を受けると、プリンタ印刷ジョブを生成し、ジョブ管理部４５１に登録する。ジョブ実行部４５２はジョブ管理部４５１を監視しており、ジョブ管理部にプリンタ印刷ジョブが投入されると、ジョブ実行部４５２にはプリンタ印刷ジョブを実行する。
【０１１４】
Ｓ１２１９では、制御部４６７は、プリンタ印刷ジョブが完了したことに応じて、ジョブ状態送信部４６３にジョブ状態送信の指示を出す。ジョブ状態送信部４６３は、印刷制御部の指示に従って、ジョブ状態受信部４８４にジョブ状態変更通知を送信する。ジョブ状態受信部４８４は、ジョブ状態変更通知を受信すると、制御部４７２にジョブ状態変更通知を渡す。制御部４７２は、この印刷状態の変更通知に従って、ジョブ状態格納部４７４に格納されているジョブのジョブ状態を更新し、更新後のジョブ状態を管理する。この際、制御部４７２はジョブ状態変更通知に記載されているジョブＩＤと一致するジョブのジョブ状態を更新する。
【０１１５】
図１６（Ａ）はジョブ状態変更通知の例である。ジョブ状態変更通知は、ジョブ状態が変更されるジョブのジョブＩＤ１８０１と、変更後のステータス１８０２を含む。Ｓ１２２０では、ジョブ状態受信部４８４は、ジョブ状態送信部４６３に対して、ジョブ状態変更通知に対するレスポンスを返す。
【０１１６】
図１６（Ｂ）は、ジョブ状態変更通知に対するレスポンスの例である。このレスポンスには、ジョブ状態の変更が成功したかどうかが記載されている。ジョブ状態送信部４６３は、ジョブ状態変更の成否によって、印刷状態変更通知を再送しても良い。
【０１１７】
Ｓ１２２１では、Ｗｅｂブラウザ４２０は、Ｓ１２１３で受信した実行中画面に記載されているポーリング設定１５０１に従って、Ｗｅｂアプリケーション４１０に対して、定期的にリクエスト（ジョブ情報画面の取得要求）を送信する。そして、Ｗｅｂアプリケーション４１０は、Ｗｅｂブラウザ４２０からジョブ情報画面の取得要求を定期的に受け付ける。
【０１１８】
Ｓ１２２２では、Ｗｅｂアプリケーション４１０のジョブ状態取得部４１５は、印刷サービス４７０のジョブ状態提示部４７８に対して、ジョブ状態取得要求を送信する。
【０１１９】
図１７（Ａ）は、ジョブ状態取得要求の例である。ジョブ状態取得要求１９０１は、対象となるジョブを特定するためのジョブＩＤ１９０１を含む。Ｓ１２２３では、ジョブ状態提示部４７８は、ジョブ状態格納部から対象となるジョブのジョブ状態を取得し、ジョブ状態取得要求に対するレスポンスを生成して、ジョブ状態取得部４１５に送信する。
【０１２０】
図１７（Ｂ）は、ジョブ状態取得要求に対するレスポンスの例であり、ジョブ状態１９０２を含む。ジョブ状態取得部４１５は、このレスポンスが含むジョブ状態１９０２を取得する。すなわち、ジョブ状態取得部４１５は、印刷サービス４７０が管理するジョブ状態（印刷状態）をネットワークを介して取得する印刷状態取得手段として機能する。
【０１２１】
具体的には、Ｗｅｂアプリケーション４１０のジョブ状態取得部４１５が、Ｗｅｂブラウザ４２０からジョブ情報画面の取得要求を受け付けたことを契機として（Ｓ１２２１）、印刷サービス４７０から印刷状態を取得する。前述したように、Ｗｅｂブラウザ４２０は、ポーリング設定１５０１に従って、ジョブ情報画面の取得要求を行う。従って、ジョブ状態取得部４１５は、印刷指示部４１４が印刷サービス４７０に対して印刷指示を出した後に定期的にポーリングを行うことによって、印刷サービス４７０からジョブ状態を取得することになる。
【０１２２】
Ｓ１２２４では、ロジック部４１２は、Ｓ１２２３で取得したジョブ状態取得要求に対するレスポンスが示すジョブ状態に応じたジョブ情報画面を生成する。すなわち、ロジック部４１２は、取得した印刷状態に応じてジョブ情報画面を生成する画面生成手段として機能する。ロジック部４１２は、取得されたジョブ状態が変更された場合に、該印刷状態に応じた更新画面を生成する。この例では、Ｗｅｂアプリケーション４１０のジョブ状態取得部４１５は、ＭＦＰ１０１がジョブ状態変更通知を印刷サービス４７０に送信した後（図１０のＳ１２１９）に、印刷サービス４７０から当該レスポンスを受信する。従って、当該レスポンスが含むジョブ状態１９０２は、上記ジョブ状態変更通知がされる前のジョブ状態から変更されている。その結果、ロジック部４１２は、当該変更後のジョブ状態に応じた更新画面を生成する。
【０１２３】
次に、プレゼンテーション部４１１は、ロジック部４１２が生成したジョブ情報画面をＷｅｂブラウザ４２０に送信する。すなわち、プレゼンテーション部４１１は、ロジック部４１２が生成したジョブ情報画面を、ネットワークを介してＷｅｂブラウザ４２０に送信する画面送信手段として機能する。Ｗｅｂブラウザ４２０の画面表示部４２３は、プレゼンテーション部４１１から受信したジョブ情報画面を表示する。本実施例では、Ｓ１２２３において、印刷完了を示すステータスが取得されており、Ｗｅｂアプリケーション４１０は、完了画面を生成して、Ｗｅｂブラウザ４２０に送信する。
【０１２４】
図９および図１０を参照した上記説明から、ＭＦＰ１０１は、印刷サービス４７０が生成した印刷データを印刷サービス４７０から取得して印刷を実行する（図１０のＳ１２１８）。そして、ＭＦＰ１０１は、印刷状態が変化する度に印刷サービス４７０に対して当該変化した印刷状態を通知して管理させる（図１０のＳ１２１９）。そして、Ｗｅｂアプリケーションサーバ１０２の印刷状態取得部４１５が、印刷サービス４７０が管理する、当該変化した印刷状態を取得する（図１０のＳ１２２３）。
【０１２５】
印刷が完了していない場合、プレゼンテーション部４１１は、ポーリング設定１５０１が記載されたコンテンツをとともにＷｅｂブラウザ４２０に送信する。その後Ｓ１２２１に進む。印刷が完了した場合、完了画面では図１３（Ｂ）に示されるように、画面表示部４２３は、「印刷が完了しました！」を表示する。
【０１２６】
以上のように、実施例１では、ファイルフォーマット変換機能を持った外部の印刷サービスを利用して印刷を実行することにより、ファイルフォーマット変換への要求に低コストで答えてＷｅｂアプリケーションからの印刷機能を提供することができる。また、ジョブの状態が変化した際に、外部印刷サービスにおいて変化したジョブ状態を示すジョブ情報画面をＷｅｂアプリケーションからＷｅｂブラウザに通知する。これによりＷｅｂブラウザの画面を定期的に更新させるコンテンツを配信する仕組みが構築され、外部印刷サービスで提供されるジョブの状態の変化に伴って、印刷状態毎にデバイスのジョブ情報画面を更新することができる。
【０１２７】
（実施例２）
実施例１では、Ｗｅｂアプリケーション４１０がＷｅｂブラウザ４２０にジョブ状態を要求することで印刷サービス４７０からジョブ状態を取得する。ここで、印刷サービス４７０のジョブ状態は、ＭＦＰの印刷プロキシ４６７が印刷サービス４７０に通知することで更新される。そしてＷｅｂブラウザの画面表示部４２３に更新画面を表示させるためには、Ｗｅｂアプリケーション４１０から印刷サービス４７０に定期的にポーリングする必要がある。しかしながら、Ｗｅｂアプリケーション４１０が印刷サービス４７０に対して頻繁にポーリングするのでは、Ｗｅｂアプリケーションサーバ１０２の負担が大きい。
【０１２８】
そこで、実施例２では、印刷プロキシを含むＭＦＰから、ジョブ状態の更新があった際に直接Ｗｅｂアプリケーション４１０にジョブ状態を通知させる処理を行う。以下、図を用いて、実施例１との差分を説明する。
【０１２９】
図１８は、サービスプロバイダ４４０の処理部４４２の構成である。実施例２では、処理部４４２は、印刷状態受信手段として機能するジョブ状態受信部２００１、ジョブ状態通知部２００２、タイマー監視部２００３、および制御部２００４を備える。
【０１３０】
動作要求送信部４３１は、Ｗｅｂブラウザ４２０を介してＷｅｂアプリケーション４１０から動作要求を受信する。次に、動作要求受信部４４１は、動作要求送信部４３１から動作要求を受け取り、処理部４４２に渡す。処理部４４２の制御部２００４は、動作要求受信部４４１で受け取った動作要求に従って、ジョブ状態受信部２００１にジョブ状態の監視を指示する。ここで、実施例２における動作要求は、Ｗｅｂアプリケーション４１０から指定されたジョブ状態、すなわち印刷状態の変更通知の要求を含む。また、制御部２００４は、ジョブ状態受信部２００１からジョブ状態変更の通知を受信すると、印刷状態通知手段として機能するジョブ状態通知部２００２にジョブ状態の通知を依頼する。
【０１３１】
以下、上述した動作要求の送信を詳細に説明する。まず、Ｗｅｂアプリケーションサーバ１０２は、Ｗｅｂブラウザ４２０から印刷実行要求を受け付けると、印刷サービス４７０にジョブの生成を依頼する。印刷サービス４７０はジョブを生成すると、Ｗｅｂアプリケーションサーバ１０２に生成したジョブを送る。図２１のＳ２３１２に示すように、Ｗｅｂアプリケーションサーバ１０２は、生成されたジョブを受信する。次に、Ｗｅｂアプリケーションサーバ１０２のロジック部４１２は、該ジョブのジョブ状態の変更通知を求める処理要求を生成する。Ｓ２３１３では、プレゼンテーション部４１１は、生成された処理要求をＭＦＰ１０１のＷｅｂブラウザ４２０に対して送信する。なお、処理要求は、ジョブＩＤと、ジョブ状態も含む。処理要求が含むジョブＩＤは、ジョブ状態の変更通知に対応するジョブの識別情報である。本実施例では、処理要求が含むジョブ状態は、Ｗｅｂアプリケーションサーバ１０２によって指定されるジョブ状態である。しかし、この指定は、ユーザがＷｅｂブラウザ４２０から入力した内容によってＷｅｂアプリケーションで任意に変更して良い。また、ジョブＩＤは、Ｗｅｂアプリケーション４１０で生成してもよく、印刷サービス４７０で生成してもよい。
【０１３２】
なお、処理要求は、当該ジョブＩＤのジョブが当該指定されたジョブ状態になったことを条件として、ジョブ状態の変更通知を求める要求である。動作要求送信部４３１は、Ｗｅｂブラウザ４２０が受信した処理要求が含むジョブＩＤとジョブ状態とを動作要求として動作要求受信部４４１に送信する。この動作要求も、処理要求と同様に、当該ジョブＩＤのジョブが当該指定されたジョブ状態になったことを条件として、ジョブ状態の変更通知を求める要求である。つまり、動作要求送信部４３１は、Ｗｅｂアプリケーション４１０が指定した印刷状態を含む動作要求を送信する動作要求手段として機能する。本実施例では、動作要求は印刷完了要求を想定しているので、動作要求には、印刷完了（ＤＯＮＥ）が記載される。
【０１３３】
また、ジョブ状態送信部４６３は、各ジョブ状態が変化した場合に、印刷サービス４７０のジョブ状態受信部４８４に対して、変化したジョブ状態を送信する。すなわち、ジョブ状態送信部４６３は、ネットワークを介して印刷サービス４７０に印刷状態を送信する印刷状態送信手段として機能する。更に、ジョブ状態送信部４６３は、ジョブ状態受信部４８４に対して、印刷サービス４７０に送信した印刷状態をジョブ状態受信部２００１に送信する。
【０１３４】
図１９は動作要求受信部４４１で受信した動作要求の例である。図１９の動作要求には、通知するジョブのジョブＩＤ２１０１と、通知するジョブ状態２１０２（すなわち、印刷完了状態）と、通知先２１０３が記載されている。
【０１３５】
ジョブ状態受信部２００１は、ジョブ状態送信部４６３からジョブ状態が変更されたことを受信し、制御部２００４に、ジョブ状態が変更されたジョブのジョブＩＤとジョブ状態とを知らせる。ジョブ状態送信部４６３は、印刷サービス４７０のジョブ状態受信部４８４に送信したジョブ状態と整合するジョブ状態をジョブ状態受信部２００１に送信する。すなわち、ジョブ状態受信部２００１は、ジョブ状態送信部４６３が印刷サービス４７０に送信するジョブ状態を受信する受信手段として機能する。
【０１３６】
ジョブ状態受信部２００１は、ジョブ状態送信部４６３から受信したジョブＩＤとジョブ状態とを制御部２００４に渡す。制御部２００４は、ジョブ状態受信部２００１から受け取ったジョブＩＤおよびジョブ状態と、動作要求に含まれるジョブＩＤおよびジョブ状態とを比較する。ジョブ状態受信部２００１から受け取ったジョブ状態が動作要求に含まれるジョブ状態である場合、制御部２００４は、ジョブ状態通知部２００２にジョブ状態変更通知を依頼する。
【０１３７】
すなわち、制御部２００４は、動作要求が含むジョブ状態とジョブ状態受信部２００１が受信したジョブ状態を比較し、比較結果に基づいてジョブ状態の変更通知を生成する変更通知生成手段として機能する。本実施例では、制御部２００４がジョブ状態通知部２００２にジョブ状態変更通知の依頼をするのは、以下の条件が成立した場合のみである。すなわち、動作要求送信部４３１から受信した動作要求が含むジョブＩＤおよびジョブ状態と、ジョブ状態受信部２００１がジョブ状態送信部４６３から受信したジョブＩＤおよびジョブ状態とが一致した場合にのみジョブ状態変更通知の依頼が行われる。しかし、本発明は、制御部２００４が、動作要求が含むジョブＩＤおよびジョブ状態と、ジョブ状態受信部２００１が受信したジョブＩＤおよびジョブ状態との比較結果に基づいてジョブ状態変更通知の依頼をするのであれば、任意の条件を適用することができる。
【０１３８】
図２２に示されるように、ジョブ状態通知部２００２は、制御部２００４の指示に従って、ジョブ状態変更通知２２０１を生成し、Ｗｅｂブラウザ４２０のアップロード処理部４２５にジョブ状態変更通知２２０１を渡す。Ｗｅｂブラウザ４２０は、Ｗｅｂアプリケーション４１０にジョブ状態変更通知２２０１を送信し、ジョブ状態をアップロードするように依頼する。すなわち、ジョブ状態通知部２００２は、ジョブ状態変更通知を、Ｗｅｂブラウザ４２０を介してＷｅｂアプリケーションサーバ１０２に送信する通知手段として機能する。
【０１３９】
図２０（Ａ）は、ジョブ状態変更通知の例を示す。ジョブ状態変更通知には、ジョブ状態が変更されたジョブのジョブＩＤと、変更されたステータス（ジョブ状態）が記載されている。
【０１４０】
Ｗｅｂアプリケーションサーバ１０２のジョブ状態取得部４１５は、指定したジョブ状態に対応するジョブ状態を取得する。ロジック部４１２は、取得したジョブ状態に応じて更新画面を生成する。そして、プレゼンテーション部４１１は、ロジック部４１２が生成した更新画面を、ネットワークを介してＷｅｂブラウザ４２０に送信する。Ｗｅｂブラウザ４２０の画面表示部４２３が、プレゼンテーション部４１１から受信した更新画面を表示する。
【０１４１】
タイマー監視部２００３は、制御部２００４が動作要求受信部４４１を通じて動作要求を受け付けた際に、タイマーの監視を開始する。タイマー監視部２００３は、一定時間が経つと制御部２００４に知らせる。すなわちタイマー監視部２００３は、制御部２００４が動作要求を受信してから予め決められた時間が経過したかを判断するタイマー監視手段として機能する。なお、タイマーの監視はジョブＩＤ２１０１毎に行われる。
【０１４２】
制御部２００４は、タイマー監視部２００３からの通知を受け、予め定められた時間が経過したか否かを判断する。制御部２００４は、予め定めた時間が経過したと判断した場合に、ジョブ状態受信部２００１が受信した印刷状態が、動作要求に含まれるジョブ状態に変更されているかを判断する。すなわち、制御部２００４は、動作要求に含まれるジョブ状態に変更されていない場合に、タイムアウトが発生したと判断するタイムアウト判断手段として機能する。
【０１４３】
具体的には、制御部２００４は、タイマー監視部２００３からジョブＩＤ２１０１を含む通知を受け取り、該当ジョブのジョブ状態が、通知するジョブ状態２１０２（すなわち、印刷完了状態）に変更されていない場合、タイムアウトと判断する。制御部２００４がタイムアウトと判断した場合、まず、印刷プロキシ４６０の制御部４６７に該当ジョブをキャンセルするように依頼する。依頼をうけた制御部４６７は、ジョブ管理部４５１に登録された該当ジョブをキャンセルする。すなわち、制御部４６７は、タイムアウト判断手段（制御部２００４）がタイムアウトが発生したと判断した場合に、動作要求に対応する印刷をキャンセルするキャンセル手段として機能する。より具体的には、制御部４６７は、該当ジョブのジョブ状態が、動作要求に含まれるジョブＩＤのジョブ状態に変更されていない場合、このジョブＩＤに対応するジョブをキャンセルする。
【０１４４】
ところで、ジョブ管理部４５１にジョブが存在しない場合、印刷ジョブ生成部４６６にてジョブが生成中である可能性がある。この場合、ジョブが生成された後にジョブ管理部４５１に当該ジョブが登録され、ジョブが実行される。その後、印刷状態の変更通知がジョブ状態送信部を介して印刷サービス４７０のジョブ状態受信部４８４に送信される可能性がある。そのため、制御部４６７は、ジョブ管理部４５１にジョブが存在しない場合、該当ジョブの印刷指示を受信したときに、そのジョブをキャンセルする。これによりＷｅｂアプリケーション４１０に通知されるジョブ状態と、印刷サービスに通知されるジョブ状態との整合をとることができる。タイムアウトが発生した場合、制御部２００４は、ジョブ状態通知部２００２に対して、エラーが発生したことを示すジョブ状態の変更通知を行うように依頼する。
【０１４５】
図２０（Ｂ）は、タイムアウトした際のジョブ状態変更通知の例である。ジョブ状態にはＥＲＲＯＲ２２０２が記載される。本実施例では、タイムアウトまでの時間は固定であるが、動作要求にタイムアウトまでの時間を記載するようにして、Ｗｅｂアプリケーション４１０から時間を指定できるようにしても良い。
【０１４６】
図２１および図２２は本実施形態における情報処理システムにおいて、印刷サービス利用して印刷を実行する一連の処理を示したシーケンス図である。実施例１との差分について説明する。
【０１４７】
図２２のＳ２３２５では、ジョブ状態送信部４６３は、ジョブ状態受信部２００１に対して、ジョブ状態を変更するジョブのジョブＩＤと、変更後のジョブ状態を通知する。Ｓ２３２６では、ジョブ状態受信部２００１は応答を返す。Ｓ２３２９では、ジョブ状態通知部２００２は、Ｗｅｂブラウザ４２０のアップロード処理部４２５に、ジョブ状態変更通知を渡す。Ｓ２３３０では、アップロード処理部４２５がジョブ状態通知部２００２に応答を返す。Ｓ２３３１では、アップロード処理部４２５は、前記Ｓ２３２９におけるジョブ状態通信部２００２の依頼に従って、Ｗｅｂアプリケーション４１０にジョブ状態変更後のジョブ情報画面を要求する。アップロード処理部４２５は、この要求に、ジョブ状態変更通知を含める。これにより、Ｗｅｂアプリケーション４１０のジョブ状態取得部４１５は、当該ジョブ状態変更通知が含むジョブ状態を取得する。
【０１４８】
Ｓ２３３２では、Ｗｅｂアプリケーション４１０のロジック部４１２は、前記Ｓ２３３１で受信したジョブ状態変更通知が含むジョブ状態に応じたジョブ情報画面を生成する。次にプレゼンテーション部４１１は、生成されたジョブ情報画面をＷｅｂブラウザ４２０に対してレスポンスとして送信する。ジョブ状態が実行中であれば、図１３（Ａ）、図１３（Ｃ）で示される実行中画面を返す。また、ジョブが完了していれば、図１３（Ｂ）で示される印刷完了画面を返す。Ｗｅｂアプリケーション４１０がジョブの状態を管理している場合、受信したジョブ状態変更通知にしたがって状態を更新する。
【０１４９】
実施例２では、ＭＦＰ１０１は、印刷サービス４７０が生成した印刷データを印刷サービス４７０から取得して印刷を実行する（図２２のＳ２３２４）。そして、ＭＦＰ１０１は、印刷状態が変化する度に印刷サービス４７０に対して当該変化した印刷状態を通知して管理させる（図２２のＳ２３２７）。一方、Ｗｅｂアプリケーションサーバ１０２の印刷状態取得部４１５は、印刷サービス４７０が管理する、当該変化した印刷状態を取得する（図２２のＳ２３３１）。すなわち、ジョブ状態取得部４１５は、印刷サービス４７０が生成した印刷データを印刷サービス４７０から取得して印刷を実行するＭＦＰ１０１が印刷状態が変化する度に印刷サービス４７０に対して通知して管理させる印刷状態を、ＭＦＰ１０１から直接取得する。
【０１５０】
実施例２によれば、Ｗｅｂアプリケーション４１０がジョブ状態の更新を知るために、定期的に印刷サービス４７０にジョブ状態を問い合わせる必要がなくなる。同様に、Ｗｅｂブラウザ４２０も定期的にＷｅｂアプリケーション４１０にリクエストを行う必要がなくなる。従って、ジョブ状態が更新されてから、ＭＦＰ１０１上の表示が更新されるまでの時間を短縮することができる。さらに、実施例２によれば、頻繁なポーリングによるＭＦＰ１０１とＷｅｂアプリケーションサーバ１０２の負荷を軽減することができる。
【０１５１】
（実施例３）
上述した実施例２では、サービスプロバイダ４４０の処理部４４２が備えるジョブ状態通知部２００２は、Ｗｅｂブラウザ４２０を介して、Ｗｅｂアプリケーション４１０に対してジョブ状態変更の通知を行う。しかし、Ｗｅｂブラウザがアップロード処理部４２５に相当する機能やインターフェースを備えない場合には、サービスプロバイダ４４０は、Ｗｅｂブラウザを介してＷｅｂアプリケーション４１０にジョブ状態変更の通知を行うことはできない。そこで、実施例３では、ジョブ状態通知部２００２が、Ｗｅｂブラウザ４２０を介さずに、直接Ｗｅｂアプリケーション４１０に通知する。これにより、アップロード処理部４２５に相当する機能やインターフェースの無い環境においても実施例２と同様の利点が得られる。
【０１５２】
（実施例４）
実施例１、実施例２、および実施例３において、印刷通知受信部４６５へのプリンタ印刷指示の送信を、印刷通知受信部４６５からのポーリングによって実現する場合がある。このとき、印刷通知受信部４６５がプリンタ印刷指示を受け取るまでに時間がかかることがあるという問題が存在する。また、その他にも、印刷サービス４７０に対して、複数のＭＦＰが紐付いて運用されている場合、印刷サービス側の処理に遅れが生じ、即座にジョブ状態が反映されない可能性がある。
【０１５３】
上記の問題を解決するために、実施例４においては、サービスプロバイダ４４０の動作要求受信部４４１を通じて、処理部４４２が備える制御部２００４に動作要求が来たことをトリガーとして、印刷通知受信部４６５から印刷通知送信部４８３に問い合わせを行う。この問い合わせは、印刷データの取得要求として機能する。印刷データ取得部４６２は、この問い合わせに応じた印刷通知送信部４８３から通知情報を受信し、受信した通知情報の記載内容に基づいて、印刷データ格納部４８１から印刷データを取得する。
【０１５４】
すなわち、実施例４においては、印刷通知受信部４６５は、制御部２００４が動作要求を受信したことを契機として、ネットワークを介して、印刷サービス４７０に対して印刷データの取得要求を行う印刷データ要求手段として機能する。これにより、Ｗｅｂアプリケーション４１０から印刷サービス４７０に印刷指示がなされてから、印刷プロキシ４６０が印刷指示を受け取るまでのタイムラグを軽減することができる。
【０１５５】
実施例１〜４の説明において、図１１（Ｂ）、図１２、図１４、図１５、図１６、図１７、図１９、図１９はＸＭＬ形式のデータである。しかしながら、そのデータ形式やそのデータを授受する際の通信プロトコルは問わない。例えば、ＪＳＯＮ形式やＳＯＡＰ形式を用いてデータが記述されていても良い。
【０１５６】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。すなわち、上述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１５７】
４１０  Ｗｅｂアプリケーション
４２０  Ｗｅｂブラウザ
４３０  転送アプリケーション
４６０  印刷プロキシ
４７０  印刷サービス
【図１】
2013050804.tif 000003
【図２】
2013050804.tif 000004
【図３】
2013050804.tif 000005
【図４】
2013050804.tif 000006
【図５】
2013050804.tif 000007
【図６】
2013050804.tif 000008
【図７】
2013050804.tif 000009
【図８】
2013050804.tif 000010
【図９】
2013050804.tif 000011
【図１０】
2013050804.tif 000012
【図１１】
2013050804.tif 000013
【図１２】
2013050804.tif 000014
【図１３】
2013050804.tif 000015
【図１４】
2013050804.tif 000016
【図１５】
2013050804.tif 000017
【図１６】
2013050804.tif 000018
【図１７】
2013050804.tif 000019
【図１８】
2013050804.tif 000020
【図１９】
2013050804.tif 000021
【図２０】
2013050804.tif 000022
【図２１】
2013050804.tif 000023
【図２２】
2013050804.tif 000024