(57)【要約】【課題】  メッセージ受信側に要する記憶装置の容量を最小限に抑えることが可能な、テキスト形式のメッセージにファイルを添付して送受信する技術を提供する。【解決手段】  ネットワークを介して外部装置と通信可能な情報処理装置であって、１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報とを保持する保持手段と、前記第１テキスト情報に基づいて、当該第１テキスト情報への参照を示す情報と、前記外部装置の動作を制御する制御情報とを含む第２テキスト情報を生成する生成手段と、前記第１テキスト情報において参照されている前記ファイル情報を抽出する抽出手段と、前記第２テキスト情報、前記抽出手段において抽出された前記ファイル情報、前記第１テキスト情報をこの順に前記外部装置に送出する送出手段とを備える。【選択図】  図２
2006277343.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して外部装置と通信可能な情報処理装置であって、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報とを保持する保持手段と、
前記第１テキスト情報に基づいて、当該第１テキスト情報への参照を示す情報と、前記外部装置の動作を制御する制御情報とを含む第２テキスト情報を生成する生成手段と、
前記第１テキスト情報において参照されている前記ファイル情報を抽出する抽出手段と、
前記第２テキスト情報、前記抽出手段において抽出された前記ファイル情報、前記第１テキスト情報をこの順に前記外部装置に送出する送出手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記生成手段は、外部からの指示入力を監視し、監視された当該指示入力に基づいて前記第２テキスト情報の制御情報を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
ネットワークを介して外部装置と通信可能な情報処理装置であって、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報と、当該第１テキスト情報への参照を示す情報と当該情報処理装置の動作を制御する制御情報とを含む第２テキスト情報とを、前記外部装置から、第２テキスト情報、ファイル情報、第１テキスト情報の順に入力する入力手段と、
入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第１テキスト情報及び前記ファイル情報を上位処理に転送するか否かを判定する判定手段と、
前記判定手段において、前記第１テキスト情報及び前記ファイル情報を上位処理に転送すると判定された場合、入力された前記ファイル情報と前記第１テキスト情報と前記上位処理に転送するために蓄積する蓄積手段とを備えることを特徴とする情報処理装置。
【請求項４】
前記判定手段は、入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを所定の前記外部装置に転送するか否かを更に判定し、
前記判定手段において、前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを所定の前記外部装置に転送すると判定された場合、入力された前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを当該外部装置に転送する転送手段を更に備えることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２テキスト情報に含まれる前記制御情報に基づいて処理を行う制御手段を更に備えることを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
入力された前記第２テキスト情報の正当性を検査する検査手段を更に備え、
前記入力手段は、前記検査手段において入力された前記第２テキスト情報が正当ではないと判定された場合、前記ファイル情報と前記第１テキスト情報との入力を中断することを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
互いに通信可能な第１、第２の情報処理装置を備える情報処理システムであって、
前記第１の情報処理装置は、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報とを保持する保持手段と、
前記第１テキスト情報に基づいて、当該第１テキスト情報への参照を示す情報と、前記第２の情報処理装置の動作を制御する制御情報とを含む第２テキスト情報を生成する生成手段と、
前記第１テキスト情報において参照されている前記ファイル情報を抽出する抽出手段と、
前記第２テキスト情報、前記抽出手段において抽出された前記ファイル情報、前記第１テキスト情報をこの順に前記第２の情報処理装置に送出する送出手段とを備え、
前記第２の情報処理装置は、
前記第１の情報処理装置から、前記第２テキスト情報、前記ファイル情報、前記第１テキスト情報の順に入力する入力手段と、
入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第１テキスト情報及び前記ファイル情報を上位処理に転送するか否かを判定する判定手段と、
前記判定手段において、前記第１テキスト情報及び前記ファイル情報を上位処理に転送すると判定された場合、入力された前記ファイル情報と前記第１テキスト情報と前記上位処理に転送するために蓄積する蓄積手段とを備えることを特徴とする情報処理システム。
【請求項８】
ネットワークを介して外部装置と通信可能な情報処理装置の制御方法であって、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報とを保持手段に保持する保持工程と、
前記第１テキスト情報に基づいて、当該第１テキスト情報への参照を示す情報と、前記外部装置の動作を制御する制御情報とを含む第２テキスト情報を生成する生成工程と、
前記第１テキスト情報において参照されている前記ファイル情報を抽出する抽出工程と、
前記第２テキスト情報、前記抽出工程において抽出された前記ファイル情報、前記第１テキスト情報をこの順に前記外部装置に送出する送出工程とを備えることを特徴とする情報処理装置の制御方法。
【請求項９】
前記生成工程は、外部からの指示入力を監視し、監視された当該指示入力に基づいて前記第２テキスト情報の制御情報を生成することを特徴とする請求項８に記載の情報処理装置の制御方法。
【請求項１０】
ネットワークを介して外部装置と通信可能な情報処理装置の制御方法であって、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報と、当該第１テキスト情報への参照を示す情報と当該情報処理装置の動作を制御する制御情報とを含む第２テキスト情報とを、前記外部装置から、第２テキスト情報、ファイル情報、第１テキスト情報の順に入力する入力工程と、
入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第１テキスト情報及び前記ファイル情報を上位処理に転送するか否かを判定する判定工程と、
前記判定工程において、前記第１テキスト情報及び前記ファイル情報を上位処理に転送すると判定された場合、入力された前記ファイル情報と前記第１テキスト情報と前記上位処理に転送するために蓄積手段に蓄積する蓄積工程とを備えることを特徴とする情報処理装置の制御方法。
【請求項１１】
前記判定工程は、入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを所定の前記外部装置に転送するか否かを更に判定し、
前記判定工程において、前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを所定の前記外部装置に転送すると判定された場合、入力された前記第２テキスト情報、前記第１テキスト情報、前記ファイル情報の少なくともいずれかを当該外部装置に転送する転送工程を更に備えることを特徴とする請求項１０に記載の情報処理装置の制御方法。
【請求項１２】
前記第２テキスト情報に含まれる前記制御情報に基づいて処理を行う制御工程を更に備えることを特徴とする請求項１０又は１１に記載の情報処理装置の制御方法。
【請求項１３】
入力された前記第２テキスト情報の正当性を検査する検査工程を更に備え、
前記入力工程は、前記検査工程において入力された前記第２テキスト情報が正当ではないと判定された場合、前記ファイル情報と前記第１テキスト情報との入力を中断することを特徴とする請求項１０乃至１２のいずれか１項に記載の情報処理装置の制御方法。
【請求項１４】
請求項８乃至１３のいずれか１項に記載の情報処理装置の制御方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項１５】
請求項１４に記載のコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はテキスト形式のメッセージにファイルを添付して送受信する技術に関する。
【背景技術】
【０００２】
近年、インターネットの普及により、コンピュータやデジタル機器等の情報処理装置から、ネットワーク上のWebサービスを利用することが多くなってきている。Webサービスとは、ネットワーク上でオープンな仕様で公開されたソフトウェア部品のことである。一般に、コンピュータやデジタル機器等の情報処理装置とWebサービスとの間で送受信されるメッセージは、インターネット技術の標準化団体であるW3C(World Wide Web Consortium)で仕様が策定されているSOAP(Simple Object Access Protocol)等、XMLプロトコルに基づいて記述されることが多い。ここで、XMLプロトコルとは、W3Cで仕様が策定されているマークアップ言語であるXML(eXtensible Markup Language)を用いて通信内容の記述を行う通信プロトコルのことである。
【０００３】
XMLは、構造化データをテキスト形式で記述する言語である。そのため、XMLプロトコルの仕様だけを用いてXML形式のメッセージを送受信する場合、XML形式のメッセージからリンク参照された画像ファイル等のバイナリ形式のデータは、バイナリ形式のまま送信することができない。
【０００４】
そこで、従来より、W3Cでは、SOAP自体の仕様の他に、SwA（SOAP Messages with Attachments）、MTOM(SOAP Message Transmission Optimization Mechanism)等、SOAPで送受信するメッセージにバイナリファイルを添付する際の仕様が策定されている。これらの、XMLプロトコルで送受信するメッセージにファイルを添付するための仕様においては、インターネット上でよく用いられる、MIME(Multipurpose Internet Mail Extensions)仕様等を用いたマルチパート形式でメッセージ構成を定義している。即ち、マルチパートの1つのパートに、SOAPなどXMLプロトコルの仕様にしたがって記述されたXML形式のメッセージを格納し、このメッセージから参照されるバイナリデータを、別のパートに格納したメッセージ構成を定義している。
【特許文献１】特開２００４−２１３３５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のメッセージにファイルを添付するための仕様では、マルチパート形式であるメッセージ上で、各パートをどのような順番で配置するのかは自由となっている。このため、この仕様に基づいてメッセージを生成するメッセージ送信装置は、用途や目的、状況に応じて最も適したパートの順番でメッセージを生成することが可能である。結果として、生成されるメッセージの各パートは、以下のようなパターンで配置されることが考えられる。
1)  参照元であるXMLプロトコルのメッセージ格納パートが、参照先バイナリデータの格納パートよりも前に配置される。
2)  参照元であるXMLプロトコルのメッセージ格納パートが、参照先バイナリデータの格納パートよりも後に配置される。
3)  参照元であるXMLプロトコルのメッセージ格納パートが、参照先バイナリデータの格納パートの間に配置される。
【０００６】
上記1)のようなメッセージ構成の場合、このメッセージを受け取った受信側では、次のような問題が発生する。即ち、メッセージを受信しながら、受信した部分のメッセージを逐次処理する受信側の通信ソフトウェアは、XMLプロトコルのメッセージ格納パートを受信した時点で、このパート内に格納されているXML形式のメッセージをアプリケーションに渡すことができない。なぜなら、もし渡した場合、受信側のアプリケーションが、まだ通信ソフトウェアが受信していないパートに格納されているバイナリデータを参照しようとして、参照先のバイナリデータが見つからないという問題が発生し得るからである。このため、受信側の通信ソフトウェアは、参照先バイナリデータの格納パートの受信を完了するまでXMLプロトコルのメッセージ格納パートをメモリ等の記憶装置に保持し続けなければならない。
【０００７】
また、上記2)のようなメッセージ構成の場合、このメッセージを受け取った受信側では、次のような問題が発生する。即ち、このメッセージを受け取った受信側の通信ソフトウェアは、XMLプロトコルのメッセージ格納パートを受信するまで、他のパートに格納されたバイナリデータをファイル空間やメモリ等の記憶装置に無条件に保持することになる。しかしながら、例えば、XMLプロトコルのメッセージ内に、通信ソフトウェアが解釈できない記述が存在して処理を中断しなければならない場合や、或いは、他の受信者へのメッセージの転送が指示されている場合には、バイナリデータの保持は本来不要である。このため、ファイル空間やメモリ等の記憶装置などのリソースが無駄に使用されることが問題となる。
【０００８】
上記3)のようなメッセージ構成の場合は、上記1), 2)両方の問題が発生し得る。
【０００９】
以上のように、従来の手法においては、受信側の記憶装置が効率的に使用されていなかった。このため、メッセージ受信側は大容量の記憶装置を備えている必要があった。
【００１０】
本発明は上記問題に鑑みなされたものであり、メッセージ受信側に要する記憶装置の容量を最小限に抑えることが可能な、テキスト形式のメッセージにファイルを添付して送受信する技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明による情報処理システムは以下の構成を備える。即ち、
互いに通信可能な第１、第２の情報処理装置を備える情報処理システムであって、
前記第１の情報処理装置は、
１以上のファイル情報と、当該ファイル情報への参照を示す情報を含む第１テキスト情報とを保持する保持手段と、
前記第１テキスト情報に基づいて、当該第１テキスト情報への参照を示す情報と、前記第２の情報処理装置の動作を制御する制御情報とを含む第２テキスト情報を生成する生成手段と、
前記第１テキスト情報において参照されている前記ファイル情報を抽出する抽出手段と、
前記第２テキスト情報、前記抽出手段において抽出された前記ファイル情報、前記第１テキスト情報をこの順に前記第２の情報処理装置に送出する送出手段とを備え、
前記第２の情報処理装置は、
前記第１の情報処理装置から、前記第２テキスト情報、前記ファイル情報、前記第１テキスト情報の順に入力する入力手段と、
入力された前記第２テキスト情報に含まれる前記制御情報に基づいて、前記第１テキスト情報及び前記ファイル情報を上位処理に転送するか否かを判定する判定手段と、
前記判定手段において、前記第１テキスト情報及び前記ファイル情報を上位処理に転送すると判定された場合、入力された前記ファイル情報と前記第１テキスト情報と前記上位処理に転送するために蓄積する蓄積手段とを備える。
【発明の効果】
【００１２】
本発明によれば、メッセージ受信側に要する記憶装置の容量を最小限に抑えることが可能な、テキスト形式のメッセージにファイルを添付して送受信する技術を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１４】
＜＜第1実施形態＞＞
(システム構成)
まず、図1を参照して、本実施形態における情報処理システムの構成例を説明する。図1は、本実施形態における情報処理システムの構成例を示したブロック図である。
【００１５】
図1のように本実施形態における情報処理システムはメッセージ送信装置(以下、送信装置と呼ぶ)100、メッセージ受信装置(以下、受信装置と呼ぶ)120、及び、これらが接続されたネットワーク140から構成されている。
【００１６】
送信装置100は、メッセージを生成し、生成したメッセージを、XMLプロトコルの1つであるSOAPで、ネットワーク140を経由して、受信装置120へ送信する情報処理装置である。送信装置100は、例えば、パーソナルコンピュータ(PC)やワークステーション(WS)、或いは、携帯電話、PHS、携帯情報端末（PDA）、プリンタ等のデジタル情報機器等で実現される。
【００１７】
受信装置120は、送信装置100から送られてきたメッセージを受信し、その内容に基づいて所定の処理を行う情報処理装置である。受信装置120も送信装置100と同様に、例えば、パーソナルコンピュータ(PC)やワークステーション(WS)、或いは、携帯電話、PHS、携帯情報端末（PDA）、プリンタ等のデジタル情報機器等で実現される。
【００１８】
ネットワーク140は、典型的には、インターネットであるが、有線/無線を問わず、公衆回線(アナログ回線、ISDN等)やLAN、WAN、無線LAN等のデータ送受信可能な回線であれば、どのような構成でもよい。XMLプロトコルの下位レイヤーの通信プロトコルは、例えば、TCP/IP等を採用することができる。
【００１９】
なお、本実施形態では、メッセージ送信装置、メッセージ受信装置が、それぞれ1つずつ存在する場合について説明するが、それぞれ複数存在しても構わない。
【００２０】
送信装置100、受信装置120には、メッセージに添付するバイナリデータを保存するための外部記憶装置110, 130がそれぞれ接続されている。本実施形態では、バイナリデータはファイルとして説明するが、メモリ上に展開されたデータであってもよいし、ネットワークを経由したWebサーバ、ストレージサーバ上にあってもよい。また、外部記憶装置110, 130はそれぞれ送信装置100、受信装置120の構成に含まれてもよい。
【００２１】
メッセージ送信装置100は、ネットワーク140を経由し、XML形式のアプリケーションデータおよびそこからリンク参照されているバイナリファイルの送信要求を行なう送信側アプリケーション101と、送信側アプリケーション101からの要求により、アプリケーションデータから、マルチパートMIMEなどマルチパート形式の送信メッセージを生成するメッセージ生成部102と、メッセージ生成部102から呼び出され、アプリケーションデータ内の記述を検索し、添付が必要なファイルを読み込む、添付ファイル読み込み部103と、メッセージ生成部102で作成したメッセージをネットワーク140経由してメッセージ受信装置120に送信するメッセージ送信部104と、XML文書に含まれるリンク参照記述を検索するリンク参照検索部105から構成される。
【００２２】
受信装置120は、ネットワーク140を経由し、送信装置100から受信したマルチパートMIMEなどのマルチパート形式のメッセージを受信するメッセージ受信部124と、メッセージ受信部122が受信したメッセージを解析して複数のパートに分解するメッセージ解析部122と、メッセージ解析部122からの通信に基づいてバイナリデータのパートを外部記憶装置130に保存する添付ファイル書き出し部123と、メッセージ解析部によってメッセージから取り出されたアプリケーションデータを渡す先である受信側アプリケーション121から構成される。
【００２３】
これらの各構成は情報処理装置の動作を制御するプログラムとして実現されるものとするが、もちろん専用のハードウェア装置によって実現してもよい。
【００２４】
(情報処理装置の構成)
次に、本実施形態の情報処理システムを構成する情報処理装置の概略について説明する。図10は、送信装置100の機器構成の一例を示すブロック図である。上述した情報処理装置である受信装置120も同様或いは同等のハードウェア構成を採用することができる。
【００２５】
図10において、1000はＣＰＵであり、後述するハードディスク装置(HD)1005に格納されているアプリケーションプログラム、オペレーティングシステム(OS)や制御プログラム等を実行し、RAM1002にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００２６】
1001はROMであり、内部には基本I/Oプログラム等のプログラム等の各種データを記憶する。1002は各種データを一時記憶するためのRAMであり、CPU1000の主メモリ、ワークエリア等として機能する。
【００２７】
1003は記録媒体へのアクセスを実現するための外部記憶ドライブであり、メディア(記録媒体)1004に記憶されたプログラム等を本コンピュータシステムにロードすることができる。尚、メディア1004には、例えば、フレキシブルディスク(FD)、CD-ROM、CD-R、CD-RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等が含まれる。
【００２８】
1005は外部記憶装置であり、本実施形態では大容量メモリとして機能するHDを用いている。HD1005には、アプリケーションプログラム、OS、制御プログラム、関連プログラム等が格納される。尚、外部記憶装置110、130はHD1005によって実現してもよいし、SAN(Storage Area Network)等において提供される外部ストレージとして実現してもよい。
【００２９】
1006は指示入力装置であり、キーボードやポインティングデバイス（マウス等）、タッチパネル等がこれに相当する。指示入力装置1006を用いて、ユーザは、送信装置100に対して、装置を制御するコマンド等を入力指示する。
【００３０】
1007はディスプレイであり、指示入力装置1006から入力されたコマンドや、それに対する送信装置100の応答出力等を表示したりするものである。
【００３１】
1009はシステムバスであり、情報処理装置内のデータの流れを司るものである。1008はインターフェイス（以下、I/Fという）であり、このI/F1008を介して外部装置とのデータのやり取りを行う。
【００３２】
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００３３】
本実施形態では、メディア1004から本実施形態に係るプログラム及び関連データを直接RAM1002にロードして実行させる例を示すが、これ以外にも、例えば、本実施形態に係るプログラムを動作させる度に、既にプログラムがインストールされているHD1005からRAM1002にロードするようにしてもよい。また、本実施形態に係るプログラムをROM1001に記録しておき、これをメモリマップの一部をなすように構成し、直接CPU1000で実行することも可能である。
【００３４】
また、本実施形態では、説明の便宜のため、送信装置100、受信装置120をそれぞれ1つの情報処理装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。
【００３５】
(メッセージ生成・送信処理)
次に図2、図4〜図7を参照して、本実施形態において送信装置100がメッセージを生成・送信する処理について説明する。図2は送信装置100がメッセージを生成・送信する処理の流れを示すフローチャートである。
【００３６】
まず、ステップS201において、送信側アプリケーション101は、受信装置120上の受信側アプリケーション121に送信したいXML文書を、メッセージ生成部102に指定する。図4は、受信アプリケーション121に送信するXML文書を例示的に示した図である。図4に示すように、このXML文書は外部ファイルを参照する箇所を含んでいる(401、402)。尚、401、402で参照されているファイルは外部記憶装置110に記憶されているものとする。
【００３７】
次に、ステップS202において、送信対象となるXML文書(図4)を指定されたメッセージ生成部102は、このXML文書を識別するためのコンテンツIDを生成する。ここでは、コンテンツIDとして"body.xml"を生成したものとする。
【００３８】
次に、ステップS203において、メッセージ生成部102は、このコンテンツID"body.xml"を使用して、図5で示すようなSOAPなどXMLプロトコルの形式のメッセージを生成する。図5は、図4のXML文書を元に作成したSOAP形式のメッセージを例示的に示した図である。図5で示すように、送信側アプリケーション101が送信対象と指定したXML文書は、このパート中、コンテンツIDで記述したリンク参照(501)として表現されており、直接このパートに記述しない。
【００３９】
また、図5で示すように、メッセージ生成部102は、XMLプロトコルの形式のメッセージを生成する際、このXML文書を受信装置120で解析する際の制御情報をユーザの指示入力に基づいて追加することができるように制御する。図5では、XMLプロトコルとしてSOAPを使用し、制御情報であるアカウント情報(＜a:account...＞〜＜/a:account＞)502を、SOAPヘッダ(＜SOAP-ENV:Header...＞〜＜/SOAP-ENV:Header＞)内に記述した例が示されている。図5に例示したアカウント情報には、アカウント情報の管理するサーバ装置を識別するURL("http://sample/message/account")503、ユーザ名"user001"、パスワード"abcxyz4"が記述されている。尚、制御情報の記述内容はこのような内容に限られるわけではなく、受信装置120がそれに基づいて所定の処理を行うことができる情報ならばどのようなものでも構わない。
【００４０】
本実施形態に対応する情報処理装置(送信装置100)は、このような情報をユーザが簡単に指示入力することができるようなソフトウェア・インタフェースを提供する。例えば、テキストエディタや、選択形式の入力ツール、送信装置100が制御情報を自動生成するためのルール設定ツール等を提供する。尚、アカウント情報502中の503に含まれる"http://sample/message/account"は、本実施形態においては、送信装置100から直接メッセージを受信し、制御情報に基づいて処理を行うとともにXML文書等に基づいて処理を行う受信装置120のURL(Uniform Resource Locator)を示している。
【００４１】
次に、ステップS204において、メッセージ生成部102は、生成したXMLプロトコルの形式のメッセージにMIMEヘッダ(パートのID705等を含む)、境界文字列等を付加し、MIMEマルチパート形式のメッセージの最初のパートとしてメッセージ送信部104に対し送信要求を行なう。メッセージ送信部104は、他の構成要素(例えば、メッセージ生成部102、リンク参照検索部104等)と同期して、或いは、非同期に、送信要求のなされたMIMEマルチパート形式のメッセージを受信装置120へ送信する処理を行う。
【００４２】
次に、ステップS205〜S212において、送信対象であるXML文書を検索し、リンク参照の記述を抽出し、生成したコンテンツIDへの参照に置き換え、リンク参照先として記述されていたファイルをマルチパート形式の次のパートとして送信する処理を行う。
【００４３】
まず、ステップS205において、メッセージ生成部102は、リンク参照検索部105に対して、送信対象であるXML文書(図4)の先頭から文書に含まれる要素を順に参照し、リンク参照の記述を検索するように制御する。
【００４４】
次に、ステップS206において、リンク参照検索部105はXML文書に含まれる次の要素を検索する。S206が初めて評価される時は、文書の先頭の要素を検索する。
【００４５】
次に、ステップS207において、ステップS206で検索した要素が、XML文書の最後の要素であるか否かを判定する。最後の要素であるならば(ステップS207でYES)ステップS213へ進み、最後の要素でないならば(ステップS207でNO)ステップS208へ進む。
【００４６】
ステップS208においては、ステップS206で検索した要素の中にリンク参照の記述(例えば、図４の href="image1.jpg", href="image2.jpg" 等)が存在するか否かを判定する。存在する場合(ステップS208でYES)はステップS209へ進み、存在しない場合(ステップS208でNO)はステップS206へ戻る。ここでは、リンク参照 href="image1.jpg" が含まれる401を評価し、ステップS209へ進む場合について説明する。
【００４７】
ステップS209において、メッセージ生成部102は、ステップS208において検索したリンク参照の記述について、そのリンク参照先のファイルに対応するIDを生成する。ここでは、リンク参照 href="image1.jpg" の参照先ファイルのIDとして "image1.jpg" を生成するものとする。
【００４８】
次に、ステップS210において、メッセージ生成部102は、XML文書内の、現在参照している要素について、その要素に含まれるリンク参照先の記述をステップS209で生成したIDを用いて変更する。例えば、図4の401の記述を図6の601のように変更する。
【００４９】
次に、ステップS211において、メッセージ生成部102は、添付ファイル読み込み部103に対して、リンク参照先のファイル（例えば、"image1.jpg"）を外部記憶装置110から読み込むように指示する。添付ファイル読み込み部103は、メッセージ生成部102からの指示に基づいて要求されたファイルを外部記憶装置110から読み込み、メッセージ生成部102へ渡す。
【００５０】
次に、ステップS212において、メッセージ生成部102は、読み込んだファイルのバイナリーデータにMIMEヘッダ(ステップS209で生成したID708、710等を含む)、境界文字列等を付加し、MIMEマルチパート形式の次のパートとしてメッセージ送信部104に送信要求する。メッセージ送信部104は、他の構成要素(例えば、メッセージ生成部102、リンク参照検索部104等)とは非同期に、送信要求のなされたMIMEマルチパート形式のメッセージを受信装置120へ送信する処理を行う。そして、ステップS206へ戻る。
【００５１】
ステップS206〜S212の処理をXML文書の先頭から最後までについて行うことにより、XML文書に含まれるリンク参照の記述はメッセージ生成部の生成するIDで置き換えられることになる。例えば、図4の記述は図6のように修正される。また、XML文書で参照されているファイルはそれぞれ別個のMIMEのパートとして受信装置120へ送出制御される。
【００５２】
全てのリンク参照先の置き換えと送信要求が終わった場合(ステップS207でYES)、ステップS213において、メッセージ生成部102は、送信対象であるXML文書のリンク参照先をコンテンツIDで置き換えたXML文書（図6）に、MIMEヘッダ(ステップS202で生成したID712等を含む)、境界文字列等を付加し、マルチパート形式の最後のパートとして、メッセージ送信部104に送信要求する。メッセージ送信部104は、送信要求のなされたMIMEマルチパート形式のメッセージを受信装置120へ送信する処理を行う。
【００５３】
図4に例示したXML文書をステップS201〜S213の処理によって送信制御した場合における、メッセージ送信部104に送信要求されたマルチパート形式のメッセージの全体を図7に示す。図7に示すように、受信装置120に送出制御されたメッセージは、XML文書への参照707が含まれる最初のパート701、バイナリーデータ709、710がそれぞれ含まれるパート702、703、バイナリーデータへの参照713が含まれるXML文書のパート704の順に構成される。各パートには、それぞれのパートのID705、708、710、712が含まれる。
【００５４】
(メッセージ受信処理)
次に図3、図7を参照して、本実施形態において受信装置120がメッセージが受信・解析する処理について説明する。図3は受信装置120がメッセージが受信・解析する処理の流れを示すフローチャートである。
【００５５】
まず、ステップS301において、メッセージ受信部124は、送信装置100から送られてきたメッセージの到着したことをメッセージ解析部122に通知する。
【００５６】
次に、ステップS302において、メッセージ解析部122は、メッセージ受信部121に対して最初のパートの受信要求を行なう。メッセージ受信部121は、MIMEメッセージの最初のパートを受信すると、そのデータをメッセージ解析部122に渡す。
【００５７】
次に、ステップS303において、最初のパートを受信したメッセージ解析部122は、パート内に含まれているSOAP等のXMLプロトコルの形式のメッセージを解析し、その内容に基づいて所定の処理を行う。なお、図7に示すように、最初のパートには、受信側アプリケーションに渡すXML文書自体は含まれず、コンテンツIDを使ったリンク参照(＜Include href=”cid:body.xml”/＞)の記述707があるのみであり、この時点でXML文書は解析されない。一方、このXML文書を扱うための制御情報についてはこの時点で解析される。図7では、この時点で解析される制御情報の例として、SOAPヘッダ(＜SOAP-ENV:Header...＞〜＜/SOAP-ENV:Header＞)内のアカウント情報(＜a:account...＞〜＜/a:account＞)706が示されており、受信装置120はこの内容に基づいて、例えば、ユーザ認証等の処理を行う。尚、SOAPボディの中身(図7の例では707で示す部分)の評価はXML文書の含まれるパート(図7の例では704)を受信した後に行う。
【００５８】
次に、ステップS304において、メッセージ解析部122は、上記制御情報(706で例示したもの)を解析し所定の処理を実行する際に、その記述方法や記述内容等により何か問題や異常が発生したか否かを判定する。これは、例えば、図7の例では、706に示された認証情報が正しいか否かを判定することによって行ってもよい。或いは、例えば、制御情報に基づく処理において異常を検知するようにして行ってもよい。或いは、例えば、制御情報が、整形式(well-formed)であるか、DTD(Document Type Definition)やXML Schema等のスキーマに適合しているか等を検査することにより行ってもよい。何らかの問題が発生した場合(ステップS304でYES)はステップS309へ進み、メッセージ受信部124が、それ以降のパートに格納されたデータを外部記憶装置に保存することなく破棄し、エラー処理を行なって処理を終了するように制御する。問題が発生しなかった場合(ステップS304でNO)はステップS305へ進む。
【００５９】
ステップS305において、メッセージ解析部122は、メッセージ受信部124に対して、マルチパート形式であるメッセージの次のパートを受信要求する。メッセージ受信部121は、MIMEメッセージの次のパートを受信すると、そのデータをメッセージ解析部122に渡す。
【００６０】
次にステップS306において、メッセージ解析部は、ステップS305で受け取ったパートのコンテンツIDが、最初のパートからリンク参照されているもの(図7の例では"body.xml"707)であるか否かを判定する。最初のパートからリンク参照されている場合(ステップS306でYES)はステップS308へ進み、リンク参照されていない場合(ステップS306でNO)はステップS307へ進む。ここで、リンク参照されている場合それはXML文書を含むパートであり、そうでない場合はバイナリーデータを含むパートである。
【００６１】
ステップS307において、メッセージ解析部122は、このパートは添付されたバイナリデータが格納されていると判断し、添付ファイル書き出し部123を使って、受信側の外部記憶装置130にファイルとして保存するように制御する。
【００６２】
一方、ステップS308において、次のパートのコンテンツIDが、最初のパートからリンク参照されていた場合(ステップS306でYES)、メッセージ解析部122は、このパートは、送信装置100上の送信側アプリケーション101が、送信対象として指定したXML文書が格納されているパートであると判断し、このXML文書を受信側アプリケーション121(上位処理)に渡す。この時点で受信側アプリケーション121はXML文書と添付ファイルに基づいて所定の処理を行うことができる。そして処理を終了する。
【００６３】
以上のように、テキスト形式のメッセージにファイルを添付して送受信する状況において、送信装置100は、送信する情報を、添付ファイルと、添付ファイルを参照する情報と、それ以外の制御情報を含む情報とに分け、制御情報を含む情報、添付ファイルを参照する情報、添付ファイルの順に送信し、受信装置120では、まず制御情報を評価してそれ以降の情報を受信するか否かを決定する。このような仕組みにより、受信装置120は、メッセージを受信する際、参照先バイナリーデータをディスクやメモリなどに無用に展開することを防ぐことができ、記憶装置のリソースを無駄に使用しないようにすることが可能となる。即ち、受信装置120は、最小限の容量を持つ記憶装置を備えていればよい。
【００６４】
＜＜第2実施形態＞＞
第1実施形態においては、制御情報に基づいて処理を行う装置と、XML文書等に基づいて処理を行う装置と、送信装置100から直接メッセージを受信する装置とが同一の装置(受信装置120)である場合について述べたが、これらがそれぞれ互いに異なる装置となるように構成してもよい。
【００６５】
本実施形態ではこのような構成の一例として、受信装置が受信したメッセージに含まれる制御情報に基づいて所定の処理を行い、さらにXML文書等を他の装置に転送する構成について説明する。
【００６６】
(システム構成)
図8を参照して、第2の実施形態であるシステムの構成例を説明する。図8は、本実施形態における情報処理システムの構成例を示したブロック図である。
【００６７】
本実施形態は、第1実施形態の構成においてメッセージ送信装置(以下、送信装置と呼ぶ)800から送信されたメッセージが、メッセージ受信装置A(以下、受信装置Aと呼ぶ)820をメッセージ中継装置として経由し、ネットワーク840で接続された最終宛て先であるメッセージ受信装置B850(以下、受信装置Bと呼ぶ)に転送される場合がある点で第1実施形態と異なる構成となっている。受信装置A820は、メッセージを受信するだけではなく、受信したメッセージを受信装置B850に転送する場合もあるため、第1実施形態の受信装置120の構成に加え、メッセージ送信部825が追加されている。なお、送信装置800と受信装置B850との間には中継装置として動作する受信装置A820が複数存在していてもよい。送信装置800、受信装置B850の機能構成はそれぞれ図1の送信装置100、受信装置120と同様である。また、送信装置800、受信装置A820、受信装置B850は、第1実施形態と同様の情報処理装置であり、その構成は図10で例示するように第1実施形態におけるそれと同様である。
【００６８】
(メッセージ受信・中継処理)
次に、図9、図7を参照して、本実施形態においてメッセージ中継装置として動作する受信装置A820上でのメッセージの処理の流れを説明する。図9は受信装置A820がメッセージが受信・解析する処理の流れを示すフローチャートである。尚、送信装置800の動作は第1実施形態における送信装置100と同様である。
【００６９】
まず、ステップS901において、メッセージ受信部824は、送信装置800から送られてきたメッセージの到着したことをメッセージ解析部822に通知する。
【００７０】
次に、ステップS902において、メッセージ解析部822は、メッセージ受信部821に対して最初のパートの受信要求を行なう。メッセージ受信部821は、MIMEメッセージの最初のパートを受信すると、そのデータをメッセージ解析部822に渡す。
【００７１】
次に、ステップS903において、最初のパートを受信したメッセージ解析部822は、パート内に含まれているSOAP等のXMLプロトコルの形式のメッセージを解析し、その内容に基づいて所定の処理を行う。なお、図7に示すように、最初のパートには、受信側アプリケーションに渡すXML文書自体は含まれず、コンテンツIDを使ったリンク参照(＜Include href=”cid:body.xml”/＞)の記述707があるのみであり、この時点でXML文書は解析されない。一方、このXML文書を扱うための制御情報についてはこの時点で解析される。図7では、この時点で解析される制御情報の例として、SOAPヘッダ(＜SOAP-ENV:Header...＞〜＜/SOAP-ENV:Header＞)内のアカウント情報(＜a:account...＞〜＜/a:account＞)706が示されており、受信装置A820はこの内容に基づいて、例えば、ユーザ認証等の処理を行う。
【００７２】
次に、ステップS904において、XML文書等の最終宛先が自装置であるか否かを判定する。本実施形態においては、図7の714に含まれる"http://sample/message/account"が最終宛先のURLを示しており、これは必ずしも受信装置A820を示しているとは限らないとする。最終宛先が自装置である場合(ステップS904でNO)は送られてくるメッセージの一時的な格納を継続しつつステップS905へ進む。そうでない場合(ステップS904でYES)は、ステップS909へ進み、送られてくるメッセージの一時的な格納を中断し、最終宛先の装置(本実施形態では受信装置B850)にメッセージを転送するように制御する。尚、転送するメッセージは、全てのパート(例えば、図7における、701, 702, 703, 704)としてもよいし、或いは、2番目以降のパート(図7における、702, 703, 704)としてもよい。どの部分を転送するかは制御情報に記述されており、受信装置A820はその内容に基づいて転送を制御するものとする。転送処理が終了したら処理を終了する。
【００７３】
なお、ステップS904において、第1実施形態の構成において、図3のステップS304で行ったように、制御情報の異常判定を行いその結果に基づいて処理を継続するか否かを決定するようにしてもよい。
【００７４】
ステップS905において、メッセージ解析部822は、メッセージ受信部824に対して、マルチパート形式であるメッセージの次のパートを受信要求する。メッセージ受信部821は、MIMEメッセージの次のパートを受信すると、そのデータをメッセージ解析部822に渡す。
【００７５】
次にステップS906において、メッセージ解析部は、ステップS905で受け取ったパートのコンテンツIDが、最初のパートからリンク参照されているもの(図7の例では"body.xml"707)であるか否かを判定する。最初のパートからリンク参照されている場合(ステップS906でYES)はステップS908へ進み、リンク参照されていない場合(ステップS906でNO)はステップS907へ進む。ここで、リンク参照されている場合それはXML文書を含むパートであり、そうでない場合はバイナリーデータを含むパートである。
【００７６】
ステップS907において、メッセージ解析部822は、このパートは添付されたバイナリデータが格納されていると判断し、添付ファイル書き出し部823を使って、受信側の外部記憶装置130にファイルとして保存するように制御する。
【００７７】
一方、ステップS908において、次のパートのコンテンツIDが、最初のパートからリンク参照されていた場合(ステップS906でYES)、メッセージ解析部822は、このパートは、送信装置800上の送信側アプリケーション801が、送信対象として指定したXML文書が格納されているパートであると判断し、このXML文書を受信側アプリケーション821に渡す。この時点で受信側アプリケーション821はXML文書と添付ファイルに基づいて所定の処理を行うことができる。そして処理を終了する。
【００７８】
以上のように、本実施形態において、受信装置A820は、制御情報に基づいて所定の処理を行った後、XML文書等の最終宛先を判定し、それが自装置でないならば、送られてくる情報の一時的な格納を直ちに中断し、最終宛先の装置への転送を開始する。これにより、受信装置A820は、メッセージの一部に基づいて所定の処理を行える一方、参照先バイナリーデータをディスクやメモリなどに無用に展開することを防ぐことができ、記憶装置のリソースを無駄に使用しないようにすることが可能となる。即ち、受信装置A820は、最小限の容量を持つ記憶装置を備えていればよい。
【００７９】
以上、制御情報に基づいて処理を行う装置と、XML文書等に基づいて処理を行う装置と、送信装置から直接メッセージを受信する装置とが同一の装置ではない構成の一例として、受信装置が受信したメッセージに含まれる制御情報に基づいて所定の処理を行い、さらにXML文書等を他の装置に転送する構成について述べたが、本発明に係る実施形態はこれに限られるわけではない。例えば、制御情報には、XML文書等に基づいて処理を行う装置の識別情報と、制御情報に基づいて処理を行う１以上の装置の識別情報と、装置毎に定義された所定の情報とを含めるようにし、メッセージを受け取った装置はその装置に対して記述された情報に基づいて所定の処理を行うとともに、XML文書やバイナリーデータ等を識別情報で識別される装置に転送し、制御情報に含まれる識別情報で識別される各装置に対してそれぞれ所定の情報を送信して所定の処理を行わせるような構成にしてもよい。或いは、XML文書等に基づいて処理を行う装置の識別情報を制御情報に含めるようにし、メッセージを受け取った装置は制御情報の内容に基づいて所定の処理を行うとともに、XML文書やバイナリーデータ等を識別情報で識別される装置に転送するような構成にしてもよい。或いは、制御情報に基づいて処理を行う１以上の装置の識別情報と、装置毎に定義された所定の情報とを制御情報に含めるようにし、メッセージを受け取った装置は、XML文書やバイナリーデータ等に基づいて所定の処理を行うとともに、制御情報に含まれる識別情報で識別される各装置に対して、それぞれ所定の情報を送信し所定の処理を行わせるような構成にしてもよい。このような構成を適用することで、受信装置が必要とする記憶装置の容量を最小限に抑えつつ、複雑な処理を装置に行わせることができる。
【００８０】
＜＜その他の実施形態＞＞
以上、本発明の実施形態例について詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００８１】
尚、本発明は、前述した実施形態の機能を実現するプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００８２】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含む。
【００８３】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【００８４】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００８５】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００８６】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。  また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００８７】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００８８】
【図１】第1実施形態における情報処理システムの構成例を示したブロック図である。
【図２】第1、第2実施形態において、送信装置がメッセージを生成・送信する処理の流れを示すフローチャートである。
【図３】第1実施形態において、受信装置がメッセージが受信・解析する処理の流れを示すフローチャートである。
【図４】第1、第2実施形態におけるXML文書を例示的に示した図である。
【図５】第1、第2実施形態における、XML文書を元に作成したSOAP形式のメッセージを例示的に示した図である。
【図６】第1、第2実施形態における、修正されたXML文書を例示的に示した図である。
【図７】第1、第2実施形態における、送信要求されたマルチパート形式のメッセージの全体を例示的に示した図である。
【図８】第2実施形態における情報処理システムの構成例を示したブロック図である。
【図９】第2実施形態において、受信装置がメッセージが受信・解析する処理の流れを示すフローチャートである。
【図１０】第1、第2実施形態における、情報処理装置の機器構成の一例を示すブロック図である。
【図１】
2006277343.tif 000003
【図２】
2006277343.tif 000004
【図３】
2006277343.tif 000005
【図４】
2006277343.tif 000006
【図５】
2006277343.tif 000007
【図６】
2006277343.tif 000008
【図７】
2006277343.tif 000009
【図８】
2006277343.tif 000010
【図９】
2006277343.tif 000011
【図１０】
2006277343.tif 000012