以下、本発明の実施の形態を図面に基づいて説明する。
多種の画像形成機能を融合する本発明の実施の一形態に係る画像形成装置(以下、融合機と言う)は、例えば、図1に示すような機能構成を成す。図1は、本発明の一実施例に係る多種の画像形成機能を融合する融合機の機能構成を示すブロック図である。
図1において、融合機1200は、プロッタ1201と、スキャナ1202と、ファクシミリなどのハードウェアリソース1203などを有するとともに、プラットフォーム1220とアプリケーション1230とから構成されるソフトウェア群1210と、融合機起動部1240とを備えている。
融合機起動部1240は、融合機1200の電源投入時に先ず始めに実行され、プラットフォーム1220やアプリケーション1230を起動する。
プラットフォーム1220は、アプリケーション1230からの処理要求を解釈して、ハードウェア資源の獲得要求を発生させる下記に示すコントロールサービス1250と、一または複数のハードウェア資源の管理をおこない、コントロールサービス1250からの獲得要求を調停するシステムリソースマネージャー(SRM(System Resource Manager))1223)と、OS1221とを有する。
このコントロールサービス1250は、複数のサービスモジュールにより形成され、具体的には、SCS(System Control Service)1222と、ECS(Engine Control Service)1224と、MCS(Memory Control Service)1225と、OCS(Operation panel Control Service)1226と、FCS(FAX Control Service)1227と、NCS(Network Control Service)1228と、IMH(Imaging Memory Handler)1229とがある。なお、このプラットフォーム1220は、あらかじめ定義された関数により前記アプリケーションからの処理要求を受信可能とするアプリケーションプログラムインターフェースを有する。
OS1221は、UNIX(登録商標)などのオペレーティング・システムであり、プラットフォーム1220並びにアプリケーション1230の各ソフトウェアをそれぞれプロセスとして並列実行する。オープンソースのUNIX(登録商標)を用いることにより、プログラムの安全性を確保できるとともに、ネットワーク対応可能となり、ソースコードの入手も容易となる。さらに、OS、TCP/IPのロイヤリティが不要であり、アウトソーシングも容易となる。
SRM1223は、SCS1222とともにシステムの制御およびリソースの管理をおこなうものであり、スキャナやプロッタなどのエンジン部、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394I/F、RS232CI/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停をおこない、実行制御する。
具体的には、このSRM1223は、要求されたハードウェア資源が利用可能であるかどうか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、上位層からの要求に対してハードウェア資源の利用スケジューリングをおこない、要求内容(たとえば、プリンタエンジンによる紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施するようにしてもよい。
SCS1222は、アプリ管理(機能1)、操作部制御(機能2)、システム画面表示(ジョブリスト画面、カウンタ表示画面など)(機能3)、LED表示(機能4)、リソース管理(機能5)、割り込みアプリ制御(機能6)等の複数の機能を行なう。具体的には、アプリ管理(機能1)では、アプリの登録と、その情報を他のアプリに通知する処理をおこなう。操作部制御(機能2)では、アプリの操作部使用権の排他制御をおこなう。システム画面表示(機能3)では、操作部使用権を持つアプリからの要求内容に応じて、エンジン部の状態に対応する警告画面の表示をおこなう。LED表示(機能4)では、警告LED、アプリキーなどのシステムLEDの表示制御をおこなう。リソース管理(機能5)では、アプリ(ECS)がジョブを実行するにあたって、排他しなければならないエンジンリソース(スキャナ、ステープルなど)の排他制御のためのサービスをおこなう。割り込みアプリ制御(機能6)では、特定のアプリを優先動作させるための制御及びサービスをおこなう。
ECS1224は、プロッタ1201と、スキャナ1202と、その他ハードウェアリソース1203などのエンジン部を制御するものであり、画像読み込みと印刷動作、状態通知、ジャムリカバリなどをおこなう。
MCS1225は、メモリ制御をおこなうものであり、具体的には、画像メモリの取得および開放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などをおこなう。
OCS1226は、オペレータと本体制御間の情報伝達手段となる操作パネルを制御するモジュールであり、オペレータのキー操作イベントを本体制御に通知する処理、各アプリがGUIを構築するためのライブラリ関数を提供する処理、構築されたGUI情報をアプリ別に管理する処理、操作パネル上への表示反映処理などをおこなう。
FCS1227は、システムコントローラの各アプリ層からPSTN/ISDN網を使ったファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読み取り、ファクシミリ受信印刷、融合送受信をおこなうためのAPI(Application Program Interface)を提供する。
NCS1228は、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのモジュール群であり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介をおこなう。
本実施例において、例えば、NCS1228で、複数のプロトコルのうちhttpd(Hypertext Transfer Protocol Daemon)によって、インターネットを介して接続されるネットワーク機器とのデータ通信をHTTP(Hypertext Transfer Protocol)で制御し、HTTPリクエストヘッダで指定されるWebサービスに対応する処理部を関数コールによって起動し、そのWebサービスによる処理結果をHTTPレスポンスで該ネットワーク機器へ通知するように構成しても良い。Webサービスは、例えば、XML(eXtensible Markup Language)によって記述されたメッセージに従って提供される。
IMH1229は、イメージデータを仮想メモリ領域(ユーザ仮想空間)から物理メモリへマップする。プロセスの起動に応じて、システムコールを行ない、プロセス用の仮想メモリ領域をマップしたり、マップした仮想メモリ領域をプロセスの終了時に開放する処理等を行なう。
アプリケーション1230は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ1211と、コピー用アプリケーションであるコピーアプリ1212と、ファクシミリ用アプリケーションであるファックスアプリ1213と、スキャナ用アプリケーションであるスキャナアプリ1214と、WebサービスアプリケーションであるWebサービス処理アプリ1215と、工程検査用アプリケーションである工程検査アプリ1216とを有する。各アプリケーション1211〜1216は、プラットフォーム1220上の各プロセスを利用して動作実行し得るため、画面制御、キー操作制御およびジョブ生成などをおこなう画面表示制御プログラムがその主体となる。なお、NCS1228により接続されたネットワークを介して新たなアプリケーションをネットワーク経由で搭載することもできる。また、各アプリケーションはアプリケーションごとに追加または削除することができる。
Webサービス処理アプリ1215は、SOAP(Simple Object Access Protocol)に従ってメッセージ交換を行うSOAP処理部70と、API(Application Program Interface)を介してコントロールサービス1250を利用して所定処理を行い、その処理結果をWS−API(Web Service Application Program Interface)を介してWebサービスとして提供するWebサービスファンクション(WSF)1400とを有する。
このように、融合機1200は、各アプリで共通的に必要となる処理をプラットフォーム1220で一元的に処理する。
次に、融合機1200のハードウェア構成について説明する。図2は、図1に示す融合機1200のハードウェア構成を示すブロック図である。図2に示すように、この融合機1200は、オペレーションパネル1310、FAXコントロールユニット1530、USB(Universal Serial Bus)1330、IEEE13941340およびエンジン部1350(プロッタ1201、スキャナ1202等が接続される)とコントローラ1300のASIC1301とをPCI(Peripheral Component Interconnect)バス等で接続した構成となる。
コントローラ1300は、ASIC1301にMEM−C1302、HDD(Hard Disk Drive)1303などを接続するとともに、このASIC1301とCPU1304とをCPUチップセットのNB1305を介して接続している。このように、NB1305を介して接続する理由は、CPU1304自体のインターフェースが公開されていないためである。
ここで、このASIC1301とNB1305は、単にPCIを介して接続されているのではなく、AGP1308を介して接続されている。このようにAGP1308を介して接続することとした理由は、この融合機1200が図12に示したプラットフォーム1220やアプリケーション1230を形成する複数のプロセスを実行制御する関係上、これらを低速のPCIで接続したのでは、パフォーマンスが低下するからである。
CPU1304は、融合機1200の全体制御をおこなうものであり、具体的には、OS1221上でプラットフォーム1220を形成するSCS1222、SRM1223、ECS1224、MCS1225、OCS1226、FCS1227、NCS1228をそれぞれプロセスとして起動して実行させるとともに、アプリケーション1230を形成するプリンタアプリ1211、コピーアプリ1212、ファックスアプリ1213、スキャナアプリ1214、Webサービス処理アプリ1215、工程検査アプリ1216を起動して実行させる。
NB1305は、CPU1304とMEM−P1306、SB1307、ASIC1301とを接続するためのブリッジであり、MEM−P1306は、融合機の描画用メモリなどとして用いるシステムメモリであり、SB1307は、NB1305とROM、PCIデバイス、周辺デバイスとを接続するためのブリッジである。MEM−C1302は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ASIC1301は、画像処理用のハードウェア要素を有する画像処理用途向けのICである。
HDD1310は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージであり、オペレーションパネル1310は、操作者からの入力操作の受け付け並びに操作者に向けた表示をおこなう操作部である。
したがって、ASIC1301には、MEM−C1302を接続するためのRAMインターフェースと、HDD1303を接続するためのハードディスクインターフェースが設けられ、これらの記憶部に対して画像データの入出力をおこなう場合には、入出力先がRAMインターフェースまたはハードディスクインターフェースに切り替えられる。
AGP1308は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、システムメモリに高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にする。
以下、上述したような図1に示す機能構成、及び、図2に示すハードウェア構成を有する融合機1200がWebサービスを提供するための機能構成例について説明する。ここで、Webサービスとは、ネットワーク機器からのHTTPリクエストによるサービス要求に応じて、融合機1200が所定の処理を行ない、その処理結果をHTTPレスポンスとしてネットワーク機器へ提供することを言う。
先ず、ネットワークを介して、融合機1200からWebサービスが提供される仕組みについて図3で説明する。図3は、Webサービスが提供されるネットワークの構成例を示す図である。図3中、Webサービスが提供される仕組みの概要を説明するため、詳細な機能構成の説明は省略される。
図3において、融合機1200は、ネットワーク機器10との通信制御を行うWebサーバー1101と、ネットワーク機器10との間でSOAPに従ってWebサービスの要求及び応答のメッセージ交換を行うSOAP処理部70と、インターフェイス定義211に基づいて所定のWebサービスファンクション1400を起動し、Webサービスファンクション1400から応答を受け取るハンドラ1103と、Webサーバー1101によって起動され、処理を実行することによってWebサービスを提供するWebサービスファンクション(WSF)1400とを有する。SOAP処理部70は、後述するような機能構成において、ハンドラ1103に含まれるようにしても良い。
インターフェイス定義211は、UDDIサーバー100へ登録されるWebサービスのサービス仕様を示すWSDL(Web Service Description Language)であって、ハンドラ1103は、そのWSDLに記述されるWebサービス仕様を実現するものである。融合機1200は、また、インターフェイス定義211に基づいてハンドラ1103を自動的に生成するハンドラ自動生成部210を有するように構成することができる。
UDDIサーバー100は、融合機1200から融合機1200が行うWebサービスのサービス仕様を示すWSDLを管理し、検索要求に応じて発見したWSDLを提供する機能を有し、融合機1200とネットワーク機器10との仲介を行うサービスブローカー110と、融合機1200から登録されたWSDLを管理するUDDIレジストリ112とを有する。
サービスブローカー110によって、ネットワーク機器10が所望するWebサービスが提供される場合について説明する。サービスブローカー110は、ネットワーク機器10からのWebサービスの要求に応じて、その要求に対応するWSDLをUDDIレジストリ112から検索して、UDDIレジストリ112にて発見したWSDLに記述されたWebサービス仕様に基づいて、SOAPに従って、Webサービスの要求を示す要求メッセージを融合機1200に対して送信する。融合機1200のWebサーバー1101がWebサービスの要求を受信すると、SOAP処理部70によって要求メッセージが処理され、ハンドラ1103はそのメッセージに応じた処理を行うWebサービスファンクション1400を起動する。ハンドラ1103がWebサービスファンクション1400から応答を受けると、SOAP処理部70によってその応答はSOAPに従った応答メッセージとして処理され、Webサーバー1101によってサービスブローカー110へ送信される。
サービスブローカー110は、Webサーバー1101からWebサービスの応答を示す応答メッセージを受信すると、更に、その応答をネットワーク機器10へ送信する。このように、ネットワーク機器10と融合機1200とを仲介するサービスブローカー110によって、ネットワーク機器10は、WSDLを取得することなく、融合機1200に対してWebサービスを要求することができる。
また、ネットワーク機器10が、UDDIサーバー100から所望のWebサービスに対応するWSDLを取得するようにしても良い。この場合、ネットワーク機器10は、UDDIサーバー100に対して、所望のWebサービスに対応するWSDLを検索させて、UDDIサーバー100がUDDIレジストリにて発見したWSDLを取得する。そして、ネットワーク機器10は、取得したWSDLによって記述されるWebサービスの仕様に基づいて、SOAPに従って、Webサービスの要求を示す要求メッセージを融合機1200に対して送信する。
融合機1200のWebサーバー1101がWebサービスの要求を受信すると、SOAP処理部70及びハンドラ1103によって上記同様の処理が行われた後、Webサービスの要求を示す要求メッセージに応じた処理を行うWebサービスファンクション(WSF)1400が起動される。そして、処理を実行したWebサービスファンクション(WSF)1400は、ハンドラ1103にその処理に対する応答を返す。ハンドラ1103及びSOAP処理部70での処理を経てWebサーバー1101が応答を受けると、SOAPに従ったWebサービスの応答を示す応答メッセージをネットワーク機器10へ送信する。このように、ネットワーク機器10が、取得したWSDLに基づいて、SOAPに従って所望のWebサービスを融合機1200に要求するようにしても良い。
また、融合機1200において、Webサービスファンクション(WSF)1400が、WSDLによって記述可能な構成を有するようにしても良い。つまり、WSDLに基づいたWebサービスの要求を処理可能とすると共に、ネットワーク機器10と融合機1200間における所定手順によるWebサービスの要求をも処理可能とする。
このWebサービスが提供されるネットワークの構成例において、メッセージ交換手順であるSOAPを利用した場合について説明するが、Webサービスを提供可能とするメッセージ交換手順は、SOAPに限定されるものではなく、融合機1200とネットワーク10との間で取り決めた所定のメッセージ交換手順によって実現しても良い。
融合機1200は、また、インターフェイス定義211に基づいてハンドラ1103を自動的に生成するハンドラ自動生成部210を有することによって、上記Webサービスファンクション(WSF)1400は、UDDIサーバー100に登録したWebサービスの仕様を記述するWSDLに基づいて、自動的に生成されるようにしても良い。この場合、新たに登録されたWSDLに基づいて、融合機1200自身が、随時ハンドラ1103を動的に生成することが可能となる。例えば、ハンドラ1103の動作環境をJava(登録商標)プログラムが動作可能な環境とすることで実現できる。また、ハンドラ自動生成部210を開発環境において利用し、その生成されたハンドラ1103のオブジェクトコードを融合機1200に搭載するようにしても良い。この場合、ハンドラ1103を開発する工数を削減することができる。
ハンドラ1103を生成するハンドラ自動生成部210での自動生成処理について図4から図8で説明する。例えば、Webサービスファンクション1400は、ファイル管理処理を行い、その結果を提供するWebサービスを提供するものとする。この場合、Webサービスファンクション1400のためのインターフェイス定義211は、例えば、図4及び図5に示すように記述される。また、要求メッセージ及び応答メッセージは、XMLで記述されるものとする。
図4及び図5は、WSDLによるインターフェイス定義の記述例を示す図である。図4において、データ型を定義する<type>タグ240は、メッセージを記述するためのデータタイプを定義し、スキーマの定義が設定される。この例の場合、</type>のみ記述され、XMLのスキーマの基本型のみであることを示す。
メッセージの書式を定義する<message>タグ241(記述<message name="filemanagementInput">)によって定義される定義情報242において、記述<part name="fileId" type="xs:unsignedInt"/>及び記述<part name="operationCode" type="xs:unsignedInt"/>によって、ファイル管理要求の入力パラメータ(filemanagementInput)は、符号なし整数(unsignedInt)のfileId及び符号なし整数(unsignedInt)のoperationCodeによって構成されることを定義する。また、メッセージの書式を定義する<message>タグ243(記述<message name="filemanagementOnput">)によって定義される定義情報244において、記述<part name="requestId" type="xs:unsignedInt"/>によって、ファイル管理要求の出力パラメータ(filemanagementOnput)は、符号なし整数(unsignedInt)のrequestIdによって構成されることを定義する。
操作(operation)の集合を定義する<portType>タグ245(記述<portType name="netdocPortType">)によって定義される定義情報246において、操作毎の入力メッセージ及び出力メッセージが定義される。例えば、<operation>タグ247(記述<operation name="filemanagement">)によって定義される定義情報248において、記述<input message="tns:filemanagementInput"/>によって入力メッセージはfilemanagementInputであることが定義され、また、記述<output message="tns:filemanagementOutput"/>によって出力メッセージはfilemanagementOutputであることが定義される。この場合、ファイル管理(filemanagement)のみが定義される。
<portType>タグ245によって定義された操作とメッセージを具体的なプロトコルとデータフォーマットにマップする<binding>タグ249(記述<binding name="netdocHttpBinding" type="tns:netdocPortType">)によって定義される定義情報250において、netdocPortTypeで定義されるポートタイプについて、操作とメッセージのプロトコルとデータフォーマットへのマップが定義される。
定義情報50において、<sb:binding>タグ51(記述<sb:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>)によって、SOAP HTTPバインディングによるRPC(Remote Procedure Call)の使用が定義される。<operation>タグ52(記述<operation name="filemanagement">)によって、以下にファイル管理(filemanagement)に関するSOAPメッセージが定義される。
先ず、<sb:operation>タグ253(記述<sb:operation soapAction="http://foo.bar.com/netdoc/filemanagement"/>)によって、ファイル管理(filemanagement)要求時のSOAPActionヘッダの値が「
http://foo.bar.com/netdoc/filemanagement」であることを定義する。
次に、<input>タグ254によって定義される定義情報255において、記述<sb:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" namespace="http://foo.bar.com/netdoc/"/>によって、入力時のエンコーディング形式を定義し、記述<sb:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal" namespace="http://foo.bar.com/netdoc/"/>によって、出力時のエンコーディング形式を定義する。
そして、ネットワークの端点の集まりを定義する<service>タグ258(記述<service name="netdoc">)によって定義される定義情報259において、<port>タグ260(記述<port name="netdocPort" binding="tns:netdocHttpBinding">)によってネットワークの端点の1つとなるnetdocPortが定義され、更に、記述<sb:address location="http://printer.foo.bar.com/netdoc"/>によって、そのネットワークの端点のアドレス位置が定義される。つまり、サービス名「netdoc」のバインディングは「netdocHttpBinding」であり、サービスのURL(Uniform Resource Locator)は「http://printer.foo.bar.com/netdoc」であることが定義される。
このようにWSDLで定義されたインターフェイス定義211によって、データ型が決定され、操作が決定され、また、URL及びSOAPActionヘッダが決定される。
このようなインターフェイス定義211に基づいて、ハンドラ自動生成部210によって行われる自動生成処理について、図7及び図8を参照しつつ、図6に示すフローチャート図に基づいて説明する。図6は、ハンドラのソースコードを生成する自動生成処理を説明するためのフローチャート図である。図7は、生成された構造体定義のコードの例を示す図である。図8は、Webサービスファンクションをコールする関数の例を示す図である。
図6において、ハンドラ自動生成部210は、構造体定義のコードを生成する(ステップS150)。この場合、図8に示すファイル管理処理を実行するファイル管理関数301へ入力される引数30として使用される構造体「Netdoc_filemanagementInput」を定義するコードを生成する。宣言文として、例えば、「typedef struct _netdoc_filemanagementInput」のようなコードを生成し、続けて、図4の<message>タグ241によって定義される定義情報242に基づいて、図7に示すコード261を生成する。つまり、図4の定義情報242において、name="fileId"によって構成要素「fileId」が、type="unsignedInt"によって符号なし整数として、「unsigned int fileId;」のようなコードを生成する。また、name="operationCode"によって構成要素「operationCode」が、type="unsignedInt"によって符号なし整数として、「unsigned int operationCode;」のようなコードを生成する。そして、構造体「Netdoc_filemanagementInpput」にこの構造体定義「_nnetdoc_filemanagementInput」を適用するコードを生成する。コード261の生成によって入力用の構造体が定義される。
次に、ファイル管理関数301から出力される引数31として使用される構造体「Netdoc_filemanagementOutput」を定義するコードを生成する。宣言文として、例えば、「typedef struct _netdoc_filemanagementOutput」のようなコードを生成し、続けて、図4の<message>タグ241によって定義される定義情報242に基づいて、図7に示すコード262を生成する。つまり、図4の定義情報244において、name="requestId"によって構成要素「requestId」が、type="unsignedInt"によって符号なし整数として、「unsigned int requestId;」のようなコードを生成する。そして、構造体「Netdoc_filemanagementOutput」にこの構造体定義「_netdoc_filemanagementOutput」を適用するコードを生成する。コード262の生成によって出力用の構造体が定義される。
ハンドラ自動生成部210は、ファイル管理関数301をコールするための関数宣言を生成する(ステップS151)。この場合、図4の<operation>タグ247によって定義される定義情報248に基づいて、例えば、ファイル管理関数301をコールするために、「SoapFault netdoc_filemanagement (Netdoc_filemanagementInput *in, Netdoc_filemanagementOutput *out);」のようなコードを生成する。
ハンドラ自動生成部210は、SOAP処理部70によって処理された要求メッセージをXMLで記述する際のタグ間の関連をツリー構造で示すDOM(Document Object Model)ツリーに変換するコードを生成し(ステップS153)、Webサービスファンクション1400をコールするコードを生成する(ステップS154)。つまり、ハンドラ自動生成部210は、ステップS151で生成した関数宣言のコードを使用してファイル管理関数301のコードを生成する。
続けて、ハンドラ自動生成部210は、Webサービスファンクション1400からの処理結果がエラーであるか否かを判断するコードと、エラーの場合の処理を行なうコードを生成する(ステップS155)。更に、ハンドラ自動生成部210は、DOMツリーから応答メッセージへ変換するコードを生成する(ステップS156)。
このように、ハンドラ自動生成部210は、インターフェイス定義211に基づいて、ハンドラ1103を生成することができる。このような構成にすることによって、ハンドラ1103を実現するソースコードを自動生成することができるため、単純で繰り返しの多いDOMプログラミングを作成する必要がない。従って、短期間で品質の高いソフトウェア開発を行うことができる。また、Webサービスファンクション1400は、入出力ともにプログラミング言語で扱いやすい形式とすることができるため、開発者にXML又はHTTPについての深い知識を必要としない。従って、開発者の教育に要するコストを削減することができる。更に、プロトコルの追加や変更が生じた際にも、インターフェイス定義211を変更するだけでハンドラ1103のソースコードを自動生成することができる。従って、高い保守性を実現することができる。
以下、Webサービスの提供を可能とする融合機1200の機能構成例について、融合機1200とネットワーク機器10とで説明する。
先ず、メッセージ交換手順であるSOAPを利用せずにXMLにて記述されたメッセージに基づいて、ネットワークを介して接続されるネットワーク機器に、Webサービスを提供する融合機1200について説明する。図9は、Webサービスを提供する融合機の第一機能構成例を示す図である。図9において、図1に示す融合機1200の機能構成のうち主要な機能構成のみが図示され、他の機能構成は省略される。
図9において、融合機1200は、HTTPに従った通信制御を行うと共に、内部のWebサービス提供処理部に処理を分配するWebサーバー500と、複数のWebサービス提供処理部としてファイル管理Webサービス提供処理部40及び他Webサービス提供処理部49と、処理を振り分けるハンドラ1103と、スキャナ1202と、HDD1303と、プロッタ1201と、オペレーションパネル1310と、FAXコントロールユニット1530等とを有する。Webサーバー500は、HTTPに従った通信制御を行うhttpd2と、HTTPリクエストに対応するWebサービス提供処理部へ処理を分配するディストリビューター(Distributor)30とを有する。
ファイル管理Webサービス提供処理部40は、例えば、Webサービスを実行するWebサービスファンクション1400(図3)としてHDD1303への文書の蓄積等のファイル管理を制御するファイル管理実行部400を有する。
ハンドラ1103は、図3に示すように、インターフェイス定期211によって提供される各Webサービス提供処理部40及び49のWebサービスファンクションを記述したWSDLに基づいて、ハンドラ自動生成部210によって生成された処理部であり、複数のWebサービス提供処理部40及び49とで共有されるXML処理部50と、XML処理部50によって解析されたWebサービスの処理内容を示す処理メッセージに基づいてファイル管理実行部400に振り分けるディスパッチャー(Dispatcher)60とを有する。
なお、融合機1200において、説明の便宜上、複数のWebサービス提供処理部として、ファイル管理Webサービス提供処理部40と他Webサービス提供処理部49のみが示されるが、更に多くのWebサービス提供処理部を有する構成とすることもできる。この場合、ハンドラ1103は、複数のWebサービス提供処理部の夫々の実行部に処理を振り分ける複数のディスパッチャー60を備えるようにする。また、それら複数のWebサービス提供処理部によって、ハンドラ1103においてXML処理部50は共有される。
また、ネットワーク15を介して融合機1200と接続されるネットワーク機器10は、キーボード又はマウス等の入力装置からの入力データを制御すると共に、モニタ9に表示させる出力データとを制御する入出力制御部11と、融合機1200に対するWebサービスの処理内容及び融合機1200からのWebサービスの処理結果をXMLによって処理するXML処理部13と、HTTPに従ったリクエストの生成及びレスポンスを解析するリクエスト/レスポンス処理部14とを有する。ここで、HTTPリクエストはHTTPに従ったデータ通信によって、Webサービスを要求することを示し、HTTPレスポンスは該Webサービスの処理結果を通知する応答を示す。また、この第一機能構成例では、HTTPリクエスト及びHTTPレスポンスのボディ部はXMLによって記述される例を示している。
このようなネットワーク機器10を利用する利用者は、所望のWebサービスを融合機1200へ要求するための画面から融合機1200へ要求する(ステップS1)。利用者によるWebサービスの要求に応じて、入出力制御部11は、リクエスト/レスポンス処理部14へ要求データを通知する(ステップS2)。リクエスト/レスポンス処理部14は、入出力制御部11からの要求データに基づいてHTTPリクエストを生成し(ステップS3)、XML処理部13が処理内容をXMLによってHTTPリクエストのボディ部に記述すると、HTTPリクエストがネットワーク15を介して融合機1200へ送信される(ステップS4)。
融合機1200のWebサーバー500は、httpd2によってHTTPリクエストを受信すると、ディストリビューター30によって、HTTPリクエストのヘッダ部で指定されるWebサービス提供処理部へ受信したHTTPリクエストを分配する(ステップS5)。例えば、HTTPリクエストのヘッダ部でファイル管理Webサービス提供処理部40が指定されていた場合、ファイル管理Webサービス提供処理部40がディストリビューター30によって関数コールされる。
ファイル管理Webサービス提供処理部40において、ハンドラ1103は、XML処理部50によってHTTPリクエストのXMLで記述されたボディ部から処理内容を取得し(ステップS6)、取得した処理内容をディスパッチャー60に通知する(ステップS7)。ディスパッチャー60は通知された処理内容に従って、Webサービスによる処理をファイル管理実行部400に振り分ける(ステップS8)。ファイル管理実行部400は、処理内容に従ってHDD1303に対して処理を実行し、その処理結果を取得する(ステップS9)。例えば、処理内容に指定される文書の追加、更新、又は削除等の処理を実行する。ファイル管理実行部400は処理結果をXML処理部50へ通知する(ステップS10)。XML処理部50は、通知された処理結果をXMLで記述したHTTPレスポンスのボディ部を生成する(ステップS11)。そして、ファイル管理Webサービス提供処理部40から通知を受けたWebサーバー500は、httpd2を介してXMLで記述された処理結果をボディ部とするHTTPレスポンスをネットワーク機器10に送信する。
ネットワーク機器10にてHTTPレスポンスが受信されると、XML処理部13は、HTTPレスポンスのボディ部を解析して処理結果を取得し(ステップS13)、リクエスト/レスポンス処理部14は、その取得した処理結果をモニタ9に表示させる出力データとして入出力制御部11に渡す(ステップS14)。そして、入出力制御部11は、受け取った出力データをモニタ9に表示させるように制御する(ステップS15)。
上記第一機能構成例において、ネットワーク機器10は、予め取り決めておいたXMLによる記述形式に従ってHTTPリクエストのボディ部に処理内容を記述することによって、融合機1200に対して遠隔地からWebサービスの要求を行うことができる。また、融合機1200は、予め取り決めておいたXMLによる記述形式に従ってHTTPレスポンスのボディ部に処理結果を記述することによって、遠隔地にあるネットワーク機器10に対してWebサービスの提供を行うことが可能となる。融合機1200は、ネットワーク15を介して、複数のネットワーク機器10に対して、Webサービスを提供することも可能である。
次に、SOAPに従ってWebサービスを提供可能とする融合機1200の機能構成例について説明する。以下、例示される各Webサービス提供処理部は、WSDLによって記述されたサービス仕様に基づいて記述された処理(サービス)を実行する関数である。
以下、SOAPを利用したWebサービスを提供する融合機1200の機能構成例について説明する。図10は、Webサービスを提供する融合機の第二機能構成例を示す図である。図10中、図9と同一構成には同一符号を付し、その説明は省略する。また、処理フローも同様であるためその説明は省略する。図10に示される第二機能構成例において、融合機1200が、ファイル管理Webサービス提供処理部40及び他Webサービス提供処理部49等の複数のWebサービス提供処理部に対応するハンドラ1103において、複数のWebサービス提供処理部によって共有されるSOAP処理部70を有し、XML処理部50とディスパッチャー60とがSOAP処理部70に含まれる点において、上記第一機能構成例と異なった構成となっている。また、ネットワーク機器10は、SOAPに従って融合機1200とメッセージ交換するためのSOAP処理部12を有し、XMLで記述されたメッセージを処理するXML処理部13がSOAP処理部12に含まれる点において、上記第一機能構成例と異なった構成となっている。
このような融合機1200において、SOAP処理部70は、HTTPリクエストのヘッダ部を解析し、ディスパッチャー60によって処理を振り分け、XML処理部50によってHTTPリクエストのボディ部のXMLで記述されたメッセージから処理内容を取得する。例えば、ディスパッチャー60は、Webサービスによる処理をファイル管理実行部400に振り分ける。その後、処理を実行したファイル管理実行部400からその処理結果を受け取ったSOAP処理部70は、XML処理部50によってHTTPレスポンスのボディ部にその処理結果をXMLで記述し、SOAPに従って、そのHTTPレスポンスをネットワーク機器10に送信する。
上記第二機能構成例において、ディスパッチャー60をXML処理部50に含むようにしても良い。
上記説明より、SOAPが適用された融合機1200及びネットワーク機器10とにおいて、ネットワーク機器10は、融合機1200に対してXMLを使ったRPC(Remote Procedure Call)を実現することができる。
融合機1200とネットワーク機器10との間でSOAPに従ってメッセージ交換するHTTPリクエスト及びHTTPレスポンスについて図11で説明する。図11は、HTTPリクエスト及びHTTPレスポンスの例を示す図である。図11(A)は、HTTPリクエストの例を示す図である。図11(A)に示すHTTPリクエストにおいて、URI(Uniform Resource Indicator)16は、POSTメソッドによってHTTPリクエストが送信されるURIを示し、例えば、「netdoc」である。更に、SOAPAction17でリクエストの目的を表すURIが示され、例えば、「http://foo.bar.com/netdoc/filemanagement」によって「ファイル管理」が指定される。
図10の融合機1200のhttpd2のディストリビューター30は、SOAPAction17で指定される「filemanagement」により、ファイル管理Webサービス提供処理部40を関数コールする。ファイル管理Webサービス提供処理部40は、SOAP処理部70によってSOAPに従ってHTTPリクエストを処理する。SOAP処理部70において、ディスパッチャー60は、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」はファイル編集を要求する。
この場合、ディスパッチャー60によって処理が振り分けられたファイル管理実行部400は、XML処理部50によって解析された処理内容に従って、HDD1303からフィルID「123」の文書を削除する。
なお、上記例は、一つのコマンド「filemanagement」で、<operationCode>の設定によってファイルの管理方法を指定しているが、ファイル管理の処理を細分し、例えば、ファイル追加Webサービス、ファイル編集Webサービス、及び、ファイル削除Webサービス等のように複数のWebサービスをWebサービスファンクション1400としてWebサービス処理アプリ1215に備えるようにしても良い。この場合、例えば、「fileadd」、「fileedit」、「filedelete」のように、Webサービス毎に一意に対応するコマンドがXMLメッセージ18に設定されるようにすることによって、<operationCode>によるオペレーションコードが不要となる。
図11(B)は、HTTPレスポンスの例を示す図である。図11(B)に示すHTTPレスポンスは、ファイル管理Webサービス提供処理部40のSOAP処理部70によって、ファイル管理Webサービス提供処理部40の処理結果に基づいて作成される。図11(B)に示す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レスポンスを受信したネットワーク機器10は、XML処理部13によるXMLによって記述されたメッセージ22を処理することによって、処理が正常に行われたことを確認する。
次に、SOAP処理部70とXML処理部50とが個別に複数のWebサービス提供処理部によって共有される融合機1200の機能構成について説明する。図12は、Webサービスを提供する融合機の第三機能構成例を示す図である。図12中、図10と同一構成には同一符号を付し、その説明は省略する。また、処理フローも同様であるためその説明は省略する。図12に示される第三機能構成例において、融合機1200は、図10に示される第二機能構成例と同様に、ファイル管理Webサービス提供処理部40及び他Webサービス提供処理部49等の複数のWebサービス提供処理部に対応するハンドラ1103において、複数のWebサービス提供処理部によって共有されるSOAP処理部70を有するが、XML処理部50は、SOAP処理部70とは独立して複数のWebサービス提供処理部によって共有される点が、上記第二機能構成例と異なっている。この第三機能構成例では、第二機能構成例と同様に、ディスパッチャー60がSOAP処理部70に含まれる構成となっているが、XML処理部50に含まれる構成としても良い。ネットワーク機器10は、図10に示されるネットワーク機器10と同様の機能構成を有する。
上記説明より、SOAPが適用された融合機1200及びネットワーク機器10とにおいて、ネットワーク機器10は、融合機1200に対してXMLを使ったRPC(Remote Procedure Call)を実現することができる。
融合機1200は、複数の機能の夫々に対応させて複数のWebサービス提供処理部を有するように構成することができる。図13は、Webサービスを提供する融合機の第四機能構成例を示す図である。図13中、図10と同一構成には同一符号を付し、その説明は省略する。図12に示される第三機能構成例において、融合機1200は、HDD1303に蓄積された文書を管理するWebサービスを提供するファイル管理Webサービス提供処理部40と、スキャナ1202を制御するWebサービスを提供するスキャナ制御Webサービス提供処理部41と、プロッタ1201を制御するWebサービスを提供する印刷Webサービス提供処理部42と、オペレーションパネル1310を制御するWebサービスを提供する操作部制御Webサービス提供処理部43とを有する。また、ファイル管理Webサービス提供処理部40はHDD1303に対して処理を実行するファイル管理実行部400を有し、スキャナ制御Webサービス提供処理部41はスキャナ1202に対して処理を実行するスキャナ制御実行部401を有し、印刷Webサービス提供処理部42はプロッタ1201に対して処理を実行するプロッタ制御実行部402を有し、操作部制御Webサービス提供処理部43はオペレーションパネル1310に対して処理を実行する操作部制御実行部403を有する。
更に、第三機能構成例と同様に、ハンドラ1103において、XML処理部50とSOAP処理部70とは夫々独立して複数のWebサービス提供処理部40〜43によって共有される。また、ディスパッチャー60〜63が、複数のWebサービス提供処理部40〜43の夫々に対応するように構成される。
また、ネットワーク機器10は、図10に示されるネットワーク機器10と同様の機能構成を有する。
このような第四機能構成例において、SOAPが適用された融合機1200及びネットワーク機器10とにおいて、ネットワーク機器10は、融合機1200に対してXMLを使ったRPC(Remote Procedure Call)を実現することができる。また、ネットワーク機器10は、複数のWebサービス提供処理部40〜43を有する融合機1200から所望のWebサービスに対応したHTTPリクエストを送信することによって、該所望のWebサービスの提供を受けることができる。従って、ネットワーク機器10は、スキャナ1202、HDD1303、プロッタ1201、オペレーションパネル1310等の画像形成装置の機能を利用するための複数のドライバをインストールすることなく、これらの機能をWebサービスとして利用することができる。
次に、ネットワーク機器10の一回のHTTPリクエストに応じて、複数のWebサービス提供処理部を組み合せて実行する融合機1200の機能構成例について説明する。図14は、Webサービスを提供する融合機の第五機能構成例を示す図である。図14中、図12及び図13と同一構成には同一符号を付し、その説明は省略する。図14に示される第五機能構成例において、図12に示す第三機能構成例と異なる点は、融合機1200が、ファイル管理Webサービス提供処理部40と、印刷Webサービス提供処理部42とを有すると共に、ファイル管理Webサービス提供処理部40と印刷Webサービス提供処理部42とを組み合せて制御する複合Webサービス提供処理部90を有し、ファイル管理Webサービス提供処理部40と、印刷Webサービス提供処理部42と、複合Webサービス提供処理部90と、他Webサービス提供処理部49とがハンドラ1103においてXML処理部50とSOAP処理部70とを共有するように構成される点である。更に、SOAP処理部70は各実行部400、412、80等に処理を振り分けるディスパッチャー60、62、68及び69等を有する。
Webサービスファンクション1400(図3)としてのファイル管理Webサービス提供処理部40のファイル管理実行部400は、ディスパッチャー60によって振り分けられた処理に基づいて、HDD1303へのファイル管理処理を実行すると共に、複合Webサービス実行部80によって指定されるファイル管理処理を実行する。また、Webサービスファンクション1400としての印刷Webサービス提供処理部42のファイル印刷実行部412は、ディスパッチャー62によって振り分けられた処理に基づいて、ファイルの印刷を実行すると共に、複合Webサービス実行部80によって指定されるファイルの印刷を実行する。
複合Webサービス提供処理部90は、ファイル管理Webサービス提供処理部40と、印刷Webサービス提供処理部42とを組み合せて実行する複合Webサービス実行部80を有する。
また、ネットワーク機器10は、図10に示されるネットワーク機器10と同様の機能構成を有する。
図14において、融合機1200は、ネットワーク機器10から、例えば、文書をHDD1303に蓄積して印刷する蓄積印刷を要求するHTTPリクエストを受信すると、複合Webサービス提供処理部90は複合Webサービス実行部80をコールし、ファイル管理実行部400に文書をHDD1303に蓄積させ、続けて、蓄積した文書のファイルIDを指定することによってファイル印刷実行部412に印刷処理を実行させる一連の処理を行う。
このように、複合Webサービス実行部80が、ファイル管理実行部400とファイル印刷実行部412とに連続して処理を行わせることにより、ネットワーク15を介して接続されるネットワーク機器10は、一回のHTTPリクエストを送信するのみで、2つ以上のWebサービス提供処理部による一連のWebサービスの提供を受けることが可能となる。また、複合Webサービス実行部80自身はファイルを管理する処理及び印刷処理を行うWebサービスファンクション1400としての実体を備える必要がないため、開発効率を大幅に削減することができる。更に、ネットワーク機器10は、ファイル管理Webサービス提供処理部40のみによるWebサービスの提供、及び、印刷Webサービス提供処理部42のみによるWebサービスの提供を要求することもできる。
このように、融合機1200は、画像を形成すると共に、実際にWebサービスを提供するための処理を行う複数の実行部と、それらの組み合せによって、幅広いWebサービスを提供することができる。
上記第一〜第五機能構成例において、融合機1200が一台のネットワーク機器10へWebサービスを提供する構成について説明したが、複数のネットワーク機器10とネットワーク15を介して接続される場合には、各ネットワーク機器10へ所望のWebサービスを提供することが可能である。
また、融合機1200への処理内容をXMLで記述することができ、また、メッセージ交換手順をSOAPとすることによって、ネットワーク機器10の機種又はオペレーティングシステムに依存することなく、ネットワーク機器10は、Webサービスの提供を受けることが可能となる。
更に、利用者は、使用するコンピュータ端末に複数の画像形成機能を利用するための複数のドライバ・ソフトウェアをインストールすることなく、画像形成装置の機能を、ネットワークを介してインターネット標準の各種Webプロトコルを利用してアクセス可能なプログラマブルなアプリケーションコンポーネントとして利用することができる。
また、融合機1200内又は融合機1200と他装置間とにおいて、Webサービスが他Webサービスとやり取りする分散環境を実現することができる。
上記実施例により、画像を形成する融合機1200は、オペレーションパネルの制御、印刷処理、ファイル管理、スキャナ制御等、画像処理に関する種々の内部情報を処理し、その処理結果を要求元へ提供するWebサービスを実現することができる。ここで言う内部情報とは、画像情報、画像情報についてのステータス情報、及び、機器本体の設定を変更したりネットワークIPを変更したりする制御パラメータ等の情報等の画像処理及び融合機1200に関する多種多様の情報を示しており、それら内部情報に対して所定処理を行い、その処理結果をWebサービスとして提供することは、上記実施例により実現可能である。
なお、上記実施例において、httpd2は、ネットワーク通信制御手段に対応し、Webサービス提供処理部40から43、49及び90の夫々は、Webサービス提供処理手段に対応し、ファイル管理実行部400、スキャナ制御実行部401、プロッタ制御実行部402及び操作部制御実行部403の夫々は、Webサービス実行手段に対応する。また、SOAP処理部70は、プロトコル処理手段に対応し、XML処理部50はメッセージ処理手段に対応する。