説明

情報処理装置、情報処理装置の制御方法、プログラム

【課題】 従来は、サーバから受信したJavaScript(登録商標)の記述からWebサービスを呼び出すSOAPメッセージを生成する為には、Webブラウザを独自に機能拡張する必要があった。
【解決手段】 サーバから、Webサービスを利用するための手順が記述された第1スクリプトと、前記Webサービスの結果をサーバへ返却するため手順が定義された第2スクリプトとを含むHTTPレスポンスを受信するWebブラウザ手段と、前記第1スクリプトが前記Webブラウザ手段により実行されたことに従って、前記情報処理装置が提供するWebサービスとしての処理を行うとともに、前記Webサービスの結果を前記サーバに送信するために前記第2スクリプトを呼び出すHTTPサーバ手段とを有し、前記Webブラウザ手段は、前記第2スクリプトが前記呼出手段により呼び出されたことに従って、前記Webサービスの結果を前記サーバに送信するように制御することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部装置とネットワークを介して接続され、外部装置により受信されるスクリプトを含むデータを表示するブラウザを備えた情報処理装置に関するものである。
【背景技術】
【0002】
従来、コピー機能やプリント機能等の画像処理機能を利用可能な複合機が一般的に知られている。また、このような複合機がWebブラウザを備えている形態も一般的に知られている。
ところで、複合機のWebブラウザを用いて上述のコピー機能を利用する方法として特許文献1のような方法が知られている。
特許文献1は、Webブラウザを備える複合機が、ネットワーク上のサーバ装置から受信したJavaScript(登録商標)付きのHTMLデータを受信し、そのJavaScript(登録商標)に従ってコピー画面の遷移を制御するものである。更に特許文献1によると、JavaScript(登録商標)には複合機が公開しているWebサービスを呼び出すための情報が記述されている。そして、複合機のWebブラウザが、JavaScript(登録商標)から取得した情報を基にWebサービスを呼び出すためのSOAPメッセージを作成するように構成されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−003833号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1では、サーバ装置からのJavaScript(登録商標)の記述をもとに、複合機内のWebブラウザがSOAPリクエストを生成し、複合機内のWebサービスを呼び出している。すなわち、複合機内のWebサービスを呼び出すためのSOAPリクエストを生成するのは、サーバ装置ではなく複合機のWebブラウザであった。
そのため、特許文献1では、以下のような処理を行うことが困難であった。すなわち特許文献1では、JavaScript(登録商標)の記述を元に生成したSOAPリクエストの応答であるSOAPレスポンスを複合機からサーバ装置へ送信し、サーバ装置がそのSOAPレスポンスに応じて新たなSOAPリクエストを複合機へ送信するといったサーバ装置―複合機間の対話的な処理を行うことが困難であった。
本発明は、このような課題に鑑みて、情報処理装置内のWebブラウザがスクリプトを実行して装置内のWebサービスを呼び出すとともに、外部装置で生成したSOAPメッセージに従って当該Webサービスを利用可能とする手段を提供することを目的とする。
【課題を解決するための手段】
【0005】
上記目的を達成するために、本発明の情報処理装置は、外部装置とネットワークを介して通信する情報処理装置であって、HTTPリクエストを前記外部装置に送信するとともに、前記HTTPリクエストに応じて、前記外部装置から、Webサービスを利用するための手順が記述された第1スクリプトと、前記Webサービスの結果を前記外部装置へ送信するため手順が定義された第2スクリプトとを含むHTTPレスポンスを受信するWebブラウザ手段と、前記第1スクリプトが前記Webブラウザ手段により実行されたことに従って、前記情報処理装置が提供するWebサービスとしての処理を行うとともに、前記Webサービスの結果を前記外部装置に送信するために前記第2スクリプトを呼び出すHTTPサーバ手段とを有し、前記Webブラウザ手段は、前記第2スクリプトが前記HTTPサーバ手段により呼び出されたことに従って、前記Webサービスの結果を前記外部装置に送信するように制御することを特徴とする情報処理装置。
【発明の効果】
【0006】
本発明によれば、情報処理装置内のWebブラウザがスクリプトを実行して装置内のWebサービスを呼び出すとともに、外部装置で生成したSOAPメッセージに従って当該Webサービスを利用することが可能となる。
【図面の簡単な説明】
【0007】
【図1】MFP101とサーバ102とから構成される情報処理システムの全体図である。
【図2】MFP101のハードウェア構成を示すブロック図である。
【図3】サーバ102のハードウェア構成を示すブロック図である。
【図4】MFP101のソフトウェア構成を示す図である。
【図5】サーバ102のソフトウェア構成を示す図である。
【図6】MFP101の操作部219に表示される画面の遷移を示す図である。
【図7】情報処理システムで実行される処理のシーケンスを示す図である。
【図8】サーバ102のSOAPプロキシ511により生成されるSOAPリクエスト(XMLデータ)の一例を示す図である。
【図9】サーバ102のXSLTプロセッサ512により生成される、スキャン要求画面601を表示するためのHTMLデータの一例を示す図である。
【図10】MFP101のSOAPサービス412からWebブラウザ400へ出力されるSOAPレスポンスの一例を示す図である。
【図11】MFP101のWebブラウザ400がSOAPレスポンスをコールバックするためのHTTPレスポンスの一例を示す図である。
【図12】MFP101のプロキシサービス411において実行されるHTTPリクエストの処理を表すフローチャートである。
【図13】第2の実施形態におけるサーバ102のソフトウェア構成を示す図である。
【図14】第2の実施形態における情報処理システムで実行される処理のシーケンスを示す図である。
【図15】第2の実施形態におけるスキャン指示画面600を表示するためのHTMLデータの一例を示す図である。
【発明を実施するための形態】
【0008】
以下、図面を参照して本発明の実施の形態を詳しく説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0009】
<情報処理システムの構成>
図1は、本実施形態における情報処理システムの構成を示す図である。LAN110にはMFP101が接続されており、MFP101はインターネットを介してサーバ102と通信可能に接続されている。そしてLAN110とインターネットの間には、ブロードバンドルーター103が接続されている。ブロードバンドルーター103は、MFP101からサーバ102へのリクエストは許可するが、サーバ102からMFP101へのリクエストは拒否するよう構成されている。ただし、MFP101からサーバ102へのリクエストは許可されるため、そのリクエストに対するレスポンスの中にサーバ102からのメッセージを含めることで、サーバ102からMFP101に情報を伝達することを実現している。
【0010】
図2は、MFP101のハードウェア構成を示すブロック図である。CPU211を含む制御部210は、MFP101全体の動作を制御する。CPU211は、ROM212に記憶された制御プログラムを読み出して読取制御や送信制御などの各種制御を行う。RAM213は、CPU211の主メモリ、ワークエリア等の一時記憶領域として用いられる。
【0011】
HDD214は、画像データや各種プログラム記憶する。操作部I/F215は、操作部219と制御部210とを接続する。操作部219は、タッチパネル機能を有する液晶表示部やキーボードなどを備えている。また、MFP101には後述するWebブラウザ機能が備えられており、Webブラウザはサーバ102から受信したHTMLデータを解析し、受信したHTMLデータの記述に基づく操作画面を操作部219の液晶表示部に表示する。
【0012】
プリンタI/F216は、プリンタ220と制御部210とを接続する。制御部210は、印刷すべき画像データをプリンタI/F216を介してプリンタ220へ転送し、プリンタ220に記録媒体上に印刷させる。
【0013】
スキャナI/F217は、スキャナ221と制御部210とを接続する。スキャナ221は、原稿上の画像を読み取って画像データを生成し、スキャナI/F217を介して制御部210に入力する。
【0014】
ネットワークI/F218は、MFP101の制御 部210をLAN110に接続する。ネットワークI/F218は、LAN110上の外部装置(例えば、サーバ102)に画像データや情報を送信したり、LAN110上の外部装置から各種情報を受信したりする。
【0015】
図3は、サーバ102のハードウェア構成を示すブロック図である。CPU311を含む制御部310は、サーバ102全体の動作を制御する。CPU311は、ROM312に記憶された制御プログラムを読み出して各種制御処理を実行する。RAM313は、CPU311の主メモリ、ワークエリア等の一時記憶領域として用いられる。HDD314は、画像データや各種プログラムを記憶する。
【0016】
ネットワークI/F315は、制御部310(サーバ102)をLAN110に接続する。ネットワークI/F315は、LAN110上の他の装置との間で各種情報を送受信する。
【0017】
図4は、MFP101のソフトウェア構成を説明するための図である。図4に示す各機能部は、MFP101が有するCPU211がROM212に記憶された制御プログラムを実行することにより実現される。
【0018】
MFP101は、Webブラウザ400、HTTPサーバ410、及びジョブ制御部420を備えている。
【0019】
Webブラウザ400は、HTTPのプロトコルにしたがってリクエスト(以下、HTTPリクエストという)を送信するとともに、そのリクエストに対するレスポンス(以下、HTTPレスポンスという)を受信する。そして、受信したHTTPレスポンスを解析して操作画面を表示したり、受信したHTTPレスポンスにJavaScript(登録商標)が含まれる場合にはそのJavaScript(登録商標)を処理したりする。すなわち、Webブラウザ400は、JavaScript(登録商標)を処理することにより、操作画面を動的に書き換えたり、新たなHTTPリクエストを送信したりすることができる。
【0020】
HTTPサーバ410は、Webブラウザ400からのHTTPリクエストを受信して、指定されたWebサービス(本実施形態では、プロキシサービス411)へリクエストを割り当てる。
【0021】
HTTPサーバ410が公開するWebサービスには、プロキシサービス411、およびSOAPサービス412がある。
【0022】
プロキシサービス411は、Webブラウザ400がJavaScript(登録商標)を処理した結果として送信するHTTPリクエストを受信する。そして、Webブラウザ400から受信したHTTPリクエストを解析し、この解析結果に従って、サーバ102が生成したSOAPサービス412へ送信するためのリクエスト(以下、SOAPリクエストという)を復元する。このサーバ102がSOAPリクエストを生成する方法や、そのSOAPリクエストを復元する方法は、本実施形態の特徴の1つであり、詳細な説明については後述する(図7を参照)。
【0023】
プロキシサービス411はSOAPサービス412へ送信するSOAPリクエストの復元が完了すると、SOAPサービス412へSOAPリクエストを送信する。また、プロキシサービス411は、SOAPサービス412からレスポンス(以下、SOAPレスポンスという)を受信すると、受信したSOAPレスポンスをWebブラウザ400へコールバックするためのJavaScript(登録商標)を生成する。そして、生成したJavaScript(登録商標)を含むHTTPレスポンスをWebブラウザ400に送信する。
【0024】
SOAPサービス412は、受信したSOAPリクエストを解析して、MFP101のスキャナ221やネットワークI/F218を制御してジョブを実行するためのジョブ制御命令を生成する。そしてSOAPサービス412は、このジョブ制御命令をジョブ制御部420に渡すことによりジョブ制御部420にジョブ制御(すなわち、ジョブID等の生成)を指示する。
【0025】
SOAPサービス412は、ジョブ制御部420よりジョブ制御指示の結果(すなわち、ジョブが生成されたか否か等)を受け付けると、SOAPレスポンスをプロキシサービス411へ応答する。
【0026】
ジョブ制御部420は、SOAPサービスから指示されるジョブ制御命令を処理することによって、スキャナ221による読取処理(スキャンジョブ)、プリンタ230による印刷処理(プリントジョブ)、ネットワークI/F218を介した送信処理(送信ジョブ)などを実行する。
【0027】
なお本実施形態では、MFP101で実行されるジョブの一例として、原稿を読み取ってファイルを生成し、サーバ102にファイルを送信するジョブについて説明する。しかし、他にもプリンタ220による印刷処理などを実行するジョブにも適用することができるのはいうまでもない。
【0028】
図5は、サーバ102のソフトウェア構成を説明するための図である。図5に示す各機能部は、サーバ102が有しているCPU311がROM312に記憶された制御プログラムを実行することにより実現される。
【0029】
サーバ102は、HTTPサーバ500およびデータベース501を備えている。HTTPサーバ500は、Webブラウザ400からのHTTPリクエストを受信して、URLで指定されたWebアプリケーション510へそのHTTPリクエストを割り当てる。
【0030】
Webアプリケーション510は、Webブラウザ400からのHTTPリクエストに応じて、Webブラウザ400で表示すべきHTMLデータを生成する。またWebアプリケーション510は、MFP101のWebブラウザ400を介してプロキシサービス411へHTTPリクエストを送信するためのJavaScript(登録商標)を含むHTMLデータを生成することもできる。
【0031】
またWebアプリケーション510は、生成したHTMLデータをHTTPレスポンスとしてWebブラウザ400へ送信する。またWebアプリケーション510は、ジョブ制御部420から送信されるファイルアップロード要求を処理して、要求されたデータをデータベース501に登録する。
【0032】
Webアプリケーション510は、プロキシサービス411へ送信するデータを生成するために、SOAPプロキシ511およびXSLT(XSL Transformations)プロセッサ512を備えている。
【0033】
SOAPプロキシ511は、SOAPサービス412のインタフェースを定義するWSDL(Web Services Description Language)ファイルに基づいて、SOAPサービス412へ送信するSOAPリクエストを生成する。また、SOAPプロキシ511は、SOAPリクエストボディをXMLデータとして生成する。
【0034】
XSLTプロセッサ512は、SOAPプロキシ511が生成したXMLデータを、BASE64エンコード、URLエンコード(パーセントエンコーディングともいう)の順にエンコードして所定のサイズに分割する。そして、XSL(eXtensible Stylesheet Language)データに従ってJavaScript(登録商標)を含むHTMLデータへ変換する。このXMLデータからHTMLデータへの変換方法は本実施形態の特徴の1つであるので、詳細な説明については後述する(図7を参照)。
【0035】
データベース501は、SOAPサービス412からWebアプリケーション510へアップロードされたデータを管理する。
【0036】
ここまでで本実施形態におけるシステム構成の概要を説明した。引き続き、本実施形態におけるシステムで実行される処理の概要を説明する。
【0037】
<情報処理システムで実行される処理>
図6は、図1の情報処理システムにおいて、MFP101スキャン処理を開始する際の、Webブラウザ400による画面遷移の一例を示す図である。図6の各画面は、Webアプリケーション510が応答するHTMLデータをWebブラウザ400が処理することで表示される画面である。以下、各画面について順番に説明する。
【0038】
スキャン指示画面600は、スキャン開始を指示するための画面である。スキャン指示画面600はファイル名入力フィールドおよびスタートボタンを含む。ファイル名入力フィールドには、原稿をスキャンして生成するファイルの名称(ファイル名)が入力される。スタートボタンは、原稿のスキャンを開始するようにWebアプリケーション510へ指示するためのボタンである。Webブラウザ400は、スタートボタンが押下されると、スキャン指示画面600からスキャン要求画面601へ遷移する。
【0039】
スキャン要求画面601は、スキャン指示画面600でスキャンの開始を指示してから実際にジョブが生成されるまでに表示されている画面である。そして、Webブラウザ400は、スキャン要求に基づいてジョブが生成されると、スキャン中画面602を表示する。スキャン中画面602は、スキャンを開始したことを表す画面である。
【0040】
続いて図7を用いて、図1の情報処理システムにより実行される処理のシーケンスを説明する。図7に示す処理シーケンスは、Webブラウザ400にスキャン指示画面600のURLが入力されてページを開くよう指示されると、ステップS701の処理を開始する。
【0041】
ステップS701では、Webブラウザ400がスキャン指示画面600を表示するためのデータの取得要求としてのHTTPリクエストを、Webアプリケーション510へ送信する。
【0042】
ステップS702では、Webアプリケーション510は、S701での要求に応じて、スキャン指示画面600のHTMLデータを含むHTTPレスポンスをWebブラウザ400へ送信する。Webブラウザ400は受信したHTTPレスポンスを処理し、図6に示したスキャン指示画面600を表示する。
【0043】
次に、スキャン指示画面600のスタートボタンがユーザにより押下されると、ステップS703の処理を開始する。ステップS703では、Webブラウザ400がスキャン開始を指示するHTTPリクエストをWebアプリケーション510へ送信する。このとき、スキャン指示画面内のファイル名入力フィールドに入力された値(ファイル名)もWebアプリケーション510へ送信する。
【0044】
ステップS704では、Webアプリケーション510は、SOAPプロキシ511のパラメータに、スキャン設定、文書設定、および送信設定を設定する。図6に示したスキャン指示画面600の例では、入力されたファイル名が送信設定としてSOAPプロキシ511のパラメータに設定される。ただし、スキャン指示画面600において、その他のスキャン設定、文書設定、または送信設定の入力を受け付けるようにしてもよい。
【0045】
次に、Webアプリケーション510は、SOAPプロキシ511に対してXMLデータの生成を要求する。その結果、SOAPプロキシ511は、図8に示すようなSOAPリクエストのエンティティボディを表すXMLデータを生成し、Webアプリケーション510に応答する。
【0046】
図8は、サーバ102のSOAPプロキシ511により出力されるSOAPリクエスト(XMLデータ)の一例を示す図である。このXMLデータは、原稿をスキャンしPDFファイルにした後、Webアプリケーション510へ送信することを指示する制御命令である。
【0047】
スキャン設定には解像度300×300及びフルカラーを指定し、文書設定にはPDFフォーマットを指定し、送信設定には送信先URI“https://docs.xxx.yyy/files”及びファイル名“test.pdf”を指定している。
【0048】
次にステップS706では、Webアプリケーション510は、XSLTプロセッサ512に対してS704で応答されたXMLデータからHTMLデータへの変換を要求する。そうすると、XSLTプロセッサ512は、XMLデータをBASE64エンコード、URLエンコードの順にエンコードし、所定のサイズに分割する。なお、分割されるサイズは、Webブラウザ400が処理可能なURL上限を考慮して決定され、本実施形態においては256文字以内におさまるようにデータを分割する。
【0049】
そして、XSLTプロセッサ512は、XSLに従ってJavaScript(登録商標)を含むHTMLデータ(図9)を生成し、Webアプリケーション510に応答する。
【0050】
図9は、サーバ102のXSLTプロセッサ512により生成される、スキャン要求画面601を表示するためのHTMLデータの一例を示す図である。HTMLデータは複数のパートから構成されており、具体的には、画面表示パート901、SOAPリクエストパート902、SOAPレスポンスパート903から構成されている。以下、それぞれのパートについて詳細に説明する。
【0051】
画面表示パート901には、図6に示したスキャン要求画面601を表示するための画面データが記述されている。Webブラウザ400は、この画面表示パート901に記述されたデータを解析してスキャン要求画面601を操作部219に表示する。
【0052】
SOAPリクエストパート902(第1スクリプト)には、下記で示すデータ構造のscriptタグが複数記述されており、図8に示したXMLデータから作られた分割データをSOAPサービス412へ送信し、Webサービスを呼び出すための手順が記述されている。
【0053】
より具体的に説明すると、これら複数のscriptタグのそれぞれは、URI“http://xxx.0.0.1:8080/Proxy/ScanToSend”(すなわちプロキシサービス411のパス)に対して、以下の3つのデータを転送することを示している。すなわち、Scriptタグは、“sess”で指定されるセッションIDを示すデータ、“id”で指定されるデータ、および“dat”で指定される分割データを転送することを示している。この“dat”で指定されているデータは、上述した、BASE64エンコードされ、URLエンコードされ、所定サイズに分割されたデータである。
【0054】
なお、分割データのデータサイズは、Webブラウザ400が処理可能なURL上限を考慮して決定される。具体的には、scriptタグのsrc属性に指定するURLの文字列長が256文字以下となるように分割データのサイズを決定する。
【0055】
SOAPリクエストパート902は、複数のscriptタグを用い、分割した複数のデータ全てをプロキシサービス411へ送信可能なように記述されている。
【0056】
クエリ“sess”で指定されるデータは、プロキシサービス411が一連の分割データを識別するためのセッションIDである。
【0057】
クエリ“idで指定されるデータは、前述のセッションIDで識別される一連の分割データのうち、その分割データが何番目の分割データであるかを表している。
【0058】
なお、Webブラウザ400がこのSOAPリクエストパート902を処理してプロキシサービス411へHTTPリクエストを送信する処理はステップS708(S710)で後述する。
【0059】
SOAPレスポンスパート903(第2スクリプト)には、プロキシサービス411から送信されるSOAPレスポンスを引数として呼び出されるコールバック関数“getResponse“が記述されている。このコールバック関数”getResponse“は、本実施形態では、Webサービスの結果としてのSOAPレスポンスをサーバ102にアップロードするためにプロキシサービス411によって呼び出される。
【0060】
コールバック関数“getResponse”は、SOAPリクエストパート902に記述されたscriptタグをWebブラウザ400が処理した結果、プロキシサービス411へ送信するHTTPリクエストの応答として呼び出される。このようにscriptタグを使用してHTTPリクエストを送信し、定義済みのコールバック関数を呼び出すことによってその応答を受ける仕組みはJSONP(JSON with Padding)と呼ばれている。Webブラウザ400が、SOAPレスポンスパート903を処理してプロキシサービス411からの応答を受ける処理はステップS717で後述する。
【0061】
次にステップS707では、Webアプリケーション510は、ステップS706においてXSLTプロセッサ512が出力したHTMLデータを含むHTTPレスポンスをWebブラウザ400へ送信する。ステップS707の処理が完了すると、ステップS708の処理へ進み、MFP101で実行される処理に移る。
【0062】
ステップS708では、MFP101のWebブラウザ400が、画面表示パート901を処理してスキャン要求画面601を表示する。そして、Webブラウザ400は、SOAPリクエストパート902内のスクリプトを実行し、プロキシサービス411へ、図8のクエリ“dat”で指定された分割データを含むHTTPリクエストを送信する。Webブラウザ400によるプロキシサービス411へのHTTPリクエストの送信はSOAPリクエストパート902に含まれるscriptタグの数だけ繰り返される。図9の例では、Scriptタグが4つあるので、S708の処理が4回繰り返されることになる。
【0063】
次にステップS709では、プロキシサービス411が、Webブラウザ400から受信したHTTPリクエストに含まれる分割データをセッション毎に結合する。そして、ある1セッションの分割データの結合が完了すると、ステップS710の処理へ進む。
【0064】
ステップS710では、プロキシサービス411は、S709で結合されたデータをURLデコード、BASE64デコードの順にデコードする。ステップS706で説明したように、XSLTプロセッサ512は、SOAPリクエストのエンティティボディを表すXMLデータを、BASE64エンコード、URLエンコードの順にエンコードして所定のサイズに分割する。そのため、分割データを結合してURLデコード、BASE64デコードすると、SOAPリクエストのエンティティボディが復元される。プロキシサービス411が、受信した分割データをセッション毎に結合して指定されたSOAPサービス412へ転送するまでの処理の詳細については図12を用いて後述する。ステップS710の処理が完了すると、ステップS711の処理へ進む。
【0065】
ステップS711では、プロキシサービス411は、ステップS710で生成したSOAPリクエストのエンティティボディを基に、SOAPサービス412へSOAPリクエストを送信する。SOAPサービス412がSOAPリクエストを受信するとステップS712の処理へ進む。
【0066】
ステップS712では、SOAPサービス412は、プロキシサービス411から送信されたSOAPリクエストを解釈して、ジョブ制御部420へジョブ生成を指示する。SOAPサービス412がジョブの生成を指示すると、ジョブ制御部420によるジョブの生成が行われ、ジョブの生成が成功してジョブIDが付与されると、ステップS713の処理へ進む。
【0067】
ステップS713では、SOAPサービス412は、ジョブ生成結果を応答するための、図10に示すようなSOAPレスポンスをプロキシサービス411へ送信する。
【0068】
図10は、MFP101のSOAPサービス412からプロキシサービス411へ出力されるSOAPレスポンスの一例を示す図である。図10に示す例では、ジョブ制御部420に対するジョブ生成の指示の結果は“成功(jobCreated)”であり、生成されたジョブのジョブIDは“0001”であるということを表している。ステップS713の処理が完了すると、ステップS714の処理へ進む。
【0069】
ステップS714では、プロキシサービス411は、ステップS713で受信したSOAPレスポンスをコールバックするためのHTTPレスポンスをWebブラウザ400へ送信する。
【0070】
図11にプロキシサービス411からWebブラウザ400に送信される、SOAPレスポンスをコールバックするHTTPレスポンスの一例を示す。具体的には、図10に示したSOAPレスポンスを引数としたコールバック関数“getResponse”を呼び出す処理がJavaScript(登録商標)で記述されている。
【0071】
ステップS715では、Webブラウザ400は、ステップS714で受信したJavaScript(登録商標)で記述されたHTTPレスポンスを処理して、Webアプリケーション510へSOAPレスポンスを送信する。図9に示したSOAPレスポンスパート903の場合、Webブラウザ400は、まずコールバック関数“getResponse”を呼び出す。次に、Webブラウザ400は、画面表示パート901に定義されたhidden formを用いて指定されたSOAPレスポンスをWebアプリケーション510へsubmitする。すなわち、Webブラウザ400は、S707で受信したHTTPレスポンスに含まれるJavaScript(登録商標)を実行することにより、S714で指定されたSOAPレスポンスをサーバ102へ送信するように制御する。
【0072】
ステップS715の処理が完了すると、ステップS716の処理へ進みサーバ102で実行される処理に移る。
【0073】
ステップS716では、サーバ102のWebアプリケーション510は、SOAPプロキシ511に対して、ステップS717において受信したSOAPレスポンスのXMLデータの解析を要求する。そして、Webアプリケーション510は、SOAPレスポンスのXMLパースの結果より、ジョブ生成結果を判断する。図10で示した例では、上述のようにSOAPサービス412によるジョブ生成の指示の結果は“成功(jobCreated)”である。そのため、次に表示すべきスキャン中画面602(図6)を表示するためのHTMLデータを含むHTTPレスポンスをWebブラウザ400に送信する(S717)。
【0074】
次に、図12に示すフローチャートを用いて、プロキシサービス411がSOAPサービス412へSOAPリクエストを送信する処理の流れを説明する。
【0075】
なお、図12のフローチャートで示す処理を実行するための制御プログラムはROM212に記憶されており、CPU211により実行されるものである。またこのフローチャートは、S708においてプロキシサービス411がWebブラウザ400から分割データを含むHTTPリクエストを受信するたびに処理が開始される。
【0076】
まずステップS1201では、受信した分割データを含むHTTPリクエストを解析し、プロキシサービス411は新たなセッションを開始するか否かを判断する。
【0077】
具体的には、図9のSOAPリクエストパート902に示したHTTPリクエストのクエリ“sess”が示すセッションIDが、プロキシサービス411が確保するバッファに格納されているかどうかを判断する。セッションIDがバッファに格納されていない場合は新しいセッションを開始する。
【0078】
新しいセッションを開始する場合(S1201でYES)は、ステップS1202〜S1204の処理を実行する。セッションIDがバッファに格納されている場合(S1201でNO)は、S708で受信したHTTPリクエストに含まれる分割データが既存のセッションについての分割データであると判断して、ステップS1205の処理へ進む。
【0079】
ステップS1202では、プロキシサービス411は新しいセッションに係る情報を格納するためのバッファを確保する。
【0080】
次にステップS1203では、プロキシサービス411はSOAPサービス412のエンドポイントURIをステップS1202で確保したバッファに格納する。より具体的には、図9に示したSOAPリクエストパート902の場合、プロキシサービス411に対するリクエストURIは“http://xxx.0.0.1:8080/Proxy/ScanToSend”である。プロキシサービス411は、リクエストURIに含まれる、プロトコル名“http”、ホスト名“xxx.0.0.1”、ポート番号“8080”、およびパス名の一部“ScantToSend”よりSOAPサービスのエンドポイントURI“http://xxx.0.0.1:8080/ScanToSend”を生成し、これをバッファに格納する。
【0081】
次にステップS1204では、プロキシサービス411はクエリ“sess”が示すセッションIDをバッファに格納する。図9に示したSOAPリクエストパート902の1番目の分割データの場合、クエリ“sess”が示すセッションIDは“0000”であるので、0000の値がバッファに格納される。
【0082】
次にステップS1205では、プロキシサービス411は分割データをバッファに格納する。図9に示したSOAPリクエストパート902の場合、クエリ“id”が示すID“1”、“2”、“3”または“4”に紐づけてクエリ“dat”が示す分割データをバッファに格納する。
【0083】
次にステップS1206では、プロキシサービス411はセッションを終了するか否かを判断する。セッション終了か否かは、同一セッションの分割データを全て受信したか否かで判断する。図9に示したSOAPリクエストパート902の場合、最後の分割データをリクエストする場合に、クエリ“callback”が指定される。したがってID“4”が最後の分割データとあると判断し、ID“1”、“2”、“3”、“4”が指定された分割データを全て受信した場合にセッション終了であると判断する。セッションを終了すると判断した場合(S1206でYES)は、プロキシサービス411はステップS1207〜S1209の処理を実行する。一方でセッションを終了しないと判断した場合(S1206でNO)は、本フローチャートの処理を終了する。
【0084】
次にステップS1207では、プロキシサービス411はバッファに格納された全ての分割データを結合してデコードする。そしてステップS1208では、プロキシサービス411はバッファに格納されたSOAPサービス412のエンドポイントURIへデコードしたデータを送信する。すなわちSOAPサービス412へ分割データに基づき復元されたSOAPリクエストが送信される。SOAPリクエストの送信が完了するとステップS1208の処理へ進む。ステップS1208では、送信完了したセッションのバッファを解放する。
【0085】
以上より、第1の実施形態について説明した。本実施形態によれば、WebブラウザがMFP内のWebサービスを呼び出すために独自に機能拡張することがなく、MFPの公開するWebサービスを利用することが可能となる。
【0086】
(第2の実施形態)
本発明に係る第2の実施形態について説明する。第1の実施形態との差異は、以下の点である。すなわち、SOAPリクエストを表すXMLデータ800を分割データへ変換する処理を、サーバ102ではなく、Webブラウザ400がスキャン指示画面600に記述されたJavaScript(登録商標)を処理することによって実現する点である。
【0087】
第1の実施形態との差異について、図13乃至15を用いて以下に説明する。
【0088】
図13は、第2の実施形態におけるサーバ102のソフトウェア構成を示す図である。第1の実施形態における図5のサーバ102のソフトウェア構成との差異は、Webアプリケーション500がXSLTプロセッサ512を備えていない点であり、それ以外の構成は図5と同様である。
【0089】
図14は、第2の実施形態における情報処理システムにより実行される処理シーケンスを示す図である。図14において、第1の実施形態で説明した図7の処理シーケンスと同一の処理を行うものについては同一の符号を付しており、説明は省略する。
【0090】
S1400では、サーバ102のWebアプリケーション510は、図15に示すようなJavaScript(登録商標)付きのHTMLデータを、S701での応答として、MFP101のWebブラウザ400へ送信する。S1401では、MFP101のWebブラウザ400は、S1400で受信したHTMLデータを解析し、図6のスキャン指示画面600を表示する。
【0091】
図15は、第2の実施形態におけるスキャン指示画面600を表すHTMLデータの一例を示す図である。第1の実施形態では、Webブラウザ400はスキャン要求画面601に記述されたJavaScript(登録商標)を処理することによって分割データをプロキシサービス411へ転送した。一方第2の実施形態では、Webブラウザ400はスキャン指示画面600を表示するためのHTMLデータに記述されたJavaScript(登録商標)を処理することによってプロキシサービス411へ分割データを転送する。
【0092】
なお、第2の実施形態においては、Webアプリケーション510よりスキャン要求画面601は応答されないため、Webブラウザ400が表示する画面は、スキャン指示画面600からスキャン中画面602へ遷移する。
【0093】
続いてスキャン指示画面600を表すHTMLデータに記述されるJavaScript(登録商標)の処理内容(S1401)について説明する。
【0094】
スキャン指示画面600を表すHTMLデータは、図15に示したように複数のパートから構成されており、具体的には、画面表示パート1501、SOAPリクエストパート1502、およびSOAPレスポンスパート1503から構成される。
【0095】
画面表示パート1501には、図6に示したスキャン指示画面600を表示するためのデータが記述されている。Webブラウザ400は、この画面表示パート1501に記述されたデータを解析してスキャン指示画面600を操作部219に表示する。画面表示パート1501には、原稿のスキャンを開始するようにWebアプリケーション510へ指示するためのフォーム部品を含む。図6の例では、ファイル名を入力するフォーム部品と、入力されたファイル名をサブミットするフォーム部品を含む。
【0096】
またスキャン指示画面600を表すHTMLデータは、第1の実施形態におけるスキャン要求画面601のSOAPリクエストパート902と同様に、SOAPレスポンスをWebアプリケーション510へサブミットするためのhidden formを含む。
【0097】
SOAPリクエストパート1502にはさまざま関数が定義されている。本実施形態では、getRequest関数とpostRequest関数が含まれており、これら関数が適宜実行されることにより、サーバ102から受信したXMLデータを分割データに変換し、MFP101内のWebサービスを呼び出すための制御命令を転送する。
【0098】
getRequest関数は、Webアプリケーション510よりSOAPリクエストを表すXMLデータ800(図8参照)を取得する関数である。getRequest関数は、画面表示パート1501に含まれるformをsubmitすると呼び出され、XMLHttpRequestを用いてWebアプリケーション510へHTTPリクエストを送信する(S1402)。そしてWebアプリケーション510からSOAPリクエストを表すXMLデータをHTTPレスポンスを受信する(S1405)。
【0099】
S1406では、Webブラウザ400は、S1405で受信したHTTPレスポンスに含まれるSOAPリクエストを表すXMLデータ800をパラメータとして“postRequest”関数を呼び出す。
【0100】
postRequest関数は、引数として渡されたXMLデータ800を、BASE64エンコード、URLエンコードを順に行い、複数の分割データへ変換する。そして複数の分割データのそれぞれについて、ScriptタグのソースURIを生成する。最後に、Webブラウザ400は、Scriptタグを動的に生成し、S708で分割データをプロキシサービス411へ送信する。S708で送信されるデータは、本実施形態1で送信されるデータと同等のもの(GETメソッドによるHTTPリクエスト)である。
【0101】
このようにWebブラウザ400は、第1の実施形態におけるSOAPリクエストパート902を処理した場合と同等のHTTPリクエストをプロキシサービス411へ送信する。
【0102】
SOAPレスポンスパート1503は、第1の実施形態におけるスキャン要求画面601のSOAPレスポンスパート903と同じであるため、説明を省略する。
【0103】
第2の実施形態においても、Webブラウザを独自に機能拡張することなく、情報処理装置の公開するWebサービスを利用することが可能となる。
【0104】
(他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0105】
101 MFP
102 サーバ
400 Webブラウザ
411 プロキシサービス
412 SOAPサービス
420 ジョブ制御部
510 Webアプリケーション
511 SOAPプロキシ
512 XSLTプロセッサ

【特許請求の範囲】
【請求項1】
外部装置とネットワークを介して通信する情報処理装置であって、
HTTPリクエストを前記外部装置に送信するとともに、前記HTTPリクエストに応じて、前記外部装置から、Webサービスを利用するための手順が記述された第1スクリプトと、前記Webサービスの結果を前記外部装置へ送信するため手順が定義された第2スクリプトとを含むHTTPレスポンスを受信するWebブラウザ手段と、
前記第1スクリプトが前記Webブラウザ手段により実行されたことに従って、前記情報処理装置が提供するWebサービスとしての処理を行うとともに、前記Webサービスの結果を前記外部装置に送信するために前記第2スクリプトを呼び出すHTTPサーバ手段とを有し、
前記Webブラウザ手段は、前記第2スクリプトが前記HTTPサーバ手段により呼び出されたことに従って、前記Webサービスの結果を前記外部装置に送信するように制御することを特徴とする情報処理装置。
【請求項2】
前記第1スクリプトには、前記外部装置でSOAPリクエストから生成された分割データが含まれており、
前記HTTPサーバ手段は、前記第1スクリプトに含まれる分割データから前記外部装置で生成されたSOAPリクエストを復元し、復元したSOAPリクエストに従って前記Webサービスとしての処理を行うことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1スクリプトには、前記外部装置で生成されたSOAPリクエストを取得する手順と、SOAPリクエストから複数の分割データに変換する手順と、分割データを前記HTTPサーバ手段に転送する手順とが記述されており、
前記Webブラウザ手段は、前記第1スクリプトを実行することにより、前記SOAPリクエストを取得し、前記SOAPリクエストを複数の分割データに変換し、当該変換した複数の分割データを前記HTTPサーバに送信し、
前記HTTPサーバ手段は、前記Webブラウザ手段によって送信された分割データから前記SOAPリクエストを復元し、当該復元したSOAPリクエストに従って前記Webサービスとしての処理を行うことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
外部装置とネットワークを介して通信する情報処理装置の制御方法であって、
HTTPリクエストを前記外部装置に送信するステップと、
前記HTTPリクエストに応じて、前記外部装置から、Webサービスを利用するための手順が記述された第1スクリプトと、前記Webサービスの結果を前記外部装置へ送信するため手順が定義された第2スクリプトとを含むHTTPレスポンスを受信するステップと、
前記第1スクリプトが実行されたことに従って、前記情報処理装置が提供するWebサービスとしての処理を行うステップと、
前記Webサービスの結果を前記外部装置に送信するために前記第2スクリプトを呼び出すステップと、
前記第2スクリプトが呼び出されたことに従って、前記Webサービスの結果を前記外部装置に送信するステップと、
を有することを特徴とする制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2013−109501(P2013−109501A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252925(P2011−252925)
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】