(57)【要約】【課題】  構造化文書の検証処理が一つにサービスに集中することなく、構造化文書の検証処理の負荷を軽減する。【解決手段】  サービスシステム２は、構造化文書に対して所定の処理を行うサービス処理装置２１と、構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報に基づいてサービス処理装置２１による処理後の構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する妥当性検証部２１０と、妥当性検証部２１０による検証結果に基づいて構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成し、該検証済み情報を妥当性検証部２１０で検証処理の対象となった構造化文書に対して付与する検証済み情報生成部２１３とを有する。【選択図】          図１
2007052747.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報に基づいて構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する検証部と、
前記検証部による検証結果に基づいて前記構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成し、該生成した検証済み情報を前記検証部で検証処理の対象となった構造化文書に対して付加する付加部とを有する構造化文書処理装置。
【請求項２】
前記構造化文書に対する改変を検知するための情報と前記文書スキーマに対する改変を検知するための情報とを計算する計算部をさらに有し、
前記付加部は、前記構造化文書に対する改変を検知するための情報および前記文書スキーマに対する改変を検知するための情報を前記検証済み情報に含めることを特徴とする請求項１に記載の構造化文書処理装置。
【請求項３】
前記付加部は、前記検証済み情報を前記構造化文書をラッピングする情報に含めることを特徴とする請求項１に記載の構造化文書処理装置。
【請求項４】
前記構造化文書はＸＭＬを用いて表現され、
前記ラッピングする情報はＳＯＡＰを用いて表現されており、
前記検証された構造化文書はＳＯＡＰボディに存在し、
前記検証済み情報はＳＯＡＰヘッダに含まれることを特徴とする請求項３に記載の構造化文書処理装置。
【請求項５】
前記検証部による検証処理の分担の単位は、文書単位及び要素単位の一方であることを特徴とする請求項１に記載の構造化文書処理装置。
【請求項６】
前記検証部の処理負荷を監視する監視部と、
前記検証部の処理負荷に応じて前記分担相手との検証処理の分担を調整する調整部とをさらに有することを特徴とする請求項１から請求項５のいずれか一項に記載の構造化文書処理装置。
【請求項７】
検証後の構造化文書に対して所定の処理を行う処理部と、
前記処理部の処理負荷を監視する監視部と、
前記処理部の処理負荷に応じて前記分担相手との検証処理の分担を調整する調整部とをさらに有することを特徴とする請求項１から請求項５のいずれか一項に記載の構造化文書処理装置。
【請求項８】
前記分担方法に関する情報を記憶する記憶部をさらに有し、
前記調整部は、前記処理負荷に応じて前記記憶部に記憶された分担方法に関する情報中の分担条件を書き換えることにより前記分担相手との検証処理の分担を調整することを特徴とする請求項６又は請求項７に記載の構造化文書処理装置。
【請求項９】
前記分担相手の検証処理の分担が前記分担方法に従っているかを監視する分担実行監視部と、
前記分担相手の検証処理の分担が前記分担方法に従っていない場合に前記分担相手に通知する通知部とをさらに有することを特徴とする請求項１から請求項８のいずれか一項に記載の構造化文書処理装置。
【請求項１０】
前記分担実行監視部は、前記検証済み情報の有無により前記分担相手の検証処理の分担が前記分担方法に従っているかを判断することを特徴とする請求項９に記載の構造化文書処理装置。
【請求項１１】
前記分担実行監視部は、所定の処理部で発生する処理エラーに基づいて前記分担相手の検証処理の分担が前記分担方法に従っているかを判断することを特徴とする請求項９に記載の構造化文書処理装置。
【請求項１２】
前記分担実行監視部は、前記分担対象となる部分以外の部分に対する検証結果と前記検証済み情報とを比較することにより前記分担相手の検証処理の分担が分担方法に従っているかを判断することを特徴とする請求項９に記載の構造化文書処理装置。
【請求項１３】
前記構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報に基づいて構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する検証ステップと、
前記検証結果に基づいて前記構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成する生成ステップと、
前記検証済み情報を前記検証処理の対象となった構造化文書に対して付加する付加ステップとを有する構造化文書処理方法。
【請求項１４】
前記構造化文書に対する改変を検知するための情報を計算するステップと、
前記文書スキーマに対する改変を検知するための情報を計算するステップと、
前記構造化文書に対する改変を検知するための情報および前記文書スキーマに対する改変を検知するための情報を前記構造化文書に付加するステップとを有することを特徴とする請求項１３に記載の構造化文書処理方法。
【請求項１５】
前記構造化文書に対する改変を検知するための情報に基づいて前記構造化文書に対する改変を検知するステップと、
前記文書スキーマに対する改変を検知するための情報に基づいて前記文書スキーマの改変を検知するステップと、
前記構造化文書及び前記文書スキーマの改変が検知されない場合、前記検証済み情報に含まれる検証結果を用い、前記構造化文書および前記文書スキーマの改変結果が検知された場合は前記構造化文書に対する検証を実施して前記検証済み情報を書き換えるステップとをさらに有する請求項１４に記載の構造化文書処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（eXtensible Markup Language）やＳＧＭＬ（Standard Generalized Markup Language）といった構造化文書において、文書が取りうる構造と内容とを文法的に規定するスキーマに対して、ある文書が適合しているかどうかを検証する構造化文書検証装置および構造化文書検証方法に関する。
【背景技術】
【０００２】
構造化文書の検証処理は、ウェブサービスなどのように、文書をサービスの入出力データとして用いる場合には必須の処理となるが、携帯電話などの低計算能力デバイスにとっては負荷が大きい処理である。そこで、例えば特許文献１に開示されるように、計算能力不足などで検証処理できない文書を受信した場合には、他のサービスに検証処理を委託するという技術が提案されている。
【特許文献１】特開２００４−３０６５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来技術では、他のサービスへの丸投げ状態となり、そのサービスに負荷が集中するという問題があった。また、そのサービスから得られる検証結果は、通信過程で事故または故意により改変される場合があるが、従来技術ではその対処がない。検証結果が信頼できるものでなければ、適切な処理の分担や問題が生じたときのリカバリが難しくなる。
【０００４】
そこで、本発明は、上記問題点に鑑みてなされたもので、構造化文書の検証処理が一つにサービスに集中することなく、構造化文書の検証処理の負荷を軽減できる構造化文書処理装置および構造化文書処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の構造化文書処理装置は、構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報に基づいて構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する検証部と、前記検証部による検証結果に基づいて前記構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成し、該生成した検証済み情報を前記検証部で検証処理の対象となった構造化文書に対して付加する付加部とを有する。本発明によれば、複数のサービスで構造化文書の検証処理を分担することができるため、一つのサービスに構造化文書の検証処理の負荷が集中しないようにできる。これにより低能力デバイスへ文書を送る側が文書を検証でき、受信側の構造化文書の検証処理の負荷を軽減できる。
【０００６】
本発明の構造化文書検証装置は、前記構造化文書に対する改変を検知するための情報と前記文書スキーマに対する改変を検知するための情報とを計算する計算部をさらに有し、前記付加部は、前記構造化文書に対する改変を検知するための情報および前記文書スキーマに対する改変を検知するための情報を前記検証済み情報に含める。本発明によれば、通信される検証結果の改変を検知できるため、検証が信頼できる。このため、適切な処理の分担、問題が生じたときのリカバリが容易である。
【０００７】
前記付加部は、前記検証済み情報を前記構造化文書をラッピングする情報に含めるとよい。本発明の構造化文書処理装置において、前記構造化文書はＸＭＬを用いて表現され、前記ラッピングする情報はＳＯＡＰを用いて表現されており、前記検証された構造化文書はＳＯＡＰボディに存在し、前記検証済み情報はＳＯＡＰヘッダに含まれることを特徴とする。前記検証部による検証処理の分担の単位は、文書単位及び要素単位の一方であるとよい。本発明によれば、分担対象となる部分が文書単位の場合は、分担する条件を分担割合による表現することができる。また、分担対象となる部分が要素単位の場合は、分担する情報を要素単位に表現することができる。
【０００８】
本発明の構造化文書処理装置は、前記検証部の処理負荷を監視する監視部と、前記検証部の処理負荷に応じて前記分担相手との検証処理の分担を調整する調整部とをさらに有する。本発明によれば、検証処理の負荷に合わせて分担相手との間で検証処理の分担の調整を行うことができる。本発明の構造化文書処理装置は、検証後の構造化文書に対して所定の処理を行う処理部と、前記処理部の処理負荷を監視する監視部と、前記処理部の処理負荷に応じて前記分担相手との検証処理の分担を調整する調整部とをさらに有する。本発明によれば、サービス処理装置の状況に合わせて検証処理の分担を調整できる。
【０００９】
本発明の構造化文書処理装置は、前記分担方法に関する情報を記憶する記憶部をさらに有し、前記調整部は、前記処理負荷に応じて前記記憶部に記憶された分担方法に関する情報中の分担条件を書き換えることにより前記分担相手との検証処理の分担を調整するとよい。本発明によれば、構造化文書検証装置の稼働中に前記分担条件に応じて分担を変化させることができる。本発明の構造化文書処理装置は、前記分担相手の検証処理の分担が前記分担方法に従っているかを監視する分担実行監視部と、前記分担相手の検証処理の分担が前記分担方法に従っていない場合に前記分担相手に通知する通知部とをさらに有するとよい。本発明によれば、分担相手に分担方法に従って検証処理を行うよう注意を促すことができる。
【００１０】
前記分担実行監視部は、前記検証済み情報の有無により前記分担相手の検証処理の分担が前記分担方法に従っているかを判断するとよい。前記分担実行監視部は、所定の処理部で発生する処理エラーに基づいて前記分担相手の検証処理の分担が前記分担方法に従っているかを判断するとよい。前記分担実行監視部は、前記分担対象となる部分以外の部分に対する検証結果と前記検証済み情報とを比較することにより前記分担相手の検証処理の分担が分担方法に従っているかを判断するとよい。
【００１１】
本発明の構造化文書処理装置は、前記構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報に基づいて構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する検証ステップと、前記検証結果に基づいて前記構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成する生成ステップと、前記検証済み情報を前記検証処理の対象となった構造化文書に対して付加する付加ステップとを有する。本発明によれば、複数のサービスで構造化文書の検証処理を分担することができるため、一つのサービスに構造化文書の検証処理の負荷が集中しないようにできる。これにより低能力デバイスへ文書を送る側が文書を検証でき、受信側の構造化文書の検証処理の負荷を軽減できる。
【００１２】
本発明の構造化文書処理装置は、前記構造化文書に対する改変を検知するための情報を計算するステップと、前記文書スキーマに対する改変を検知するための情報を計算するステップと、前記構造化文書に対する改変を検知するための情報および前記文書スキーマに対する改変を検知するための情報を前記構造化文書に付加するステップとを有する。本発明によれば、通信される検証結果の改変を検知できるため、検証が信頼できる。このため、適切な処理の分担、問題が生じたときのリカバリが容易である。
【００１３】
本発明の構造化文書処理装置は、前記構造化文書に対する改変を検知するための情報に基づいて前記構造化文書に対する改変を検知するステップと、前記文書スキーマに対する改変を検知するための情報に基づいて前記文書スキーマの改変を検知するステップと、前記構造化文書及び前記文書スキーマの改変が検知されない場合、前記検証済み情報に含まれる検証結果を用い、前記構造化文書および前記文書スキーマの改変結果が検知された場合は前記構造化文書に対する検証を実施して前記検証済み情報を書き換えるステップとをさらに有する。
【発明の効果】
【００１４】
本発明によれば、構造化文書の検証処理が一つにサービスに集中することなく、構造化文書の検証処理の負荷を軽減できる構造化文書処理装置および構造化文書処理方法を提供できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための最良の形態について説明する。図１は、本発明の第１の実施形態に係わるシステムの構成を示す図である。システム１は、それぞれ構造化文書処理装置として機能する複数のサービスシステム２〜ｎを備えている。サービスに対する要求と応答は、パブリックネットワーク６を通じて、他のサービスシステムとのメッセージ交換によって行われる。各サービスシステム２〜ｎは同じ構成であるため、ここではサービスシステム２について具体的に説明する。
【００１６】
サービスシステム２は、処理部としてのサービス処理装置２１、メッセージ受信装置２２、メッセージ送信装置２３、メッセージ記憶装置２４、入出力装置２５、文書記憶装置２６、スキーマ文書記憶装置２７及び文書検証装置２８を備えている。サービスシステム２は例えばＣＰＵ（Central Processing Unit）、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)及びハードディスク装置等を備えたサーバにより構成され、サービス処理装置２１及び文書検証装置２８の機能は所定のプログラムが実行されることにより実現される。
【００１７】
サービス処理装置２１は、文書スキーマ検証後の構造化文書データに対して所定の処理を行うものである。ここで構造化文書は構造情報と文字列情報を含む。メッセージ受信装置２２は、他のサービスシステム３〜ｎからのメッセージを受信する処理を行う。メッセージ送信装置２３は、他のサービスシステム３〜ｎに対してメッセージを送信する処理を行う。メッセージ記憶装置２４は、例えばハードディスク装置で構成され、メッセージ受信装置２２で受信したメッセージやメッセージ送信装置２３から送信するメッセージを記憶する。入出力装置２５は、例えばマウスやキーボード等の入力装置及びディスプレイ装置などの出力装置により構成されている。利用者はこの入出力装置２５を用いてサービスシステム２に対する各種設定や内容を閲覧することができる。
【００１８】
文書記憶装置２６は、例えばハードディスク装置で構成され、文書検証装置２８で検証対象となる構造化文書を記憶する。ここで、用いられる構造化文書はＸＭＬ文書である。スキーマ文書記憶装置２７は、例えばハードディスク装置により構成され、検証に用いるスキーマ文書を一意に識別する名前空間ＵＲＩ（Uniform Resource Identifiers）と対応付けて記憶している。本実施形態ではスキーマ言語としてW3C XML Schemaを用いている。文書検証装置２８は、ある構造化文書が、ある文書スキーマに適合するかを検証するものである。文書検証装置２８は、このサービスシステム２の一部をなしている。本実施形態では、文書検証装置２８の検証の分担の単位は文書ごとである。
【００１９】
文書検証装置２８は、検証部としての妥当性検証部２１０、計算部としてのダイジェスト値計算部２１１、検証分担方法記憶部２１２、付与部としての検証済み情報生成部２１３、検証済み情報確認部２１４及び分担実行部２１５を備えている。妥当性検証部２１０は、後述する構造化文書の検証処理の分担相手との間で規定された分担方法に関する情報（以下、「検証処理の分担方法に関する情報」）に基づいてサービス処理装置２１による処理後の構造化文書のうち分担対象となる部分が文書スキーマに適合するかを検証する機能を持つ。妥当性検証部２１０による検証では、あるスキーマ文書に規定されたスキーマに対して、ある構造化文書が妥当であるかどうかが検証される。
【００２０】
ダイジェスト値計算部２１１は、構造化文書に対する改変を検知するための情報となる文書のダイジェスト値、および文書スキーマに対する改変を検知するための情報となる文書スキーマのダイジェスト値を計算する機能を持つ。ここで、文書及び文書スキーマのダイジェスト値とは、通信されるデータが正しいことを証明するために、元のデータから特徴的なパターンを生成し、これを数値化したもので、例えばハッシュ値がある。ハッシュ値は、ハッシュ関数によって、コンテンツを表すデータを撹乱し、一定の長さ(例えば１２８ビット)の値に圧縮したものである。文書のダイジェスト値及び文書スキーマのダイジェスト値は、後述するように、検証の分担相手となる他のサービスシステムが検証した結果をそのまま利用しても問題ないかどうかを確認するために用いられる。
【００２１】
ここで、スキーマ文書は変更される頻度が少なく、変更された場合でも同じスキーマ文書を上書きするのではなく、別のスキーマ文書として保存され識別されることが多い。したがって、スキーマ文書のダイジェスト値については毎回計算するよりも、結果を再利用する方が効率的な場合が多い。このため、本実施形態では、ダイジェスト値計算部２１１は、スキーマ文書のダイジェスト値を一度計算した場合には、その結果は計算した日時データとともにスキーマ文書記憶装置２７に記憶しておく。また、ダイジェスト値計算部２１１は、スキーマ文書記憶装置２７でのスキーマ文書の更新日時と計算した日時データとを比較し、更新日時の方が古い場合、スキーマ文書記憶装置２７に記憶されたダイジェスト値が用いられる。
【００２２】
検証分担方法記憶部２１２は、例えばハードディスク装置により構成され、上述した検証処理の分担方法に関する情報を記憶している。図２は、検証処理の分担方法に関する情報の一例を示す図である。本実施形態では、検証処理の分担方法に関する情報は、図２に模式的に示されるような、表形式のデータで検証分担方法記憶部２１２に格納されている。この検証処理の分担方法に関する情報は、例えば入出力装置２５を用いて検証分担方法記憶部２１２にデータ入力されている。この表形式データでは、各行が分担に関する一つの取り決めをそれぞれ示している。
【００２３】
表形式データの第１列は、検証の分担相手となるサービスシステムを一意に示すための識別子データであり、本実施形態ではＳＯＡＰメッセージ交換で相手を呼び出す際に使うＵＲＬ（Uniform Resource Locator）を用いている。第２列は、第１列で示した相手と分担して検証する際に用いるスキーマ文書を一意に示すための識別子データであり、本実施形態ではスキーマ文書の名前空間を示すＵＲＩを用いている。第３列は、検証対象となる文書はこのサービスシステム２が送信するものか、あるいは受信したものかを示すデータであり、本実施形態ではサービスシステム２が検証対象となる文書を送信の場合を「Ｓ」、検証対象となる文書を受信の場合を「Ｒ」で表現している。
【００２４】
第４列は検証の分担条件としての分担割合を示すデータであり、本実施形態では０以上１以下の数値を用いて表現している。上述したように検証処理の分担の単位は、文書単位であるため、検証の分担割合の数値の意味は送受信される文書数に対して、この文書検証装置２８が検証する文書数の割合を示している。
【００２５】
図２の第１行が示す意味は、第１列に示された相手から受信する文書で、第２列で示されるスキーマ文書を用いた検証処理については、文書数の８０％をサービスシステム２の文書検証装置２８が実地する、ということを表現している。また、図２の第２行が示す意味は、第１列に示された相手へ送信する文書で、第２列で示されるスキーマ文書を用いた検証処理については、このサービスシステム２の文書検証装置２８がすべて実施する、ということを表現している。また、図２の第３行が示す意味は、第１列に示された相手から受信する文書で、第２列で示されるスキーマ文書を用いた検証処理については、文書数の半分をこのサービスシステム２の文書検証装置２８が実施する、ということを表現している。
【００２６】
検証済み情報生成部２１３は、妥当性検証部２１０による検証結果に基づいて構造化文書のうち分担対象となる部分が検証済みであることを示す検証済み情報を生成し、この検証済み情報を検証対象となった構造化文書に対して付加する機能を持つ。本実施形態では、検証済み情報生成部２１３は、検証済み情報を、複合型の文書要素として表現し、妥当性検証の結果を示す文書要素（検証の結果）と、検証した文書のダイジェスト値を示す文書要素（検証した文書に対する改変を検知するための情報）と、検証に用いたスキーマ文書のダイジェスト値を示す文書要素（検証に用いたスキーマ文書に対する改変を検知するための情報）とを検証済み情報に含める。なお、検証済み情報生成部２１３は、妥当性検証部２１０による検証結果だけを検証済み情報に含めるようにしてもよい。検証済み情報生成部２１３は、検証済み情報を構造化文書をラッピングする情報に含めることで、検証済み情報を検証対象となった文書に対応付けて付与する。
【００２７】
この検証済み情報の一例は、図３でvs:ValidationSharingというタグ名の文書要素であり、ボディ部３１の文書に対してヘッダ部３２に付与されている。図３に示す例では、構造化文書はＸＭＬを用いて表現され、ラッピングする情報はＳＯＡＰを用いて表現されており、検証された構造化文書はＳＯＡＰボディ（ボディ部３１）に存在し、検証済み情報はＳＯＡＰヘッダ（ヘッダ部３２）に含まれている。なお、ダイジェスト値は、ダイジェスト値計算部２１１で計算したものを用いる。
【００２８】
検証済み情報確認部２１４は、ヘッダ部３２の検証済み情報に含まれるダイジェスト値と、新たにダイジェスト値計算部２１１で計算した文書および文書スキーマのダイジェスト値とを比較し、これらが一致する場合は他のサービスシステムによって検証されたことを確認する機能を持つ。
【００２９】
分担実行部２１５は、他のサービスシステム３〜ｎとメッセージ交換する文書に対して、その文書の検証を他のサービスシステム３〜ｎの文書検証装置と分担して実行する機能を持つ。この分担実行部２１５は、他のサービスシステム３〜ｎへメッセージを送信する前に呼び出される。図４は、メッセージ送信時における分担実行部２１５の処理のフローチャートである。
【００３０】
分担実行部２１５は、メッセージ送信される文書に対して、まず、検証分担方法記憶部２１２の検証処理の分担方法に関する情報中にメッセージ送信相手の識別子とその文書を検証するためのスキーマ文書の識別子が含まれるかを調べる（ステップＳ１０１）。分担実行部２１５は、検証分担方法記憶部２１２の検証処理の分担方法に関する情報中にメッセージ送信相手の識別子とその文書を検証するためのスキーマ文書の識別子が含まれる場合、分担方法に関する情報中の分担割合に応じてこの文書を分担するかを決める（ステップＳ１０２）。決め方は、本実施形態では乱数を用いている。具体的には、０以上１以下の数値をランダムに発生させる乱数発生器を用い、この乱数発生器により分担の候補となる構造化文書ごとに数値を発生させる。そして、乱数発生器により得られた数値が分担割合以下の場合は構造化文書の検証を分担し、分担割合以下の場合でない場合、検証を行わない。
【００３１】
検証を分担する場合には、妥当性検証部２１０は、文書の妥当性検証を行い（ステップＳ１０３）、次にダイジェスト値計算部２１１は文書および文書スキーマのダイジェスト値を計算する（ステップＳ１０４）。そして、検証済み情報生成部２１３は、妥当性検証の結果を示す文書要素と、検証した文書のダイジェスト値を示す文書要素と、検証に用いたスキーマ文書のダイジェスト値を示す文書要素とを含む検証済み情報を生成し、この文書を送信する際のメッセージエンベロープのヘッダ部に生成された検証済み情報を付加する（ステップＳ１０５）。図３は、検証済み情報が付加されたメッセージエンベロープの一例を示す図である。メッセージエンベロープはメッセージ記憶装置２４に記憶されている。これらの処理が終わった後に、メッセージ送信装置２３は、メッセージをメッセージ記憶装置２４から読み出して次のサービスシステム３〜ｎに送信する。
【００３２】
また、分担実行部２１５は、サービス処理装置２１が処理の入力として用いるメッセージが受信された際に呼び出される。図５は、メッセージ受信時における分担実行部２１５での処理フローチャートである。まず、分担実行部２１５は、受信されたメッセージに含まれる文書に対して、そのメッセージに含まれる検証済み情報が含まれるかどうかを判定する（ステップＳ２０１）。分担実行部２１５は、メッセージに検証済み情報が含まれる場合、受信した文書と検証に用いるスキーマ文書とをダイジェスト値計算部２１１に渡し、その文書および検証に用いたスキーマ文書のダイジェスト値を計算させる（ステップＳ２０３）。
【００３３】
分担実行部２１５は、検証済み情報に含まれるダイジェスト値と、新たにダイジェスト値計算部２１１で計算した文書および文書スキーマのダイジェスト値と検証済み情報確認部２１４に比較させる（ステップＳ２０４）。分担実行部２１５は、検証済み情報確認部２１４で確認された場合は、他のサービスシステム３〜ｎによって検証の分担がなされたことがわかるので、この文書の検証は行わないと判定し、検証済み情報に含まれる検証結果をその文書の検証結果として返す（ステップＳ２０５）。分担実行部２１５は、メッセージに検証済み情報が含まれない場合（ステップＳ２０１で「いいえ」の場合）や、検証済み情報確認部２１４で確認されなかった場合（ステップＳ２０４で「いいえ」の場合）は、この文書の検証が必要と判定し、妥当性検証部２１０を用いて検証してその結果を返す（ステップＳ２０２）。このように、分担実行部２１５は、検証済み情報を用いて構造化文書及び文書スキーマに対する改変を検知し、構造化文書及び文書スキーマの改変が検知されない場合は検証済み情報に含まれる検証結果を用い、一方、構造化文書及び文書スキーマの改変結果が検知された場合は構造化文書に対する検証を妥当性検証部２１０に実施させて、その結果により検証済み情報を書き換えることで、検証処理を複数のサービスシステムで分担できる。
【００３４】
第１の実施形態によれば、複数のサービスシステムで構造化文書の検証処理を分担することができるため、一つのサービスに構造化文書の検証処理の負荷が集中しないようにできる。これにより低能力デバイスへ文書を送る側が文書を検証でき、受信側の構造化文書の検証処理の負荷を軽減できる。
【００３５】
次に、本発明の第２の実施形態について説明する。第１の実施形態では、検証の分担単位が文書ごとであったが、第２の実施形態では、検証の分担単位を文書要素とした場合の例である。なお、分担する文書要素が複合型の場合は、それに含まれる文書要素も分担対象となる。第２の実施形態に係るシステムの構成は第１実施形態と同様であるため、図１を用いて説明する。以下、第１の実施形態との違いを述べながら本実施形態を説明する。
【００３６】
検証分担方法記憶部２１２は、第１の実施形態と同様に、検証処理の分担方法に関する情報を記憶する。図６は本発明の第２の実施形態に係る検証処理の分担方法に関する情報の例を示す図である。図２に示したように、第１の実施形態では、表形式データの第４列は分担条件が分担割合であった。第２実施形態では、図６に示すように、表形式データの第４列は分担条件が分担対象となる文書要素である。分担対象となる文書要素の表現方法は、スキーマ文書に対するＸＰａｔｈ式で特定の文書要素を指し示すものである。図７は、検証済み情報が付加されたメッセージエンベロープの一例を示す図である。
【００３７】
検証済み情報の一例は、図７でvs2:ValidationSharing2というタグ名の文書要素であり、ボディ部１３１の文書に対してヘッダ部１３２に付与されている。図７に示す例では、vs2:SchemaDigestというタグ名の文書要素が文書スキーマのダイジェスト値をその内容として持つ。文書要素vs2:ValidElmは分担して検証した部分の情報を含む。vs2:ValidElmの下位要素であるvs2:ElmResultは、前記分担して検証した部分の検証結果をその内容として持つ。同じくvs2:ValidElmの下位要素であるElmDigestは、前記分担して検証した部分のダイジェスト値をその内容として持つ。また、同じくvs2:ValidElmの下位要素であるvs2:ElmPosは、前記分担して検証した部分を指し示すＸＰａｔｈ式をその内容として持つ。
【００３８】
検証済み情報生成部２１３は、この形式の検証済み情報を生成し、検証済み確認部はこの形式の検証済み情報を用いて確認する。妥当性検証部２１０は、特定の文書要素の検証をスキップし、それ以外の部分についての検証結果を返す機能を持つ。分担実行部２１５は、どの要素をスキップするかを指定する。分担実行部５の機能は第１の実施形態と同様であるが、処理フローに違いがある。
【００３９】
図８は、本発明の第２の実施形態において、メッセージが送信される際の分担実行部２１５の処理フローチャートである。まず、分担実行部２１５は、送信するメッセージに検証を分担する文書要素が含まれるかどうかを判断する（ステップＳ３０１）。そして、分担実行部２１５は、送信するメッセージに検証を分担する文書要素が含まれている場合、分担する文書要素を検証する（ステップＳ３０２）。分担実行部２１５は、分担する文書要素および文書スキーマのダイジェスト値をダイジェスト値計算部２１１に計算させる（ステップＳ３０３）。そして、分担実行部２１５は、検証済み情報として、文書要素と検証結果とダイジェスト値をメッセージのヘッダ部に追加し（ステップＳ３０４）、処理を終了する。
【００４０】
図９は、本発明の第２の実施形態において、メッセージが受信された際の分担実行部２１５の処理フローチャートである。まず、分担実行部２１５は、メッセージに検証済み情報が含まれるかどうかを判断する（ステップＳ４０１）。そして、分担実行部２１５は、メッセージに検証済み情報が含まれる場合、メッセージに検証済み情報に含まれる文書要素は分担外かどうかを判断する（ステップＳ４０３）。分担実行部２１５は、メッセージに検証済み情報に含まれる文書要素が分担外の場合、文書要素および文書スキーマのダイジェスト値をダイジェスト値計算部２１１に計算させる（ステップＳ４０４）。次に、分担実行部２１５は、検証済み情報のダイジェスト値と計算結果がそれぞれ一致するかどうかを判断する（ステップＳ４０５）。
【００４１】
そして、分担実行部２１５は、検証済み情報のダイジェスト値と計算結果がそれぞれ一致する場合、分担する文書要素のみを検証する（ステップＳ４０６）。次に、分担実行部２１５は、検証済み情報に含まれる検証結果と、分担部分の検証結果との論理積を、文書全体の検証結果として返す（ステップＳ４０７）。分担実行部２１５は、メッセージに検証済み情報が含まれない場合（ステップＳ４０１で「いいえ」）、検証済み情報に含まれる文書要素が分担外でない場合（ステップＳ４０３で「いいえ」）、検証済み情報のダイジェスト値と計算結果がそれぞれ一致しない場合（ステップＳ４０５で「いいえ」）には、この文書の検証が必要と判定し、妥当性検証部２１０を用いて検証して結果を返す（ステップＳ４０２）。
【００４２】
次に、本発明の第３の実施形態について説明する。図１０は、本発明の第３の実施形態に係わるシステムの構成を示す図である。図１１は、本発明の第３の実施形態に係る分担調整部の動作フローチャートである。本発明の第３の実施形態に係るサービスシステム３０１は、第１の実施形態に加えて、文書検証装置３２８に、妥当性検証の処理負荷に応じて分担割合を動的に調整する機能を持たせるために監視部としての処理負荷監視部２１６及び調整部としての分担調整部２１７を追加したものである。
【００４３】
処理負荷監視部２１６は、妥当性検証部２１０の処理負荷を監視し、負荷が高い場合に分担調整部２１７へ負荷が高いことを通知する機能と、分担調整部２１７から負荷が低いかどうかの問い合わせに答える機能を持つ。ここで、処理負荷監視部２１６での負荷の高さと低さは、例えばＣＰＵ占有率などを指標として、入出力装置２５を介して人手で設定される。分担調整部２１７は、処理負荷監視部２１６の通知をトリガーとして、妥当性検証部２１０の処理負荷に応じて他のサービスシステム３〜ｎの文書検証装置と検証処理の分担を調整する機能を持つ。分担調整部２１７は、処理負荷監視部２１６から前記通知を受け取ると（ステップＳ５０１）、まず、検証分担方法記憶部２１２中のデータから分担割合が０ではないものを選び出す（ステップＳ５０２）。次に、分担調整部２１７は、選んだ分担割合を一定量減らすことができるかを、メッセージ交換によって分担相手先のサービスシステム３〜ｎに問い合わせる（ステップＳ５０３）。なお、本実施形態では分担調整部２１７が分担割合を半減させるようにしているが、この量は処理負荷や処理能力に応じて決めて構わない。
【００４４】
分担調整部２１７は、他のサービスシステム３〜ｎからの分担割合を一定量減らすという問い合わせ結果がＯＫの場合、選んだ分担割合を例えば半分とするように、検証分担方法記憶部２１２中の分担条件としての分担割合を書き換える（ステップＳ５０４）ことにより分担相手との検証処理の分担を調整する。分担実行部２１５は、書き換え後の検証分担方法記憶部２１２の内容に応じて分担処理を実行する（ステップＳ５０５）。
【００４５】
また、分担調整部２１７は、他のサービスシステム３〜ｎから分担割合の変更の問い合わせを受信した際は、妥当性検証部２１０の処理負荷が低い場合には、相手が減らそうとしている一定量を、検証分担方法記憶部２１２中のデータに上乗せし、ＯＫを相手先のサービスシステム３〜ｎへ返す。一方、分担調製部２１７は、妥当性検証部２１０の処理負荷が低くない場合は、問い合わせに対して相手先のサービスシステム３〜ｎにＮＯを返す。
【００４６】
なお、本実施形態の変形例としては、処理負荷の監視の対象を文書検証装置の妥当性検証部以外の機能部や、同じサービスシステムに属する他の装置とすることができる。この場合、処理負荷監視部２１６は、サービス処理装置２１による処理負荷を監視し、分担調整部２１７は、サービス処理装置２１による処理負荷に応じて他のサービスシステム３〜ｎの文書検証装置と検証処理の分担を調整する。例えば、サービス処理装置の負荷が高い場合に、文書検証装置が並行して処理を進められるならば、先読みやキャッシュと同様の効果を狙って検証の分担を増やす、といったことが可能である。また、本実施形態では、分担割合を装置が自由に決定したが、検証分担方法記憶部２１２中のデータとして分担の上限および下限を設定し、この範囲内で分担割合を変えるようにしても良い。
なお、この設定は入出力装置２５を介して人手で行われる。
【００４７】
上記第３実施形態では、分担調整部２１７が分担割合を変える例について説明したが、分担調整部２１７が検証する文書要素を増減させるようにしてもよい。この場合、分担変更の問い合わせをするメッセージ交換には分担変更したい文書要素を指し示すＸＰａｔｈ式が含まれ、検証分担方法記憶部２１２中のデータでそのＸＰａｔｈ式を追加・削除することで分担変更が行われる。
【００４８】
次に本発明の第４の実施形態について説明する。図１２は、本発明の第４の実施形態に係わるシステムの構成を示す図である。第４の実施形態に係るサービスシステム４０１は、第１の実施形態に加えて、他のサービスシステム３〜ｎによる分担が決められた分担方法に従っているかを監視する機能を持たせるために、通知部としても機能する分担実行監視部２１８を追加したものである。分担実行監視部２１８は、分担相手の検証処理の分担が検証処理の分担方法に従っているかを監視する機能と、分担相手の検証処理の分担が検証処理の分担方法に従っていない場合に分担相手に通知する機能を有する。
【００４９】
分担実行監視部２１８は、例えばＳＯＡＰエンベロープのヘッダ部に含まれる検証済み情報の有無により分担相手の検証処理の分担が検証処理の分担方法に従っているかを判断することができる。すなわち分担実行監視部２１８は、ＳＯＡＰエンベロープのヘッダ部に検証済み情報が有る場合には、分担相手の検証処理の分担が検証処理の分担方法に従っていると判断し、一方ＳＯＡＰエンベロープのヘッダ部に検証済み情報が無い場合には、分担相手の検証処理の分担が検証処理の分担方法に従っていないと判断する。また、分担実行監視部２１８は、文書の妥当性がないことで生じるサービス処理装置２１の処理エラーに基づいて分担相手の検証処理の分担が検証処理の分担方法に従っているかを判断してもよい。さらに、分担実行監視部２１８は、分担対象となる部分以外の部分に対する検証結果とＳＯＡＰエンベロープのヘッダ部に含まれる検証済み情報とを比較して、両者が同じ場合には、分担相手の検証処理の分担が分担方法に従っていると判断し、両者が違う場合には、分担相手の検証処理の分担が分担方法にしたがっていないと判断する。
【００５０】
分担実行監視部２１８は、監視の結果、検証分担方法記憶部２１２中の分担割合から逸脱している場合、警告メッセージを同じサービスシステムの入出力装置２５に表示させるとともに、分担相手先のサービスシステム３〜ｎに通知する。本実施形態によれば、分担相手に分担方法に従って検証処理を行うよう注意を促すことができる。
【００５１】
上記各実施形態によれば、複数のサービスで検証処理の分担を可能とし、通信される検証結果の改変を検出できる。従来技術に示される例でも、本発明では低能力デバイスへ文書を送る側が文書を検証でき、受信側の負荷が減る、あるいはなくなる。また、上記実施形態では、構造化文書の例としてＸＭＬ文書を用いる例について説明したが本発明はこれに限定されることなく、例えばＳＧＭＬ文書などの構造化文書に対しても適用することができる。
【００５２】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１の実施形態に係わるシステムの構成を示す図である。
【図２】本発明の第１の実施形態に係る検証処理の分担方法に関する情報の一例を示す図である。
【図３】検証済み情報が付加されたメッセージエンベロープの一例を示す図である。
【図４】メッセージ送信時における分担実行部の処理のフローチャートである。
【図５】メッセージ受信時における分担実行部での処理フローチャートである。
【図６】本発明の第２の実施形態に係る検証処理の分担方法に関する情報の例を示す図である。
【図７】検証済み情報が付加されたメッセージエンベロープの一例を示す図である。
【図８】本発明の第２の実施形態において、メッセージが送信される際の分担実行部２１５の処理フローチャートである。
【図９】本発明の第２の実施形態において、メッセージが受信された際の分担実行部２１５の処理フローチャートである。
【図１０】本発明の第３の実施形態に係わるシステムの構成を示す図である。
【図１１】本発明の第３の実施形態に係る分担調整部の動作フローチャートである。
【図１２】本発明の第４の実施形態に係わるシステムの構成を示す図である。
【符号の説明】
【００５４】
１  システム
２〜ｎ、３０１、４０１  サービスシステム
２１  サービス処理装置
２２  メッセージ受信装置
２３  メッセージ送信装置
２４  メッセージ記憶装置
２５  入出力装置
２６  文書記憶装置
２７  スキーマ文書記憶装置
２８、３２８、４２８  文書検証装置
２１０  妥当性検証部
２１１  ダイジェスト値算出部
２１２  検証分担方法記憶部
２１３  検証済み情報生成部
２１４  検証済み情報確認部
２１５  分担実行部
２１６  処理負荷監視部
２１７  分担調整部
２１８  分担実行部
【図１】
2007052747.tif 000003
【図２】
2007052747.tif 000004
【図３】
2007052747.tif 000005
【図４】
2007052747.tif 000006
【図５】
2007052747.tif 000007
【図６】
2007052747.tif 000008
【図７】
2007052747.tif 000009
【図８】
2007052747.tif 000010
【図９】
2007052747.tif 000011
【図１０】
2007052747.tif 000012
【図１１】
2007052747.tif 000013
【図１２】
2007052747.tif 000014