以下、本発明の実施の形態を図面に基づいて説明する。
本発明の一実施例に係る情報処理装置200のハードウェア構成について説明する。図1は、本発明の一実施例に係る情報処理装置のハードウェア構成を示すブロック図である。
以下、本発明の実施の形態を図面に基づいて説明する。
本発明の一実施例に係る情報処理装置は、例えば、図1に示すようなハードウェア構成を成す。図1は、本発明の一実施例に係る情報処理装置のハードウェア構成を示すブロック図である。
図1において、情報処理装置200は、コンピュータによって制御され印刷処理を実行する装置であって、CPU(中央処理装置)51と、メモリユニット52と、表示ユニット53と、入力ユニット54と、通信ユニット55と、記憶装置56と、ドライバ57とで構成され、システムバスBに接続される。
CPU51は、メモリユニット52に格納されたプログラムに従って情報処理装置200を制御する。メモリユニット52は、RAM及びROM等にて構成され、CPU51にて実行されるプログラム、CPU51での処理に必要なデータ、CPU51での処理にて得られたデータ等を格納する。また、メモリユニット52の一部の領域が、CPU51での処理に利用されるワークエリアとして割り付けられている。
表示ユニット53は、CPU51の制御のもとに必要な各種情報を表示する。入力ユニット54は、マウス、キーボード等を有し、利用者が情報処理装置200が処理を行なうための必要な各種情報を入力するために用いられる。通信ユニット55は、情報処理装置200が例えばインターネット、LAN(Local Area Network)等を介して複数のネットワーク機器と接続される場合に、それら複数のネットワーク機器との間で通信制御をするための装置である。記憶装置56は、例えば、ハードディスクユニットにて構成され、各種処理を実行するプログラム、文書データ等を格納する。
情報処理装置200よって行われる印刷処理を実現するプログラムは、例えば、CD−ROM等の記憶媒体58によって情報処理装置200に提供される。即ち、プログラムが保存された記憶媒体58がドライバ57にセットされると、ドライバ57が記憶媒体58からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置56にインストールされる。そして、プログラムが起動されると、記憶装置56にインストールされたプログラムに従ってCPU51がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。本発明に係る印刷処理を実現するプログラムは、通信ユニット55によってネットワークを介してダウンロードし、記憶装置56にインストールするようにしても良い。
以下、上述したような図1に示すハードウェア構成を有する情報処理装置200がWebサービスを提供するための機能構成例について説明する。ここで、Webサービスとは、ネットワーク機器からのHTTPリクエストによるサービス要求に応じて、情報処理装置200が所定の処理を行ない、その処理結果をHTTPレスポンスとしてネットワーク機器へ提供することを言う。
以下、SOAP及びHTMLによるWebサービスの提供を可能とする情報処理装置200の機能構成について図2で説明する。図2は、Webサービスを提供する情報処理装置の機能構成例を示す図である。情報処理装置200は、SOAPによってWebサービスの提供を受けるネットワーク機器10Aと、HTMLによってWebサービスの提供を受けるネットワーク機器10Bとにネットワーク15を介して接続される。
図2において、情報処理装置200は、HTTPに従った通信制御を行うと共に、内部のWebサービス提供処理部に処理を分配するWebサーバー500と、複数のWebサービス提供処理部としてファイル管理Webサービス提供処理部40及び他Webサービス提供処理部49と、HDD1303等とを有する。複数のWebサービス提供処理部40及び49は、夫々Webサービスファンクション(WSF)を有する。
図2に示す機能構成例の場合、ファイル管理Webサービス提供処理部40は、Webサービスファンクション(WSF)として、HDD1303に蓄積される文書(ファイル)を管理するファイル管理実行部400を有する。
Webサーバー500は、HTTPに従った通信制御を行うhttpd2と、HTTPリクエストに対応するWebサービス提供処理部40又は49へ処理を分配するディストリビューター(Distributor)30と、ネットワーク15を介して受信したGET METHOD又はPOST METHODによるHTTPリクエストを処理するHTTPリクエスト処理部501と、HTTPリクエストで示されるWebサービスの処理をファイル管理実行部400に振り分けるディスパッチャー(Dispatcher)60Bと、ファイル管理実行部400から通知される処理結果を示すHTML(Hypertext Markup Language)24を作成するHTML作成部502とを有する。ここで、HTTPリクエストはHTTPに従ったデータ通信によって、Webサービスを要求することを示し、HTTPレスポンスは該Webサービスの処理結果を通知する応答を示す。
ディストリビューター30は、HTTPリクエストがSOAPによるHTTPリクエストであるか否かを判断する判断部を有する。SOAPを指定するHTTPリクエストである場合、SOAPActionで指定されるWebサービス提供処理部40又は49へ処理を分配する。一方、SOAPを指定しないHTTPリクエストである場合、つまり、GET又はPOST METHODによるHTTPリクエストである場合、HTTPリクエストをHTTPリクエスト処理部501に通知する。
更に、HTML作成部502は、XML処理部50によって生成されたXMLを所定のXSL(eXtensible Stylesheet Language)25を用いてHTMLフォーマットに変換するXSLプロセッサ503を有する。また、XMLで記述されたメッセージを処理するXML処理部50と、SOAPに従ってメッセージ交換を行うSOAP処理部70とを有する。XML処理部50と、SOAP処理部70とは、複数のWebサービス提供処理部40及び49とで共有される。
XML処理部50は、SOAPを指定するHTTPレスポンスのボディ部の生成方法と同様に、SOAPを指定しないHTTPレスポンスのボディ部をXMLで記述して生成する。更に、SOAP処理部70は、Webサービスの処理内容を示す処理メッセージに基づいてファイル管理実行部400に振り分けるディスパッチャー(Dispatcher)60Aを有する。
なお、情報処理装置200において、説明の便宜上、複数のWebサービス提供処理部として、ファイル管理Webサービス提供処理部40と他Webサービス提供処理部49のみが示されるが、更に多くのWebサービス提供処理部を有する構成とすることもできる。この場合、SOAP処理部70は、複数のWebサービス提供処理部の夫々の実行部に処理を振り分ける複数のディスパッチャー60Aを備えるようにする。また、それら複数のWebサービス提供処理部によって、XML処理部50及びSOAP処理部70は共有される。同様に、複数のディスパッチャー60Bが複数のWebサービス提供処理部に対応させて備えられる。
また、ネットワーク15を介して情報処理装置200と接続されるネットワーク機器10Aは、キーボード又はマウス等の入力装置からの入力データを制御すると共に、モニタ9Aに表示させる出力データとを制御する入出力制御部11Aと、情報処理装置200に対するWebサービスの処理内容及び情報処理装置200からのWebサービスの処理結果をXMLによって処理するXML処理部13と、HTTPに従ったリクエストの生成及びレスポンスを解析するリクエスト/レスポンス処理部14とを有する。ネットワーク15を介して情報処理装置200と接続されるネットワーク機器10Bは、キーボード又はマウス等の入力装置からの入力データを制御すると共に、モニタ9Bに表示させる出力データとを制御する入出力制御部11Bを有し、HTTPに従ったリクエストの生成及びレスポンスを表示するWebブラウザ23を有する。
先ず、ネットワーク機器10Aからの要求に応じてWebサービスを提供する処理フローについて説明する。ネットワーク機器10Aを利用する利用者は、所望のWebサービスを情報処理装置200へ要求するための画面から情報処理装置200へ要求する(ステップS101)。利用者によるWebサービスの要求に応じて、入出力制御部11Aは、リクエスト/レスポンス処理部14へ要求データを通知する(ステップS102)。リクエスト/レスポンス処理部14は、入出力制御部11からの要求データに基づいてHTTPリクエストを生成し(ステップS103)、XML処理部13が処理内容をXMLによってHTTPリクエストのボディ部に記述すると、SOAP処理部12によってSOAPに従ってHTTPリクエストがネットワーク15を介して情報処理装置200へ送信される(ステップS104)。
情報処理装置200のWebサーバー500は、httpd2によってHTTPリクエストを受信すると、ディストリビューター30によって、HTTPリクエストのヘッダ部で指定されるWebサービス提供処理部へ受信したHTTPリクエストを分配する(ステップS105)。例えば、HTTPリクエストのヘッダ部でファイル管理Webサービス提供処理部40が指定されていた場合、ファイル管理Webサービス提供処理部40がディストリビューター30によって関数コールされる。
ファイル管理Webサービス提供処理部40において、SOAP処理部70は、HTTPリクエストをSOAPに従って処理して、SOAPヘッダ部で指定されるファイル管理実行部400に処理を振り分けるディスパッチャー60Aに通知する(ステップS106)。ディスパッチャー60Aは、HTTPリクエストのヘッダ部で処理内容を振り分けて、XML処理部50に通知する(ステップS107)。XML処理部50は、XMLで記述されたHTTPリクエストのボディ部において処理内容を示すメッセージをファイル管理実行部400で解釈可能な記述に変換してファイル管理実行部400を実行する(ステップS108)。ファイル管理実行部400は、処理内容に従ってHDD1303に対して処理を実行し、その処理結果を取得する(ステップS109)。例えば、処理内容に指定される文書の追加、更新、又は削除等の処理を実行する。
処理結果を取得したファイル管理実行部400はXML処理部50へその処理結果を通知する(ステップS110)。XML処理部50は、通知された処理結果をXMLで記述したXML26を生成してHTTPレスポンスのボディ部をに設定するために、SOAP処理部70に通知する(ステップS111)。そして、Webサーバー500は、httpd2を介してXMLで記述された処理結果をボディ部とするSOAPに従ったHTTPレスポンスをネットワーク機器10Aに送信する(ステップS112)。
ネットワーク機器10AにてHTTPレスポンスが受信されると、XML処理部13は、HTTPレスポンスのボディ部を解析して処理結果を取得し(ステップS113)、リクエスト/レスポンス処理部14は、その取得した処理結果をモニタ9Aに表示させる出力データとして入出力制御部11Aに渡す(ステップS114)。そして、入出力制御部11Aは、受け取った出力データをモニタ9Aに表示させるように制御する(ステップS115)。
上記より、ネットワーク機器10Aは、予め取り決めておいたXMLによる記述形式に従ってHTTPリクエストのボディ部に処理内容を記述することによって、情報処理装置200に対して遠隔地からWebサービスの要求を行うことができる。また、情報処理装置200は、予め取り決めておいたXMLによる記述形式に従ってHTTPレスポンスのボディ部に処理結果を記述することによって、遠隔地にあるネットワーク機器10Aに対してWebサービスの提供を行うことが可能となる。情報処理装置200は、ネットワーク15を介して、複数のネットワーク機器10Aに対して、Webサービスを提供することも可能である。
次に、ネットワーク機器10Bからの要求に応じてWebサービスを提供する処理フローについて説明する。ネットワーク機器10Bを利用する利用者は、モニタ9Bに表示されるWebサービスを情報処理装置200へ要求するための画面から情報処理装置200へ所望のWebサービスを要求し、入出力制御部11Bはその要求データを受信する(ステップS121)。Webブラウザ23は、入出力制御部11Bが受信した要求データに基づいて、GET METHOD又はPOST METHODによるHTTPリクエストを生成してネットワーク15を介して情報処理装置200へ送信する(ステップS122)。
情報処理装置200はネットワーク機器10BからHTTPリクエストを受信すると、Webサーバー500によってHTTPリクエストを解析する。つまり、ネットワーク通信制御を行うhttpd2がHTTPリクエストを受信すると、ディストリビューター30によって、HTTPリクエストのヘッダ部で指定される、例えば、メソッド(GET METHOD又はPOST METHOD)に応じた解析がなされるようにHTTPリクエストがHTTPリクエスト処理部501に分配される(ステップS123)。
HTTPリクエスト処理部501は、メソッドに応じてボディ部から処理内容を取得し、例えば、ヘッダ部でURL(Uniform Resource Locator)又はURI(Uniform Resource Indicator)によってファイル管理Webサービスが指定されている場合、ディスパッチャー60Bによって、ファイル管理実行部400へ処理内容に応じた処理の振り分けを行う(ステップS124)。ファイル管理実行部400は、処理内容に従ってHDD1303に対して処理を実行し、その処理結果を取得する(ステップS125)。例えば、処理内容に指定される文書の追加、更新、又は削除等の処理を実行する。
処理結果を取得したファイル管理実行部400はXML処理部50へその処理結果を通知する(ステップS126)。XML処理部50は、SOAPによるHTTPレスポンスのボディ部を生成するのと同様に、通知された処理結果をXMLで記述したXML26を生成して、HTTPレスポンスのボディ部に設定するために、Webサーバー500のHTML作成部502に通知する(ステップS127)。HTML作成部502は、XSLプロセッサ503によって所定のXSL25を用いてHTMLフォーマットに変換したHTML24を生成し、httpd2にHTML24の送信を依頼する(ステップS128)。httpd2は、httpに従ってHTML24をネットワーク機器10Bへ送信する(ステップS129)。
ネットワーク機器10BにてHTTPレスポンスが受信されると、Webブラウザ23は、入出力制御部11Bによってモニタ9BへHTML24を表示させる(ステップS130)。
上記より、ネットワーク機器10Bは、情報処理装置200との間で特別なメッセージ交換方法を必要とせずに、Webブラウザ23を利用するのみで、情報処理装置200からWebサービスの提供を受けることができ、RPC(Remote Procedure Call)を実現することができる。また、Webサーバー500に、各Webサービスの実行部における処理の特性に応じてXSL25を備えるようにすることで、ネットワーク機器10Bへ処理結果を表示する際にWebサービス毎の表示画面を提供することが可能となる。
従って、情報処理装置200は、SOAPに従ってメッセージ交換を行うことができるネットワーク機器10Aと、Webブラウザ23を有するネットワーク機器10Bとに対して、同じファイル管理実行部400によるWebサービスの提供を行うことができる。ファイル管理実行部400を有するファイル管理Webサービス提供処理部40が、プロトコルの異なる処理リクエストによって共有することができるため、処理リクエストのプロトコル毎にファイル管理Webサービス提供処理部40を開発する必要がない。
また、情報処理装置200では、Webサーバー500にXSL25を備えることによって、XML処理部50でのSOAPを指定するHTTPレスポンスのボディ部の記述とSOAPを指定しないHTTPレスポンスのボディ部の記述の処理を共通化することができる。
情報処理装置200とネットワーク機器10との間でSOAPに従ってメッセージ交換するHTTPリクエスト及びHTTPレスポンスについて図3及び図4で説明する。図3は、SOAPによるHTTPリクエストの例を示す図である。図3に示すHTTPリクエストにおいて、URI(Uniform Resource Indicator)16は、POSTメソッドによってHTTPリクエストが送信されるURIを示し、例えば、「netdoc」である。更に、SOAPAction17でリクエストの目的を表すURIが示され、例えば、「http://foo.bar.com/netdoc/filemanagement」によって「ファイル管理」が指定される。
図2の情報処理装置200のhttpd2のディストリビューター30は、SOAPAction17で指定される「filemanagement」により、ファイル管理Webサービス提供処理部40にHTTPリクエストを分配する。ファイル管理Webサービス提供処理部40は、SOAP処理部70によってSOAPに従ってHTTPリクエストを処理する。SOAP処理部70において、ディスパッチャー60Aは、SOAPAction17で指定される「filemanagement」により、ファイル管理実行部400に処理を振り分ける。また、XML処理部50は、SOAPエンベロープのボディ(<SOAP-ENV:Body>から</SOAP-ENV:Body>まで)にXMLによって記述されるメッセージ18を解析する。例えば、メッセージ18は、<ns:filemanagement>から</ns:filemanagement>までに示される。「filemanagement」は、コマンドを示す。メッセージ18によって要求される処理内容は、<fileId>から</fileId>によって指定されるファイルID「123」を、<operationCode>から</operationCode>によって指定されるオペレーションコード「3」の処理を行うことを示している。例えば、オペレーションコード「3」はファイル削除、オペレーションコード「1」はファイル追加、オペレーションコード「2」はファイル編集を要求する。
この場合、ディスパッチャー60Aによって処理が振り分けられたファイル管理実行部400は、XML処理部50によって解析された処理内容に従って、HDD1303からフィルID「123」の文書を削除する。
なお、上記例は、一つのコマンド「filemanagement」で、<operationCode>の設定によってファイルの管理方法を指定しているが、ファイル管理の処理を細分し、例えば、ファイル追加Webサービス、ファイル編集Webサービス、及び、ファイル削除Webサービス等のように複数のWebサービスをWebサービスファンクションとしてWebサービス処理アプリ1215に備えるようにしても良い。この場合、例えば、「fileadd」、「fileedit」、「filedelete」のように、Webサービス毎に一意に対応するコマンドがXMLメッセージ18に設定されるようにすることによって、<operationCode>によるオペレーションコードが不要となる。
図4は、SOAPによるHTTPレスポンスの例を示す図である。図4に示すHTTPレスポンスは、ファイル管理Webサービス提供処理部40のSOAP処理部70によって、ファイル管理実行部400の処理結果に基づいて作成される。図4に示すHTTPレスポンスにおいて、SOAP処理部70は、ファイル管理Webサービス提供処理部40の処理結果に基づいて、ステータスコード20として「200」と、説明句21として「OK」を設定する。更に、XML処理部50は、SOAPエンベロープのボディ(<SOAP-ENV:Body>から</SOAP-ENV:Body>まで)にXMLによって記述されるメッセージ22を生成する。コマンド「filemanagement」のレスポンスは、<ns:filemanagementResponse>から</ns:filemanagementResponse>で示され、例えば、<requestId>と</requestId>とのよってリクエストID「10」が設定される。このHTTPレスポンスを受信したネットワーク機器10Aは、XML処理部13によるXMLによって記述されたメッセージ22を処理することによって、処理が正常に行われたことを確認する。
次に、一つのWebサービス提供処理部の複数のメソッドを組み合せて実行する複合Webサービス提供処理部を有する情報処理装置200について説明する。図5は、複合Webサービスを有する情報処理装置の例を説明するための機能構成例を示す図である。図5において、図1に示す情報処理装置200の機能構成のうち主要な機能構成のみが図示され、他の機能構成は省略される。情報処理装置200は、SOAPによってWebサービスの提供を受けるネットワーク機器10Aと、HTMLによってWebサービスの提供を受けるネットワーク機器10Bとにネットワーク15を介して接続される。
図5において、情報処理装置200は、主に、HTTPに従った通信制御を行うと共に、内部のWebサービス提供処理部に処理を分配するWebサーバー500と、複数のWebサービス提供処理部としてファイル管理Webサービス提供処理部40、他Webサービス提供処理部49及び複合Webサービス提供処理部90と、XMLで記述されたメッセージを処理するXML処理部50と、ネットワーク機器10との間でSOAPに従うメッセージ交換を制御するSOAP処理部70と、HDD1303と等とを有する。XML処理部50とSOAP処理部70とは、複数のWebサービス提供処理部40、49及び90とで共有される。
Webサーバー500は、HTTPに従った通信制御を行うhttpd2と、HTTPリクエストに対応するWebサービス提供処理部へ処理を分配するディストリビューター(Distributor)30と、ネットワーク15を介して受信したGET METHOD又はPOST METHODによるHTTPリクエストを処理するHTTPリクエスト処理部501と、HTTPリクエストで示されるWebサービスの処理を各Webサービス提供処理部毎に処理を振り分けるディスパッチャー60B及び68Bと、各Webサービス提供処理部40、90及び49から通知されるXMLで記述された処理結果をHTML24で作成するHTML作成部502とを有する。HTML作成部502は、XML処理部50によって生成されたXMLをHTMLフォーマットに変換するXSLプロセッサ503を有する。ここで、HTTPリクエストはHTTPに従ったデータ通信によって、Webサービスを要求することを示し、HTTPレスポンスは該Webサービスの処理結果を通知する応答を示す。
ディストリビューター30は、HTTPリクエストがSOAPによるHTTPリクエストであるか否かを判断する判断部を有する。SOAPによるHTTPリクエストである場合、SOAPActionで指定されるWebサービス提供処理部40又は49へ処理を分配する。一方、SOAPによるHTTPリクエストでない場合、つまり、GET又はPOST METHODによるHTTPリクエストである場合、HTTPリクエストをHTTPリクエスト処理部501に通知する。
ファイル管理Webサービス提供処理部40は、HDD1303に蓄積されている文書を特定する文書IDのリストを取得する文書IDリスト取得メソッド401と、文書IDに対応するHDD1303に蓄積されている文書に関する書誌情報を取得する書誌情報取得メソッド402とを有する。メソッドは、ファイル管理Webサービス提供処理部40でのWebサービスの処理の単位を示し、ファイル管理Webサービス提供処理部40は、複数のメソッドによって図1に示すWebサービスファンクションを構成し、ネットワーク機器10A又は10Bからの要求に応じたWebサービスの提供を行う。図2に示される第一機能構成例の場合、複数のメソッドとして、文書IDリスト取得メソッド401と書誌情報取得メソッド402とに限定されるものではなく、これらメソッド以外に複数のメソッドを構成することも可能である。
複合Webサービス提供処理部90の文書一覧作成複合メソッド800は、文書IDリスト取得メソッド401を利用して文書IDのリストを取得する文書IDリスト取得部801と、書誌情報取得メソッド402を利用して文書IDに対応する書誌情報を取得する書誌情報取得部802と、取得した書誌情報に基づいて文書一覧を作成する文書一覧作成部803とを有する。文書一覧作成複合メソッド800は、文書IDリスト取得メソッド401及び書誌情報取得メソッド402を利用しているため、それらメソッドの実体を備えてはいない。よって、文書一覧作成複合メソッド800を実現するために開発される部分は、主に、文書一覧作成部803のみである。そのため、開発効率を大幅に削減することができる。また、複合Webサービス提供処理部90は、文書一覧作成複合メソッド800のような処理単位及びメソッドの実体を備えたメソッドによる処理単位を複数有する集合体を図1に示すWebサービスファンクションとして構成する。
SOAP処理部70は、更に、各Webサービス提供処理部40及び90に処理を振り分けるディスパッチャー(Dispatcher)60A、68A等を有し、例えば、ファイル管理Webサービス提供処理部40の各メソッド401又は402へ処理を振り分けるディスパッチャー60Aと、複合Webサービス提供処理部90の文書一覧作成複合メソッド800に対して処理を振り分けるディスパッチャー68Aと、他Webサービス提供処理部49のメソッドに対して処理を振り分ける他のディスパッチャー(図示せず)とを有する。なお、情報処理装置200において、説明の便宜上、複数のWebサービス提供処理部として、ファイル管理Webサービス提供処理部40と、複合Webサービス提供処理部90と、他Webサービス提供処理部49のみが示されるが、更に多くのWebサービス提供処理部を有する構成とすることもできる。また、それら複数のWebサービス提供処理部によって、XML処理部50及びSOAP処理部70は共有される。
また、ネットワーク15を介して情報処理装置200と接続されるネットワーク機器10A及びネットワーク機器10Bの機能構成は、図2に示すネットワーク機器10A及びネットワーク機器10Bと同様であるため、その説明を省略する。
先ず、ネットワーク機器10Aからの要求に応じてWebサービスを提供する処理フローについて説明する。ネットワーク機器10Aを利用する利用者は、所望のWebサービスを情報処理装置200へ要求するための画面から情報処理装置200へ要求する(ステップS31)。例えば、利用者は、情報処理装置200のHDD1303に蓄積された文書の一覧を提供するWebサービスをモニタ9Aの画面から要求したとする。利用者によるWebサービスの要求に応じて、入出力制御部11Aは、リクエスト/レスポンス処理部14へ要求データを通知する(ステップS32)。リクエスト/レスポンス処理部14は、入出力制御部11からの要求データに基づいてリクエストを生成し、生成したリクエストをSOAP処理部12に通知する(ステップS33)。SOAP処理部12は、XML処理部13利用者が所望するWebサービスの処理内容をXMLによってHTTPリクエストのボディ部を記述し、SOAPに従ってHTTPリクエストを生成する。そして、該HTTPリクエストをネットワーク15を介して情報処理装置200へ送信する(ステップS34)。
情報処理装置200のhttpd2は、HTTPリクエストを受信すると、ディストリビューター30によって、HTTPリクエストのヘッダ部で指定されるWebサービス提供処理部へ受信したHTTPリクエストを分配する(ステップS35)。例えば、HTTPリクエストのヘッダ部で複合Webサービス提供処理部90が指定されていた場合、複合Webサービス提供処理部90がディストリビューター30によって実行される。
複合Webサービス提供処理部90は、SOAPに従ったHTTPリクエストを処理するために、SOAP処理部70に受信したHTTPリクエストを通知する(ステップS36)。SOAP処理部70は、SOAPに従ってHTTPリクエストを処理し、ディスパッチャー68は、HTTPリクエストのヘッダ部で指定される文書一覧作成複合メソッド800に処理を振り分けて、HTTPのメソッドに応じてXML処理部50を実行する(ステップS37)。XML処理部50は、XMLで記述されたHTTPリクエストのボディ部において処理内容を示すメッセージを文書一覧作成複合メソッド800で解釈可能な記述に変換して、文書一覧作成複合メソッド800に通知する(ステップS38)。
文書一覧作成複合メソッド800は、先ず、文書IDリスト取得部801によって、ファイル管理Webサービス提供処理部40の文書IDリスト取得メソッド401を関数コールする(ステップS39)。文書IDリスト取得メソッド401は、HDD1303で管理している文書を識別する文書IDを取得して文書IDリストを作成する。この場合、文書IDリスト取得メソッド401(listID(docIDList))は、文書ID「101」、「102」、「103」とを取得したとすると、文書IDリスト(docIDList)を、docIDList={101, 102, 103, 0}(「0(ゼロ)」は終了を示す)のように設定し文書IDリスト取得部801に通知する(ステップS40)。
文書一覧作成複合メソッド800は、続けて、書誌情報取得部802によってファイル管理Webサービス提供処理部40の書誌情報取得メソッド402を関数コールする(ステップS41)。書誌情報取得メソッド402は、HDD1303で管理している文書に対して、書誌情報取得部802から通知された文書IDで書誌情報を問い合わせ、書誌情報を作成する。例えば、文書ID「101」について書誌情報を取得する場合、書誌情報取得部802は、書誌情報取得メソッド402(getProps(docID,props))をgetProps(101,props)のようにして関数コールする。
コールされた書誌情報取得メソッド402は、HDD1303に対して指定された文書IDで書誌情報を問い合わせ、該書誌情報を書誌情報取得部802へ通知する(ステップS42)。つまり、書誌情報取得メソッド402は、書誌情報取得部802から通知された文書ID「101」でHDD1303から書誌情報を取得する。そして、書誌情報取得メソッド402は、書誌情報取得部802へ通知するための書誌情報を作成する。例えば、書誌情報は、prop={文書ID, 文書名, ページ数, 所有者, 0}(「0(ゼロ)」は書誌情報の終了を示す)として作成され、この場合、prop={101, "蓄積文書1", 3, "ユーザー1", 0}のように文書ID「101」に対して設定される。書誌情報取得メソッド402は、指定された文書IDに対する書誌情報の作成結果を文書一覧作成複合メソッド800の書誌情報取得部802へ通知する。
文書一覧作成複合メソッド800の書誌情報取得部802は、その他の文書ID「102」及び「103」について、上記同様の処理を繰り返して、全ての文書情報を取得する。
文書一覧作成複合メソッド800は、更に、文書一覧作成部803によって、文書一覧を作成し、その文書一覧をXMLで記述するためにXML処理部50へ通知する(ステップS43)。つまり、文書一覧作成部803は、文書一覧を、例えば、docList={{101, "蓄積文書1", 3, "ユーザー1",0},{102, "蓄積文書2", 10, "ユーザー2",0},{103, "蓄積文書3", 1, "ユーザー1",0},0}のように作成する。この作成された文書一覧(docList)がXML処理部50に通知される。XML処理部50は、文書一覧(docList)を受け取ると、XMLで記述したXML26を生成してSOAP処理部70へ通知する(ステップS44)。SOAP処理部70は、XMLで記述された文書一覧を受け取ると、HTTPレスポンスのボディ部に受け取ったXMLで記述された文書一覧を設定してSOAPに従ってHTTPレスポンスを生成する(ステップS45)。
このような機能構成例において、複合Webサービス提供処理部90が文書一覧作成複合メソッド800によって、文書IDリスト取得メソッド401及び書誌情報取得メソッド402の実体を備えることなく、複数のメソッドを組み合せて一連のWebサービスの処理を行うことができる。よって、ネットワーク機器10Aは、情報処理装置200が提供可能なWebサービスの単位を意識することなく、一回のHTTPリクエストによって一連のWebサービスの提供を受けることができる。
更に、図5において、ファイル管理Webサービス提供処理部40自身によってWebサービスを提供することも可能である。つまり、httpd2がネットワーク機器10からHTTPリクエストを受信すると(ステップS34),ディストリビューター30は、HTTPリクエストのヘッダ部で指定される書誌情報取得のWebサービスの要求に応じて、ファイル管理Webサービス提供処理部40の書誌情報取得メソッド402へ受信したHTTPリクエストを分配する(ステップS35−3)。
ファイル管理Webサービス提供処理部40は、SOAPに従ったHTTPリクエストを処理するために、SOAP処理部70に受信したHTTPリクエストを通知する(ステップS36−3)。SOAP処理部70は、SOAPに従ってHTTPリクエストを処理し、ディスパッチャー60Aは、HTTPリクエストのヘッダ部で指定される書誌情報取得メソッド402に処理を振り分けて、HTTPのメソッドに応じてXML処理部50を実行する(ステップS37−3)。XML処理部50は、XMLで記述されたHTTPリクエストのボディ部において処理内容を示すメッセージを書誌情報取得メソッド402で解釈可能な記述に変換して、書誌情報取得メソッド402に通知する(ステップS38−3)。
書誌情報取得メソッド402は、HDD1303で管理している文書に対して、XML処理部50で処理されたメッセージで指定される文書IDで書誌情報を問い合わせて、その書誌情報をXMLで記述するためにXML処理部50へ通知する(ステップS43−3)。XML処理部50では、書誌情報をXMLで記述したXML26が生成される。更に、SOAP処理部70において、HTTPレスポンスのボディ部にXML26を設定してSOAPに従ってHTTPレスポンスが生成され(ステップS45―3)、httpd2からネットワーク機器10へ送信される(ステップS46−3及びS47)。
このように、情報処理装置200は、ネットワーク機器10Aからの書誌情報の提供を要求するHTTPリクエストに応じて、実体を備えた書誌情報取得メソッド402自身を実行することができる。また、同様にして、文書IDリスト取得メソッド401自身を実行することも可能である。
よって、情報処理装置200は、画像を形成すると共に、実際にWebサービスを提供するための処理を行う複数のメソッドと、それらの組み合せによって、幅広いWebサービスを提供することができる。
次に、ネットワーク機器10Bからの要求に応じてWebサービスを提供する処理フローについて説明する。ネットワーク機器10Bを利用する利用者は、モニタ9Bに表示されるWebサービスを情報処理装置200へ要求するための画面から情報処理装置200へ所望のWebサービスを要求し、入出力制御部11Bはその要求データを受信する(ステップS51)。Webブラウザ23は、入出力制御部11が受信した要求データに基づいて、GET METHOD又はPOST METHODによるHTTPリクエストを生成してネットワーク15を介して情報処理装置200へ送信する(ステップS52)。例えば、Webブラウザ23は、
GET /documentList.cgi HTTP/1.1
のようなGETメソッドによるHTTPリクエストを送信する。
情報処理装置200のWebサーバー500のhttpd2が、ネットワーク機器10から受信したHTTPリクエストを受信すると、ディストリビューター30は、HTTPリクエストのGETメソッドに基づいてGETメソッドによるHTTPリクエストを処理するHTTPリクエスト処理部501に該HTTPリクエストを分配する(ステップS53)。HTTPリクエスト処理部501は、ディスパッチャー68によって、HTTPリクエストのヘッダ部で指定される文書一覧作成複合メソッド800に処理を振り分ける(ステップS54)。例えば、「documentList.cgi」によって、「documentList.cgi」に相当する文書一覧作成複合メソッド800が実行される。
文書一覧作成複合メソッド800は、先ず、文書IDリスト取得部801によって、ファイル管理Webサービス提供処理部40の文書IDリスト取得メソッド401を関数コールする(ステップS55)。文書IDリスト取得メソッド401は、HDD1303で管理している文書を識別する文書IDを取得し(ステップS56)、文書IDリストを作成する。この場合、文書IDリスト取得メソッド401(listID(docIDList))は、文書ID「101」、「102」、「103」とを取得したとすると、文書IDリスト(docIDList)を、docIDList={101, 102, 103, 0}(「0(ゼロ)」は終了を示す)のように設定し文書IDリスト取得部801に通知する(ステップS57)。
文書一覧作成複合メソッド800は、続けて、書誌情報取得部802によってファイル管理Webサービス提供処理部40の書誌情報取得メソッド402を関数コールする(ステップS58)。書誌情報取得メソッド402は、HDD1303で管理している文書に対して、書誌情報取得部802から通知された文書IDで書誌情報を問い合わせ、書誌情報を作成する。例えば、文書ID「101」について書誌情報を取得する場合、書誌情報取得部802は、書誌情報取得メソッド402(getProps(docID,props))をgetProps(101,props)のようにして関数コールする。
コールされた書誌情報取得メソッド402は、HDD1303に対して指定された文書IDで書誌情報を問い合わせ、該書誌情報を書誌情報取得部802へ通知する(ステップS59)。つまり、書誌情報取得メソッド402は、書誌情報取得部802から通知された文書ID「101」でHDD1303から書誌情報を取得する。そして、書誌情報取得メソッド402は、書誌情報取得部802へ通知するための書誌情報を作成する。例えば、書誌情報は、prop={文書ID, 文書名, ページ数, 所有者, 0}(「0(ゼロ)」は書誌情報の終了を示す)として作成され、この場合、prop={101, "蓄積文書1", 3, "ユーザー1", 0}のように文書ID「101」に対して設定される。書誌情報取得メソッド402は、指定された文書IDに対する書誌情報の作成結果を文書一覧作成複合メソッド800の書誌情報取得部802へ通知する。
文書一覧作成複合メソッド800の書誌情報取得部802は、その他の文書ID「102」及び「103」について、上記同様の処理を繰り返して、全ての文書情報を取得する。
文書一覧作成複合メソッド800は、更に、文書一覧作成部803によって、文書一覧を作成し、その文書一覧をXMLで記述するためにXML処理部50へ通知する(ステップS60)。つまり、文書一覧作成部803は、文書一覧を、例えば、docList={{101, "蓄積文書1", 3, "ユーザー1",0},{102, "蓄積文書2", 10, "ユーザー2",0},{103, "蓄積文書3", 1, "ユーザー1",0},0}のように作成する。この作成された文書一覧(docList)がXML処理部50に通知される。XML処理部50は、文書一覧(docList)を受け取ると、SOAPに従ったHTTPレスポンスのボディ部の生成と同様の記述方法によって、XMLで記述したXML26を生成してWebサーバー500へ通知する(ステップS61)。通知を受けると、Webサーバー500は、HTML作成部502を実行する。HTML作成部502は、XSLプロセッサ503によって、所定のスタイルリストを示すXSL25に基づいて、XML26をHTMLフォーマットに変換する。HTML作成部502は、このHTMLフォーマットに従う処理結果を示すHTML24によるHTTPレスポンスを作成し、httpd2へ該HTTPレスポンスの送信を要求する(ステップS62)。httpd2は、HTTPレスポンスをネットワーク15を介してネットワーク機器10Bへ送信する(ステップS63)。
ネットワーク機器10BにてHTTPレスポンスが受信されると、Webブラウザ23は、入出力制御部11によってモニタ9へHTML24を表示させる(ステップS64)。
更に、図5において、ファイル管理Webサービス提供処理部40自身によってWebサービスを提供することも可能である。つまり、httpd2がネットワーク機器10BからHTTPリクエストを受信すると(ステップS52),ディストリビューター30は、HTTPリクエストのGETメソッドに基づいてGETメソッドによるHTTPリクエストを処理するHTTPリクエスト処理部501に該HTTPリクエストを分配する(ステップS53)。HTTPリクエスト処理部501は、ディスパッチャー60によって、HTTPリクエストのヘッダ部で指定される書誌情報取得メソッド402に処理を振り分ける(ステップS54−3)。
書誌情報取得メソッド402は、HDD1303で管理している文書に対して、HTTPリクエストによって指定される文書IDで書誌情報を問い合わせ、書誌情報を作成し、その書誌情報をXMLで記述したXML26を生成するためにXML処理部50へ通知する(ステップS60−3)。以後、上述したステップS61からS63の処理によって、書誌情報がネットワーク機器10Bに提供される。
このように、情報処理装置200は、ネットワーク機器10からの書誌情報の提供を要求するHTTPリクエストに応じて、実体を備えた書誌情報取得メソッド402自身を実行することができる。また、同様にして、文書IDリスト取得メソッド401自身を実行することも可能である。
よって、情報処理装置200は、画像を形成すると共に、実際にWebサービスを提供するための処理を行う複数のメソッドと、それらの組み合せによって、幅広いWebサービスを提供することができる。
上記機能構成例において、ネットワーク機器10Bは、情報処理装置200との間で特別なメッセージ交換方法を必要とせずに、Webブラウザを利用するのみで、情報処理装置200からWebサービスの提供を受けることができ、RPC(Remote Procedure Call)を実現することができる。また、複合Webサービス提供処理部90が文書一覧作成複合メソッド800によって、文書IDリスト取得メソッド401及び書誌情報取得メソッド402の実体を備えることなく、複数のメソッドを組み合せて一連のWebサービスの処理を行うことができる。よって、複数のメソッドの組み合せて一連のWebサービスの処理を行うことができる。よって、ネットワーク機器10Bは、情報処理装置200が提供可能なWebサービスの単位を意識することなく、一回のHTTPリクエストによって一連のWebサービスの提供を受けることができる。
更に、このような複合Webサービス提供処理部90が、プロトコルの異なる処理リクエストによって共有することができる。従って、処理リクエストのプロトコル毎に複合Webサービス提供処理部90を開発する必要がない。
また、上記機能構成例において、情報処理装置200では、Webサーバー500にXSL25を備えることによって、XML処理部50でのSOAPを指定するHTTPレスポンスのボディ部の記述とSOAPを指定しないHTTPレスポンスのボディ部の記述の処理を共通化することができる。
図5に示すXML処理部50は、文書一覧(docList)を、例えば、図6に示すようなXMLで記述する。図6は、XML処理部にてXMLで記述された文書一覧の例を示す図である。図6より、記述53は文書ID「101」の書誌情報を示し、記述54は文書ID「102」の書誌情報を示し、記述55は文書ID「103」の書誌情報を示す。例えば、記述53において、文書ID「101」の書誌情報は、文書名が「蓄積文書1」、ページ数が「3」ページ、所有者が「ユーザー1」であることを示している。
また、ネットワーク機器10AのSOAP処理部12で作成され、情報処理装置200へ送信されるHTTPリクエストは、例えば、図7に示すように記述される。図7は、SOAPによるHTTPリクエストの例を示す図である。図7は、SOAPによるHTTPリクエストの例を示す図である。図7に示すHTTPリクエストのHTTPヘッダ部73おいて、URI74は、POSTメソッドによってHTTPリクエストが送信されるURIを示し、例えば、「netdoc」である。更に、SOAPAction75でリクエストの目的を表すURIが示され、例えば、「http://foo.bar.com/netdoc/documentList」によって「文書一覧」が指定される。情報処理装置200のhttpd2がHTTPリクエストを受信し、SOAP処理部70がHTTPヘッダ部75を解析する。SOAP処理部70は、<SOAP-ENV:Envelope>から</SOAP-ENV:Envelope>を解析し、<ns:documentList>から</ns:documentList>までのXMLで記述された処理内容を示すメッセージを取得する。このXMLメッセージは、XMLメッセージにおいて、例えば、<listtype>に設定されている"1"が全ての文書について一覧を作成することを示す場合、文書一覧作成複合メソッド800は、そのメッセージの指示に基づいて、文書IDリスト取得部801と、書誌情報取得部802と、文書一覧作成部803とによって、情報処理装置200にて管理される全文書の一覧を取得する。
文書一覧は、XML処理部50でXMLにて記述された後、SOAP処理部70でHTTPレスポンスが作成され、例えば、図8に示すようなHTTPレスポンスを生成する。図8は、SOAPによるHTTPレスポンスの例を示す図である。図8に示すHTTPレスポンスの例において、SOAP処理部70は、HTTPヘッダ部78を作成し、更に、HTTPボディ部79を作成する。HTTPボディ部79として、<SOAP-ENV:Envelope>から</SOAP-ENV:Envelope>が作成される。<ns:documentListResponse>から</ns:documentListResponse>までに示されるメッセージ91は、XML処理部50によって文書一覧作成複合メソッド800からの文書一覧をXMLで記述したメッセージである。
このようなHTTPレスポンスがネットワーク機器10Aへ通知され、SOAP処理部12によって<SOAP-ENV:Body>から</SOAP-ENV:Body>にメッセージ91を取り出し、その取り出されたメッセージ91は、XML処理部13によってモニタ9Aに表示すべき文書一覧情報を取り出してリクエスト/レスポンス処理部14に通知される。更に、文書一覧情報はリクエスト/レスポンス処理部14によって画面データとして処理され、例えば、図10に示すように、入出力制御部11Aによってモニタ9Aに表示される。
一方、図6に示すXMLで記述された文書一覧は、XSL25に基づいて、HTML作成部502のXSLプロセッサ503によって、図9に示すようなHTMLで記述された文書一覧に変換される。図9は、HTML作成部にてHTMLで記述された文書一覧の例を示す図である。図9において、記述93は、HTTPレスポンスのヘッダ部を示し、記述99は、HTTPレスポンスのボディ部を示す。
記述99において、記述94は、HTMLのヘッダ部を示し、ネットワーク機器10Bの利用者が要求したWebサービスに対応するタイトル「文書一覧」を表示するための記述である。記述95は、文書一覧の項目名を表示するための記述である。記述96は、図6に示すXMLによる記述53がHTMLに変換された記述である。記述97は、図6に示すXMLによる記述54がHTMLに変換された記述である。記述98は、図6に示すXMLによる記述55がHTMLに変換された記述である。
このようにHTMLに変換された記述によって、ネットワーク機器10Bのモニタ9Bには、図10に示されるような画面が表示される。図10は、ネットワーク機器側に表示される画面例を示す図である。図10に示される画面92において、文書名、ページ数、所有者等の項目名に対応させて、文書一覧が表示される。また、SOAPに従ったHTTPレスポンスによっても、ネットワーク機器10Aのモニタ9Aには、同様の画面が表示される。
以上より、本発明に係る情報処理装置200は、WebサービスをSOAPによるメッセージ交換によって可能とすると共に、HTMLによる提供をも可能とする。よって、ネットワーク機器10A及び10Bの利用者に対して同様のWebサービスを提供することができる。
また、SOAPを指定したHTTPリクエストに対しても、SOAPを指定しないHTTPリクエストに対しても、同一のWebサービスファンクションを実行することができる。更に、SOAPを指定したHTTPレスポンスに対しても、SOAPを指定しないHTTPレスポンスに対しても、XML処理部50にて生成されたXML26を使用してボディ部を生成することができる。
上記実施例において、同一のWebサービスファンクションでSOAP対応とWebブラウザ対応とを可能とする例を説明したが、その他にネットワーク機器との間で独自に取り決めた独自プロトコルにも対応するように、異なる3のプロトコルに対応することも可能である。例えば、HTTPリクエスト及びHTTPレスポンスのボディ部に独自に取り決めたXMLによる記述を設定した独自プロトコルによってネットワーク機器に同一のWebサービスを提供するようにしても良い。