(57)【要約】  複合イベント検出／配信システムは、複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送する関連イベント検出ノードと、前記関連イベント検出ノードから前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、生成した該複合イベントを設定内容に従って他のノードへ転送するルートノードと、を有する。
2009107511.tif 000002
【特許請求の範囲】
【請求項１】
複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送する関連イベント検出ノードと、
前記関連イベント検出ノードから前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、生成した該複合イベントを設定内容に従って他のノードへ転送するルートノードと、
を有する複合イベント検出／配信システム。
【請求項２】
前記ルートノードは、生成した前記複合イベントをサブスクライバーノードへ配信する請求項１に記載の複合イベント検出／配信システム。
【請求項３】
前記ルートノードは、受信した前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項１又は請求項２記載の複合イベント検出／配信システム。
【請求項４】
イベントを生成し、生成した前記イベントを送信するパブリッシャーノードと、
前記パブリッシャーノードから前記イベントを受信し、自身が復号イベントを前記ルートノートから受信することを要求する受信登録要求を前記ルートノードへ送信するサブスクライバーノードと、
を更に有し、
前記ルートノードは、前記サブスクライバーノードから前記受信登録要求を受信し、該受信登録要求に基づいて、生成した前記復号イベントを該サブスクライバーノードへ送信する、請求項１から請求項３のうちのいずれか１項に記載の複合イベント検出／配信システム。
【請求項５】
前記受信登録要求は、複合イベントの検出に関連する複数の関連イベントの種別と、複数の関連イベント間の関係を示す関係式とを含む、請求項請求項４記載の複合イベント検出／配信システム。
【請求項６】
前記ルートノードは、受信した前記受信登録要求に含まれる複数の関連イベントの種別に基づいて、各関連イベントの中継を行っているブローカーノードに対して、自身を前記関連イベント検出ノードとして設定するように要求する設定要求を送信する、請求項５記載の複合イベント検出／配信システム。
【請求項７】
前記ルートノードは、前記関連イベント検出ノードから受信した前記関連イベントを蓄積しておき、蓄積しておいた関連イベントの中から、所定の条件を満たす関連イベントを検索し、検索した関連イベントに基づいて前記複合イベントを生成する、請求項１乃至請求項６のいずれか１項に記載の複合イベント検出／配信システム。
【請求項８】
前記ルートノードは、所定期間毎に蓄積した関連イベントを走査し、予め設定された期間以上蓄積されている関連イベントを削除する、請求項７記載の複合イベント検出／配信システム。
【請求項９】
複数のイベントを複合した複合イベントを受信する受信手段と、
前記受信手段により受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手段と、
前記関連イベント生成手段により生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手段と、
を有するブローカーノード。
【請求項１０】
前記複合イベント配信手段は、前記複合イベントをサブスクライバーノードに配信する、請求項９に記載のブローカーノード。
【請求項１１】
複合イベント生成手段は、前記前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項９又は請求項１０に記載のブローカーノード。
【請求項１２】
複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送し、
前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、
生成した該複合イベントを設定内容に従って他のノードへ転送する、複合イベント検出／配信方法。
【請求項１３】
前記複合イベントをサブスクライバーノードに配信する、請求項１４に記載の複合イベント検出／配信方法。
【請求項１４】
受信した関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項１２又は請求項１３記載の複合イベント検出／配信方法。
【請求項１５】
コンピュータに、
複数のイベントを複合した複合イベントを受信する受信手順、
前記受信手順で受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手順、及び
前記関連イベント生成手順で生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手順、
実行させるための複合イベント検出／配信用プログラム。
【請求項１６】
前記複合イベント配信手順は、前記複合イベントをサブスクライバーノードに配信する手順である、請求項１５記載の複合イベント検出／配信用プログラム。
【請求項１７】
前記複合イベント生成手順は、前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する手順である、請求項１５又は請求項１６記載の複合イベント検出／配信用プログラム。
【請求項１８】
前記複合イベント検出／配信用プログラムは、
コンピュータに、
前記サブスクライバーノードから前記受信登録要求を受信する受信登録要求受信手順を更に実行させるプログラムであって、
前記複合イベント配信手順は、前記受信登録要求受信手順で受信された前記受信登録要求に基づいて、生成した前記復号イベントを該サブスクライバーノードへ送信する手順である、請求項１５乃至請求項１７のいずれか１項に記載の複合イベント検出／配信用プログラム。
【請求項１９】
コンピュータに、
前記受信登録要求受信手順で受信された前記受信登録要求に含まれる複数の関連イベントの種別に基づいて、各関連イベントの中継を行っているブローカーノードに対して、自身を前記関連イベント検出ノードとして設定するように要求する設定要求を送信する設定要求送信手順を更に実行させる、請求項１８に記載の複合イベント検出／配信用プログラム。
【請求項２０】
コンピュータに、
前記関連イベント検出ノードから受信した前記関連イベントを記憶手段に蓄積する手順、及び
前記記憶手段に蓄積しておいた関連イベントの中から、所定の条件を満たす関連イベントを検索し、検索した関連イベントに基づいて前記複合イベントを生成する手順、
を更に事項させる、請求項１５乃至請求項１９のいずれか１項に記載の複合イベント検出／配信用プログラム。
【請求項２１】
コンピュータに、
所定期間毎に関連イベント蓄積手順で蓄積した関連イベントを走査し、予め設定された期間以上蓄積されている関連イベントを削除する手順を更に実行させる、請求項２０記載の複合イベント検出／配信用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ある１つの対象物の状態変化を１つのイベントとして配信するとともに、個々のイベントを組み合わせて複合イベントを生成／検出する技術に関する。また、本発明は、複合イベント検出／配信システムが備えるブローカーノードに関する。
【背景技術】
【０００２】
ハードウェア的なセンサデバイスやＲＦＩＤ等を用いて、実空間の対象物に対するセンシングが行われている。また、ソフトウェアを用いて、コンピュータシステム内の各種ソフトウェアの稼動状況を監視することが行われている。そして、そのようにモニタリングした大量データをマイニング処理することにより、データ集合が意味する状態を把握されるようになってきている。なお、イベントとは、ある対象の状態の変化を意味する。【０００３】
ここで、さらに個々のイベントを組み合わせた複合イベントを検出できるようにすることにより、より高度なイベント配信を実現できるようにすることが望まれる。複合イベントの事例として、例えば、渋滞であることを示す渋滞イベントは、日本道路公団によれば、「時速４０ｋｍ以下で１ｋｍの車列の延長が１５分以上継続したとき」と定義されている。この例では、「イベント１＝車の速度が時速４０ｋｍ以下である。」、「イベント２＝１ｋｍの車列が存在している。」及び「イベント３＝イベント１とイベント２との状態が１５分以上、同時発生し続けている。」という３つの単イベントが同時に成立していることが想定される。【０００４】
従って、渋滞発生に関しては、「複合イベント＝（イベント１）ＡＮＤ（イベント２）ＡＮＤ（イベント３）」の論理式が満足された時に渋滞イベントが発生する。【０００５】
複合イベント処理を実現する関連技術の事例が、例えば、特開２００４−１６４１０７号公報（以下、「特許文献１」という）に記載されている。特許文献１に記載された事例では、サーバ集約型のイベント処理が示されており、ネットワークエッジに設置された解析端末がイベントを検出し、その検出したイベントを管理端末に集約し集中処理するモデルが示されている。また、例えば、特開２００６−３０９７０１号公報（以下、「特許文献２」という）には、サーバ集約型の他の例として、処理サーバがルール設定に従ってＲＦＩＤタグからのイベントを全て検出したらアプリケーションに通知するように構成された負荷分散振り分けシステムが記載されている。【０００６】
また、複合イベント処理を実現する関連技術の別な事例が、Peter  R.  Pietzuch,  ”A  scalable  event-based  middleware”  June  2004,  pp135-153（以下、「非特許文献１」という）に記載されている。非特許文献１に記載された方式では、システムは、複合イベント検出プロセスに、マイグレーション機能をもたせることによって、異なったイベントをプロセスマイグレーションしながら検出している。そのため、非特許文献１に記載された方式では、システムは複合イベントに対応するための機能を具備しているが、ネットワーク負荷が増大するという問題点が存在する。
【発明の開示】
【０００７】
特許文献１や特許文献２に記載されたサーバ集約モデルでは、サーバボトルネックが最大の問題点であり、イベントの多様化によってサーバ負荷が増大してしまう。この問題点の解決策として、サーバを追加したり、処理対象とするイベント種別をサーバ毎に振り分けたりすることが考えられる。しかし、このサーバ集約型の方式では、別々のサーバで処理されるイベントを関連づけて、複合イベントとして処理する手段が存在せず、複合イベントの配信を実現することが難しい。なお、特許文献２には、複数のイベントを検出して通知することが記載されているが、検出した複数のイベントに基づいて複合イベントを生成し配信することは開示されておらず、複合イベントの配信を実現することはできない。
【０００８】
また、非特許文献１に記載されたプロセスマイグレーションを用いて複合イベントを生成して配信するようにすれば、プロセスそのものの全データを移動するため、データ転送量が多いことがデメリットである。すなわち、複合イベントを構成する個々の単イベントの数が増加すれば、それに伴うマイグレーション回数が増加し、結果的にネットワークへの負荷が高くなる。また、複合イベント種別が多くなることも、マイグレーション数を増加させてネットワーク負荷を高くする要因となり問題となる。
【０００９】
そこで、本発明は、上記課題を解決するためになされたものであって、複合イベント種別の増加に対して、複合イベントを検出し配信するノードに対する負荷集中を軽減することができる技術を提供することを目的とする。
【００１０】
本発明の複合イベント検出／配信システムは、複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送する関連イベント検出ノードと、前記関連イベント検出ノードから前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、生成した該複合イベントを設定内容に従って他のノードへ転送するルートノードと、を有する。
【００１１】
本発明のブローカーノードは、複数のイベントを複合した複合イベントを受信する受信手段と、前記受信手段により受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手段と、前記関連イベント生成手段により生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手段と、を有する。
【００１２】
本発明の複合イベント検出／配信方法は、複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送し、前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、生成した該複合イベントを設定内容に従って他のノードへ転送する、方法である。
【００１３】
本発明の複合イベント検出／配信用プログラムは、コンピュータに、複数のイベントを複合した複合イベントを受信する受信手順、前記受信手順で受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手順、及び前記関連イベント生成手順で生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手順、実行させるためのプログラムである。
【００１４】
本発明によれば、複合イベント種別の増加に対して、複合イベントを検出し配信するノードに対する負荷集中を軽減することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明による複合イベント検出／配信システムの全体の構成例を示すブロック図である。
【図２】イベント定義の管理形態を示すデータ構造図である。
【図３】イベント定義面とイベント配信との関係を示す説明図である。
【図４】パブリッシャーノードの構成の一例を示すブロック図である。
【図５】ブローカーノードの構成の一例を示すブロック図である。
【図６】サブスクライバーノードの構成の一例を示すブロック図である。
【図７】複合イベント検出／配信システムにおけるマルチキャストツリー構築及びイベント配信の流れを示す流れ図である。
【図８】ルートノードＲ１からサブスクライバーノードＳ２，Ｓ４，Ｓ５へのマルチキャストツリーの構築の流れを示す説明図である。
【図９】ルートノードＲ２からサブスクライバーノードＳ１へのマルチキャストツリーの構築の流れを示す説明図である。
【図１０】パブリッシャーノードＰ１からサブスクライバーノードＳ２，Ｓ４，Ｓ５にイベント配信を行う際の具体的なイベントのルーティングを示す説明図である。
【図１１】パブリッシャーノードＰ２からサブスクライバーノードＳ１にイベント配信を行う際の具体的なイベントのルーティングを示す説明図である。
【図１２】複合イベント検出／配信システムにおける複合イベントを検出し配信する流れを示す流れ図である。
【図１３】複合イベント用のルートノードの設定方法を示す説明図である。
【図１４】複合イベント登録の内容の例を示す説明図である。
【図１５】関連イベントＡ１の登録内容の例を示す説明図である。
【図１６】関連イベントＢ１の登録内容の例を示す説明図である。
【図１７】複合イベント配信の例を示す説明図である。
【図１８】関連イベントＡ１，Ｂ１の収集、及び複合イベントＣ１の検出の動作を示す説明図である。
【図１９】各ブローカーノードの動作を示す説明図である。
【図２０】複合イベント検出及び配信のためのブローカーノードのルーティングテーブルの例を示す説明図である。
【図２１】複合イベント検出／配信システムの最小の構成例を示す構成図である。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施形態を、図面を参照して説明する。まず、本発明による複合イベント検出／配信システムの概略及び構成を説明する。図１は、本発明による複合イベント検出／配信システムの全体の構成例を示すブロック図である。図１に示すように、複合イベント検出／配信システムは、パブリッシャーノードＰ１，Ｐ２、イベントをルーティングするブローカーノードＢＲ１〜ＢＲ２５、及びイベントを受信するサブスクライバーノードＳ１〜Ｓ５の３種類のノードを含む。また、本実施形態において、ブローカーノードＢＲ１〜ＢＲ２５は、ルートノードとして設定されている場合には、イベント配信処理を行うルートノードとしても機能する。【００１７】
本発明における複合イベント検出／配信システムでは、パブリッシュ（Publish  ）・サブスクライブ（Subscribe  ）型の通信方式を用いることを想定している。このパブリッシュ・サブスクライブ方式では、パブリッシャーノードＰ１，Ｐ２が様々な情報をトピックで分類して公開し、サブスクライバーノードＳ１〜Ｓ５が興味のあるトピックに対して受信登録を行う。この結果、その受信登録した情報がパブリッシャーノードＰ１，Ｐ２からサブスクライバーノードＳ１〜Ｓ５にルーティングされ配信される。本発明では、複合イベント検出／配信システムにおいて、パブリッシャーノードＰ１，Ｐ２が送信する様々なイベントがトピックで分類される。【００１８】
まず、最初に、イベントについて説明する。基本的に各イベントは、個々を区別するためのＩＤをもっている。パブリッシャーノードＰ１，Ｐ２からサブスクライバーノードＳ１〜Ｓ５に配信されるイベントは、そのイベントを識別するためのＩＤを具備している。そして、そのイベントを中継する中間のブローカーノードＢＲ１〜ＢＲ２５は、そのイベントＩＤをキーとしてルーティング処理を行う。【００１９】
パブリッシャーノードＰ１，Ｐ２は、生成する様々なイベントに対して、ハッシュ関数等を用いて、各々にユニークなイベントＩＤを生成する。なお、上記に示したパブリッシャーノードＰ１，Ｐ２がイベントＩＤを生成する方法は、例えば、非特許文献１に記載されている。また、様々なイベントは、そのデータ型によって、基本イベントタイプと継承イベントタイプとに分類される。図２は、イベントのデータ構造を示す説明図である。パブリッシャーノードが生成するイベントは、図２に示す階層型イベント定義面１−１のようなデータ構造を備える。【００２０】
基本イベントタイプ（以下、単に基本タイプともいう）は、必要最低限の情報のみを含む。例えば、基本イベントタイプに含まれる情報は、基本イベントＩＤやイベントの発生時刻等だけに限定される。継承イベントタイプは、基本イベントタイプを拡張したタイプであり、継承関係にある親イベントタイプを識別するためのＩＤや、その親イベントに付属する情報要素を含む。なお、どのような情報要素を含むかは、各々のイベント定義によって異なる。さらに、個々の情報要素は、属性情報として、値（例えば、イベントの作成日時）を含むことも可能である。【００２１】
図２に示すようなイベントの情報フォーマット形式は、例えば、ＸＭＬ形式で表現される。このようなデータ構造化手法によって、多様なイベント定義に対応することができる。さらに、図２に示すように、イベントに応じて、複数のイベント定義面１−１〜１−ｎを用意することにより、より多様性を高めることができる。なお、各イベント定義面１−１〜１−ｎは、それぞれイベントと１対１に対応して定義される。【００２２】
例えば、非特許文献１に記載された関連技術では、図２に示すようなイベント定義面の作成機能を、パブリッシャーノードＰ１，Ｐ２が具備している。つまり、情報発信者側が、発信情報を制御するモデルとなっている。一方、本発明では、複合イベント検出／配信システムにおいて、複合イベントを生成するために、複合イベント定義面を生成するための機能をサブスクライバーノードＳ１〜Ｓ５にも具備する。そのようにすることによって、サブスクライバーノードＳ１〜Ｓ５の希望に応じて、パブリッシャーノードＰ１，Ｐ２によって公開された様々なイベントを自由に組み合わせ、複合化を行うことができるようにしている。【００２３】
イベント定義面とイベント配信との関係であるが、本実施形態では、図３に示すように、個々のイベント定義面に対して、１つのイベント配信ルートノードが用意される。図３に示す複合イベント検出／配信システムの構成では、パブリッシャーノードＰ１，Ｐ２、ブローカーノードＢＲ１〜ＢＲ２５、及びサブスクライバーノードＳ１〜Ｓ５を含む。また、各ブローカーノードＢＲ１〜ＢＲ２５は、ルートノードとしても機能する。なお、本実施形態では、後述するように、ブローカーノードＢＲ１がルートノードＲ１としても機能し、ブローカーノードＢＲ３がルートノードＲ２としても機能する場合を説明する。【００２４】
そして、各々のブローカーノードＢＲ１〜ＢＲ２５は、図３に示すように接続されて、ブローカー型イベント配信網が構成されていると仮定する。なお、図３に示す接続態様は、あくまで一事例であって、ブローカーノードＢＲ１〜ＢＲ２５は、他の接続態様で接続されていてもよい。そして、パブリッシャーノードＰ１，Ｐ２は、各イベント用に用意（設定）されたルートノードＲ１，Ｒ２に対してイベントを配信する。一方、ルートノードＲ１，Ｒ２からサブスクライバーノードＳ１〜Ｓ５には、マルチキャストツリーによってイベントが配信される。【００２５】
パブリッシャーノードＰ１，Ｐ２は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。なお、図１では、２つのパブリッシャーノードＲ１，Ｒ２が示されているが、パブリッシャーノードは２つに限らず、例えば、複合イベント検出／配信システムは、３以上のパブリッシャーノードを含んでもよい。【００２６】
図４は、パブリッシャーノードＰ１，Ｐ２の構成の一例を示すブロック図である。図４に示すように、パブリッシャーノードＰ１，Ｐ２は、イベント生成部１０１、イベント送信部１０２、及びルートノード設定要求部１０３を含む。【００２７】
イベント生成部１０１は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。イベント生成部１０１は、例えば、各種センサ（例えば、速度センサ）やタグ（例えば、ＲＦＩＤタグ）からの検出信号を入力したことに基づいて、イベントを生成する機能を備える。例えば、パブリッシャーノードが道路管理団体が運営するサーバである場合には、イベント生成部１０１は、速度センサからの検出信号に基づいて、「車の速度が時速４０ｋｍ以下である」等のイベントを生成する。また、イベント生成部１０１は、生成したイベントを識別するためのイベントＩＤを生成する機能を備える。【００２８】
イベント送信部１０２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。イベント送信部１０２は、イベント生成部１０１が生成したイベントを、ルートノードＲ１，Ｒ２に送信する機能を備える。【００２９】
ルートノード設定要求部１０３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。ルートノード設定要求部１０３は、イベント生成部１０１が新規のイベントを生成すると、各ブローカーノードＢＲ１〜ＢＲ２５のうちルートノードとして設定するノードを選択する機能を備える。なお、本実施形態では、ルートノード設定要求部１０３は、新規イベントに対するイベントＩＤと数値的に近い値のＩＤ（ノードＩＤ）をもつブローカーノードを選択する。また、ルートノード設定要求部１０３は、選択したブローカーノードに対して、ルートノードとしての設定要求を送信することによって、ルートノードとして設定させる機能を備える。【００３０】
さらに、複合イベント検出／配信システムシステムにおいて、各ブローカーノードＢＲ１〜ＢＲ２５は、複合イベントの検出に関連する関連イベントを検出し、検出した関連イベントを蓄積し、複合イベントを検出する。また、ルートノードＲ１，Ｒ２（正確には、ルートノードとして設定されたブローカーノード）は、他のブローカーノードに対して、関連イベントを検出させる。【００３１】
ブローカーノードＢＲ１〜ＢＲ２５は、具体的には、ＩＰルータ等のネットワーク装置や、プログラムに従って動作しルータ機能を搭載したパーソナルコンピュータ等の情報処理装置によって実現される。ブローカーノードＢＲ１〜ＢＲ２５は、パブリッシャーノードＰ１，Ｐ２とサブスクライバーノードＳ１〜Ｓ５との間でイベントを中継する機能を備える。なお、図１では、２５のブローカーノードＢＲ１〜ＢＲ２５が示されているが、ブローカーノードの数は２５に限られない。【００３２】
図５は、ブローカーノードＢＲ１〜ＢＲ２５の構成の一例を示すブロック図である。図５に示すように、各ブローカーノードＢＲ１〜ＢＲ２５は、イベントルータ３０１、関連イベント処理部３０２、複合イベント検出部３０３、関連イベントストレージ３０４、登録情報管理部３０８、イベントルーティングテーブル３０９、及び関連イベント処理要求部３１０を含む。また、イベントルータ３０１は、イベントメッセージ識別部３０６と、イベントルーティング部３０７とを含む。【００３３】
イベントメッセージ識別部３０６は、パブリッシャーノードＰ１，Ｐ２、サブスクライバーノードＳ１〜Ｓ５、又は他のブローカーノードから受信した情報が、イベントであるか又はメッセージであるかを識別する機能を備える。また、イベントメッセージ識別部３０６は、識別結果に基づいて、イベント又はメッセージをイベントルーティング部３０７又は登録情報管理部３０８に振り分けて出力する機能を備える。【００３４】
イベントルーティング部３０７は、イベントルーティングテーブル３０９の設定内容に従って、イベントやメッセージを、イベントキューを介して、転送先又は送信先のパブリッシャーノードＰ１，Ｐ２、サブスクライバーノードＳ１〜Ｓ５、又は他のブローカーノードに送信する機能を備える。また、当該ブローカーノードの関連イベント処理機能が起動されている場合に、イベントルーティング部３０７は、関連イベント（複合イベントの検出に関連する単イベント）を入力した場合には、その関連イベントを関連イベント処理部３０２に出力する機能を備える。また、当該ブローカーノードが複合イベント検出用のルートノードとして設定されている場合には、イベントルーティング部３０７は、関連イベントを入力した場合には、その関連イベントを複合イベント検出部３０３に出力する機能を備える。【００３５】
登録情報管理部３０８は、イベントメッセージ識別部３０６からのメッセージに基づいて、各種設定を行う機能を備える。例えば、登録情報管理部３０８は、メッセージとして、パブリッシャーノードＰ１，Ｐ２からのルートノード設定要求を入力した場合には、当該ブローカーノードをルートノードに設定する。また、例えば、登録情報管理部３０８は、当該ブローカーノードがルートノードに設定されている場合に、メッセージとして、サブスクライバーノードＳ１〜Ｓ５からの受信登録を入力したときには、そのサブスクライバーノードをイベントの配信先として設定する。また、例えば、登録情報管理部３０８は、メッセージとして、関連イベント処理要求を入力した場合には、関連イベント処理部３０２に対して関連イベント処理機能を起動させる。【００３６】
イベントルーティングテーブル３０９は、具体的には、ブローカーノードが備えるメモリや磁気ディスク装置等の記憶装置に記憶される。イベントルーティングテーブル３０９は、例えば、イベントＩＤに対応付けて、転送先のブローカーノードを示す情報（例えば、ノードＩＤ）を含む。また、イベントルーティングテーブル３０９は、例えば、宛先のパブリッシャーノードＰ１，Ｐ２やサブスクライバーノードＳ１〜Ｓ５に対応付けて、転送先のブローカーノードを示す情報（例えば、ノードＩＤ）を含む。【００３７】
関連イベント処理要求部３１０は、当該ブローカーノードが複合イベント検出用のルートノードに設定されている場合に、検出対象の複合イベントの検出に関連する関連イベントの検出を要求するために、関連イベント処理要求を、他のブローカーノードに対して送信する機能を備える。【００３８】
関連イベント処理部３０２は、複合イベント検出用のルートノードに設定されている他のブローカーノードに対して、検出した関連イベントに所定の処理を施して送信する機能を備える。【００３９】
複合イベント検出部３０３は、当該ブローカーノードが複合イベント検出用のルートノードに設定されている場合に、検出した関連イベントに基づいて複合イベントを検出する機能を備える。また、複合イベント検出部３０３は、検出した複合イベントを、転送先のブローカーノードに送信する機能を備える。【００４０】
関連イベントストレージ３０４は、具体的には、ブローカーノードが備えるメモリや磁気ディスク装置等の記憶装置によって実現される。関連イベントストレージ３０４は、複合イベント検出部３０３によって複合イベントとして検出される前の関連イベントを一時記憶する。【００４１】
サブスクライバーノードＳ１〜Ｓ５は、前述したように、公開される様々なイベントを自由に組み合わせ、複合化を行うために、複合イベント登録情報を送信する。なお、サブスクライバーノードＳ１〜Ｓ５は、例えば、渋滞情報等の各種情報を各ユーザに配信するサービス事業者が運営するサーバである。サブスクライバーノードＳ１〜Ｓ５は、例えば、受信したイベント（複合イベントを含む）に基づいて、渋滞情報等の各種情報を、携帯電話網やインターネット等の通信ネットワークを介して、ユーザの携帯電話機やパーソナルコンピュータ等の端末に配信する。【００４２】
サブスクライバーノードＳ１〜Ｓ５は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。なお、図１では、５つのサブスクライバーノードＳ１〜Ｓ５が示されているが、サブスクライバーノードの数は５に限られない。【００４３】
図６は、サブスクライバーノードＳ１〜Ｓ５の構成の一例を示すブロック図である。図６に示すように、サブスクライバーノードＳ１〜Ｓ５は、イベント受信部２０１、受信登録要求部２０２、複合イベント登録情報生成部２０３、及びルートノード設定要求部２０４を含む。【００４４】
イベント受信部２０１は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。イベント受信部２０１は、各ブローカーノードＢＲ１〜ＢＲ２５を含むブローカー型イベント配信網を介してイベントを受信する機能を備える。【００４５】
受信登録要求部２０２は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。受信登録要求部２０２は、受信を希望するイベントを登録するための受信登録要求を生成し、そのイベントを配信するルートノードに対して受信登録要求を送信する機能を備える。【００４６】
複合イベント登録情報生成部２０３は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵによって実現される。複合イベント登録情報生成部２０３は、受信したい複合イベントを登録するための複合イベント登録情報を生成する機能を備える。【００４７】
ルートノード設定要求部２０４は、具体的には、プログラムに従って動作する情報処理装置のＣＰＵ及びネットワークインタフェース部によって実現される。ルートノード設定要求部２０４は、複合イベントを配信するルートノードに対して、複合イベント登録情報生成部２０３が生成した複合イベント登録情報を送信する機能を備える。【００４８】
なお、本実施形態において、ブローカーノードＢＲ１〜ＢＲ２５を情報処理装置を用いて実現する場合、各ブローカーノードＢＲ１〜ＢＲ２５の記憶装置（図示せず）は、複合イベントを検出し配信するための各種プログラムを記憶している。例えば、各ブローカーノードＢＲ１〜ＢＲ２５の記憶装置は、コンピュータに、複合イベントの検出に関連する関連イベントを検出する関連イベント検出ノードとして設定されているときに、関連イベントを検出すると、検出した関連イベントを、複合イベントの配信処理を行うルートノードとして設定されているブローカーノードに転送する関連イベント転送処理と、ルートノードとして設定されているときに、関連イベント検出ノードとして設定されているブローカーノードから関連イベントを受信すると、受信した関連イベントに基づいて複合イベントを生成する複合イベント生成処理と、生成した複合イベントを設定内容に従って他のノードへ転送する複合イベント配信処理とを実行させるための複合イベント検出／配信用プログラムを記憶している。【００４９】
次に、動作について説明する。以下、具体例を示しながらイベントを配信するためのマルチキャストツリーの構築方法、及びイベント配信方法について説明する。図７は、複合イベント検出／配信システムにおけるマルチキャストツリー構築及びイベント配信の流れを示す流れ図である。図７に示す流れに従って、個々の単イベントに対するイベント配信システムが構築される。【００５０】
本実施形態では、パブリッシャーノードＰ１，Ｐ２、ブローカーノードＢＲ１〜ＢＲ２５、及びサブスクライバーノードＳ１〜Ｓ５は、ソフトウェアプロセスとして動作していると仮定する。また、ブローカーノードＢＲ１上に設定されるルートノードＲ１、及びブローカーノードＢＲ３上に設定されるルートノードＲ２は、ソフトウェアプロセスとして動作していると仮定する。【００５１】
なお、本実施形態では、ルートノードＲ１は、後述するイベントＡ１，Ａ２，Ｂ３のイベント配信処理を行うルートノードであるとする。また、ルートノードＲ２は、後述するイベントＢ１のイベント配信処理を行うルートノードであるとする。【００５２】
また、本実施形態では、一例として、ブローカーノードＢＲ１，ＢＲ３がルートノードとして設定される場合を説明するが、複合イベント検出／配信システムにおいて、いずれのブローカーノードＢＲ１〜ＢＲ２５もルートノードとして動作する機能を搭載している。従って、複合イベント検出／配信システムにおいて、ブローカーノードＢＲ１，ＢＲ３以外のブローカーノードが選択され、ルートノードとして設定されることも可能である。【００５３】
そして、本実施形態における複合イベント検出／配信システムの下位層には、オーバーレイネットワークが存在していると仮定する。なお、オーバーレイネットワークは、例えば、Distributed  Hash  Table（ＤＨＴ）を用いた分散アプリケーションネットワークである。オーバーレイネットワーク上において、各々のノードは、ユニークな  Node  ID（ノードＩＤ）を具備する。そして、このノードＩＤに従って、ルーティングが実行される。【００５４】
まず、パブリッシャーノードＰ１は、新しくイベントを生成すると、新規生成したイベントに対して基本イベントタイプの定義を作成する。パブリッシャーノードＰ１は、新しく基本イベントタイプを定義した時に、Hash（ハッシュ）関数等を用いて、システム上でユニークなイベントＩＤを生成する（ステップＳ１０１）。【００５５】
そして、その生成した基本イベントタイプを複合イベント検出及び配信システムに広告すると、１つのブローカーノードＢＲ１が選択され、このブローカーノードＢＲ１にルートノードＲ１機能が起動される。具体的には、パブリッシャーノードＰ１は、新規生成したイベントに対するルートノードを、複数のブローカーノードＢＲ１〜ＢＲ２５の中から選択する。そして、パブリッシャーノードＰ１は、選択したブローカーノードＢＲ１に対して、ルートノード設定要求を送信する（ステップＳ１０２）。すると、ブローカーノードＢＲ１は、ルートノードとしての機能を起動し、ルートノードＲ１として設定される（ステップＳ１０３）。【００５６】
なお、本実施形態において、このブローカーノードＢＲ１は、例えば、新規イベントＩＤと数値的に近いノードＩＤをもつため、パブリッシャーノードＰ１によって選択されるものとする。なお、ルートノードとして選択するブローカーノードの選択方法は、本実施形態で示した方法に限られない。例えば、パブリッシャーノードＰ１は、現在の処理負荷が最も小さいブローカーノードをルートノードとして選択してもよい。【００５７】
上記の処理が実行されることによって、パブリッシャーノードＰ１とルートノードＲ１との関係が構築される。なお、本実施形態では、新規イベントＩＤと数値的に近いノードＩＤのブローカーノードを選択する等の方法により、ルートノードをランダムに選択することによって、イベントＩＤが分散されてアサインされる。そのようにすることによって、ルートノードにイベントが集約されて、特定のルートノードの負荷が増大してしまうことが防止される。【００５８】
また、ステップＳ１０１〜Ｓ１０３と同様の処理に従って、パブリッシャーノードＰ２は、新規イベントを生成すると、ルートノードとしてブローカーノードＢＲ３を選択し、ブローカーノードＢＲ３上にルートノードＲ２が設定される。【００５９】
次に、ルートノードＲ１，Ｒ２からサブスクライバーノードＳ１〜Ｓ５へのマルチキャストツリーの構築の流れについて説明する。図８は、ルートノードＲ１からサブスクライバーノードＳ２，Ｓ４，Ｓ５へのマルチキャストツリーの構築の流れを示す説明図である。また、図９は、ルートノードＲ２からサブスクライバーノードＳ１へのマルチキャストツリーの構築の流れを示す説明図である。【００６０】
なお、各パブリッシャーノードＰ１，Ｐ２が発信可能なイベントに関する情報（例えば、イベントＩＤ）は、例えば、各パブリッシャーノードＰ１，Ｐ２上に開設されるＷｅｂサイト等を介して公開されているものとする。そして、各サブスクライバーノードＳ１〜Ｓ５は、受信を希望したいイベントのイベントＩＤ等の情報を予め取得可能であるものとする。【００６１】
例えば、サブスクライバーノードＳ５を運営する事業者は、パブリッシャーノードＰ１が発信するイベントＡ１の受信を希望する場合、サブスクライバーノードＳ５を操作して、イベントＡ１に対する受信登録操作を行う。すると、サブスクライバーノードＳ５は、イベントＡ１を受信するための受信登録要求をルートノードＲ１に対して送信する（ステップＳ１０４）。【００６２】
サブスクライバーノードＳ５が送信する受信登録要求には、イベントＡ１の基本イベントタイプを識別するためのイベントＩＤが含まれている。従って、図８に示すように、サブスクライバーノードＳ５とパブリッシャーノードＰ１との中間のブローカーノードＢＲ２５，ＢＲ２０，ＢＲ１５，ＢＲ１４，ＢＲ１３，ＢＲ７，ＢＲ６，ＢＲ１は、この基本イベントタイプのイベントＩＤを確認して、ルートノードＲ１へのルーティングを行う。【００６３】
なお、各ブローカーノードは、宛先に応じていずれのブローカーノードに転送するかを対応付けた情報を予めイベントルーティングテーブル３０９に設定している。例えば、ブローカーノードＢＲ２５は、ルートノードＲ１を宛先とする受信登録要求をサブスクライバーノードＳ５から受信すると、イベントルーティングテーブル３０９の設定内容に基づいて転送先のブローカーノードＢＲ２０を特定し、受信した受信登録要求をブローカーノードＢＲ２０に転送する。すると、ブローカーノードＢＲ２０は、受信した受信登録要求に基づいて、イベントＡ１を受信した場合には、その受信したイベントＡ１をブローカーノードＢＲ２５に転送する旨の設定情報をイベントルーティングテーブル３０９に設定する（ステップＳ１０５）。【００６４】
そして、図８に示すように、上記に示した処理をブローカーノードＢＲ２５，ＢＲ２０，ＢＲ１５，ＢＲ１４，ＢＲ１３，ＢＲ７，ＢＲ６，ＢＲ１がそれぞれ順次実行する。そのようにすることによって、ブローカーノードが、受信登録要求されたイベントＡ１用のエントリをもたない場合には、新たにそのルーティングエントリーが、イベントルーティングテーブル３０９に追加される。【００６５】
上記に示した処理が実行されることによって、パブリッシャーノードＰ１からイベントＡ１が発信されると、ルートノードＲ１によるイベント配信処理によって、サブスクライバーノードＳ５は、ブローカーノードＢＲ１，ＢＲ６，ＢＲ７，ＢＲ１３，ＢＲ１４，ＢＲ１５，ＢＲ２０，ＢＲ２５を介してイベントＡ１を受信可能となる。【００６６】
なお、本実施形態では、一例として、パブリッシャーノードＰ１から、ブローカーノードＢＲ１，ＢＲ６，ＢＲ７，ＢＲ１３，ＢＲ１４，ＢＲ１５，ＢＲ２０，ＢＲ２５の経路を経由して、イベントＡ１がサブスクライバーノードＳ５に配信される場合を説明するが、イベントＡ１の配信経路は、本実施形態で示した経路に限られない。例えば、各ブローカーノードＢＲ１〜ＢＲ２５のイベントルーティングテーブル３０９に設定内容に応じて、異なる経路でイベントＡ１がサブスクライバーノードＳ５に配信されてもよい。このことは、他のイベントＡ２，Ａ３，Ｂ１について設定される配信経路についても同様である。【００６７】
ステップＳ１０４と同様の処理に従って、イベントＡ２の受信を希望する場合には、サブスクライバーノードＳ４は、イベントＡ２を受信するための受信登録要求をルートノードＲ１に対して送信する。そして、図８に示すように、ステップＳ１０５と同様の処理に従って、サブスクライバーノードＳ４とパブリッシャーノードＰ１との間の中間のブローカーノードＢＲ２４，ＢＲ１９，ＢＲ１８，ＢＲ１３は、イベントルーティングテーブル３０９の設定を行う。【００６８】
ただし、サブスクライバーノードＳ４からのイベントＡ２に対する受信登録要求は、ブローカーノードＢＲ１３まで到達すると、その先のブローカーノードＢＲ７，ＢＲ６，ＢＲ１については、既にサブスクライバーノードＳ５からの受信登録要求によりイベントルーティングテーブル３０９が設定済みとなっている。そのため、ブローカーノードＢＲ７，ＢＲ６，ＢＲ１は、新たな設定を行う必要はなく、サブスクライバーノードＳ４からの受信登録要求はＢＲ１３で終端される。【００６９】
上記に示した処理が実行されることによって、パブリッシャーノードＰ１からイベントＡ２が発信されると、ルートノードＲ１によるイベント配信処理によって、サブスクライバーノードＳ４は、ブローカーノードＢＲ１，ＢＲ６，ＢＲ７，ＢＲ１３，ＢＲ１８，ＢＲ１９，ＢＲ２４を介してイベントＡ２を受信可能となる。【００７０】
また、ステップＳ１０４と同様の処理に従って、サブスクライバーノードＳ２がイベントＡ３の受信を希望する場合には、そのサブスクライバーノードＳ２は、イベントＡ３を受信するための受信登録要求をルートノードＲ１に対して送信する。そして、図８に示すように、ステップＳ１０５と同様の処理に従って、サブスクライバーノードＳ２とパブリッシャーノードＰ１との間の中間のブローカーノードＢＲ２２，ＢＲ１７，ＢＲ１２，ＢＲ７は、イベントルーティングテーブル３０９の設定を行う。【００７１】
ただし、サブスクライバーノードＳ２からのイベントＡ３に対する受信登録要求は、ブローカーノードＢＲ７まで到達すると、その先のブローカーノードＢＲ６，ＢＲ１については、既にサブスクライバーノードＳ５からの受信登録要求によりイベントルーティングテーブル３０９が設定済みとなっている。そのため、ブローカーノードＢＲ６，ＢＲ１は、新たな設定を行う必要はなく、サブスクライバーノードＳ２からの受信登録要求はＢＲ７で終端される。【００７２】
上記に示した処理が実行されることによって、パブリッシャーノードＰ１からイベントＡ３が発信されると、ルートノードＲ１によるイベント配信処理によって、サブスクライバーノードＳ２は、ブローカーノードＢＲ１，ＢＲ６，ＢＲ７，ＢＲ１２，ＢＲ１７，ＢＲ２２を介してイベントＡ３を受信可能となる。【００７３】
また、ステップＳ１０４と同様の処理に従って、イベントＢ１の受信を希望する場合には、サブスクライバーノードＳ１は、イベントＢ１を受信するための受信登録要求をルートノードＲ２に対して送信する。そして、図９に示すように、ステップＳ１０５と同様の処理に従って、サブスクライバーノードＳ１とパブリッシャーノードＰ２との中間のブローカーノードＢＲ２１，ＢＲ１６，ＢＲ１２，ＢＲ８，ＢＲ３は、イベントルーティングテーブル３０９の設定を行う。【００７４】
上記に示した処理が実行されることによって、パブリッシャーノードＰ２からイベントＢ１が発信されると、ルートノードＲ２によるイベント配信処理によって、サブスクライバーノードＳ１は、ブローカーノードＢＲ３，ＢＲ８，ＢＲ１２，ＢＲ１６，ＢＲ２１を介してイベントＡ３を受信可能となる。そして、サブスクライバーノードＳ１からブローカーノードＢＲ２１，ＢＲ１６，ＢＲ１２，ＢＲ８，ＢＲ３を経由してルートノードＲ２に、イベントＢ１に関する受信登録要求がルーティングされるとともに、マルチキャストツリーが構築される。【００７５】
次に、イベント配信を行う際の具体的なイベントのルーティングについて説明する。図１０は、パブリッシャーノードＰ１からサブスクライバーノードＳ２，Ｓ４，Ｓ５にイベント配信を行う際の具体的なイベントのルーティングを示す説明図である。また、図１１は、パブリッシャーノードＰ２からサブスクライバーノードＳ１にイベント配信を行う際の具体的なイベントのルーティングを示す説明図である。【００７６】
図１０に示すように、パブリッシャーノードＰ１は、イベントＡ１をサブスクライバーノードＳ５に配信し、イベントＡ２をサブスクライバーノードＳ４に配信し、イベントＡ３をサブスクライバーノードＳ２に配信する。この場合、前述したルーティング設定処理によって、イベントＡ２を配信する際には、イベントＡ２は、ブローカーノードＢＲ１３で分岐されて配信される。また、イベントＡを配信する際には、イベントＡ３は、ブローカーノードＢＲ７で分岐されて配信される。【００７７】
まず、パブリッシャーノードＰ１は、発信するイベントＡ１を、ブローカーノードＢＲ１上に設定したルートノードであるルートノードＲ１宛に送信する（ステップＳ１０６）。このパブリッシャーノードＰ１が送信するイベントには、個々のイベントに割り当てられたユニークなイベントタイプＩＤが含まれている。【００７８】
ブローカーノードＢＲ１は、イベントＡ１を受信すると、受信したイベントＡ１に含まれるイベントタイプＩＤをキーとして、イベントルーティングテーブル３０９の設定内容に従って、イベントＡ１をルーティングする。このルーティング処理において、ブローカーノードＢＲ１は、その受信したイベントＡ１がルートノードＲ１宛であると判定し、ブローカーノードＢＲ１上に設定されたルートノードＲ１に仮想的にイベントＡ１を配信する。【００７９】
次に、ルートノードＲ１は、イベントＡ１に含まれるイベントＩＤを検出（抽出）する。また、ルートノードＲ１は、検出したイベントＩＤとイベントルーティングテーブル３０９とに基づいて、イベントＡ１を転送する次ノードがブローカーノードＢＲ６であると判定する（ステップＳ１０７）。そして、ルートノードＲ１は、ブローカーノードＢＲ６にイベントＡ１を転送する（ステップＳ１０８）。【００８０】
その後、ステップＳ１０７，Ｓ１０８と同様の処理に従って、そのイベントＡ１は、ブローカーノードＢＲ６を経由して、ブローカーノードＢＲ７に到達する。図１０に示すように、ブローカーノードＢＲ７でのルーティング処理では、次ノードがブローカーノードＢＲ１２及びブローカーノードＢＲ１３の２つである。そのため、ブローカーノードＢＲ７は、イベントＡ１のコピーを作成して、それぞれ次ノード（ブローカーノードＢＲ１２，ＢＲ１３）に送信する。【００８１】
また、上記と同様の処理がブローカーノードＢＲ１３でも行われ、ブローカーノードＢＲ１３は、イベントＡ１のコピーを作成して、それぞれ次ノード（ブローカーノードＢＲ１４，ＢＲ１８）に送信する。【００８２】
ステップＳ１０７，Ｓ１０８に示す処理が各ブローカーノードにおいて実行されることによって、図１０に示すように、パブリッシャーノードＰ１から各イベントが配信される。すなわち、パブリッシャーノードＰ１は、イベントＡ１を、ブローカーノードＢＲ１３から先のノードについては、ブローカーノードＢＲ１４，ＢＲ１５，ＢＲ２０，ＢＲ２５の経路を介して、サブスクライバーノードＳ５に配信する。また、パブリッシャーノードＰ１は、イベントＡ２を、ブローカーノードＢＲ１３から先のノードについては、ブローカーノードＢＲ１８，ＢＲ１９，ＢＲ２４の経路を介して、サブスクライバーノードＳ４に配信する。また、パブリッシャーノードＰ１は、イベントＡ３を、ブローカーノードＢＲ７から先のノードについては、ブローカーノードＢＲ１２，ＢＲ１７，ＢＲ２２の経路を介して、サブスクライバーノードＳ２に配信する。【００８３】
また、パブリッシャーノードＰ２からイベントＢ１を配信する処理も、ステップＳ１０７，Ｓ１０８と同様の処理が行われる。すなわち、図１１に示すように、パブリッシャーノードＰ２は、イベントＢ１を、ブローカーノードＢＲ３（ルートノードＲ２）、ブローカーノードＢＲ８，ＢＲ１２，ＢＲ１６，ＢＲ２１の経路を介して、サブスクライバーノードＳ１に配信する。【００８４】
なお、以上に示したマルチキャストツリー構築及びイベント配信の流れは、例えば、非特許文献１に記載されている。【００８５】
次に、構築されたイベント配信システムを拡張した機能として、複合イベントを検出し、検出した複合イベントを配信する動作について説明する。図１２は、複合イベント検出／配信システムにおける複合イベントを検出し配信する流れを示す流れ図である。また、図１３は、複合イベント用のルートノードの設定方法を示す説明図である。【００８６】
なお、本実施形態で示す例において、複合イベントとは、イベントＡ１（すなわち、パブリッシャーノードＰ１からサブスクライバーノードＳ５へのイベント）と、イベントＢ１（すなわち、パブリッシャーノードＰ２からサブスクライバーノードＳ１へのイベント）とを組み合わせたイベントが該当する。【００８７】
まず、例えば、サブスクライバーノードＳ３を運営する事業者は、イベントＡ１とイベントＢ１とを複合した複合イベントＣ１の受信を希望する場合には、サブスクライバーノードＳ３を操作して、複合イベントＣ１の定義操作を行う。すると、サブスクライバーノードＳ３は、イベントＡ１及びイベントＢ１を複合した複合イベントＣ１に関する基本イベントタイプの定義を作成する。また、サブスクライバーノードＳ３は、ハッシュ関数等を用いて、複合イベントＣ１を識別するためのイベントＩＤを生成する（ステップＳ２０１）。【００８８】
そして、その基本イベントタイプを、複合イベント登録によって広告することによって、複合イベント用のルートノードＲ３が確定する。具体的には、サブスクライバーノードＳ３は、新規定義した複合イベントに対するルートノードを、複数のブローカーノードＢＲ１〜ＢＲ２５の中から選択する。そして、サブスクライバーノードＳ３は、選択したブローカーノードＢＲ４に対して、ルートノード設定要求を送信する（ステップＳ２０２）。すると、ブローカーノードＢＲ４は、ルートノードとしての機能を起動し、複合イベント用のルートノードＲ３としての設定を行う（ステップＳ２０３）。【００８９】
なお、本実施形態では、図１３に示すように、サブスクライバーノードＳ３から送信されたルートノード設定要求は、ブローカーノードＢＲ２３，ＢＲ２４，ＢＲ１９，ＢＲ１４，ＢＲ９を介して、ブローカーノードＢＲ４に送信される。なお、サブスクライバーノードＳ３から送信されたルートノード設定要求が、ブローカーノードＢＲ２３，ＢＲ２４，ＢＲ１９，ＢＲ１４，ＢＲ９を介して、ブローカーノードＢＲ４まで導かれる手順は、サブスクライバーノードから受信登録要求を送信する場合の手順と同様である。すなわち、中間の各ブローカーノードＢＲ２３，ＢＲ２４，ＢＲ１９，ＢＲ１４，ＢＲ９は、イベントルーティングテーブル３０９の設定内容に基づいて転送先のブローカーノードを特定し、ルートノード設定要求を転送する。【００９０】
また、本実施形態において、サブスクライバーノードＳ３は、この複合イベント用のルートノードＲ３として、ＤＨＴを用いて、複合イベントＣ１のイベントＩＤと数値的に近いノードＩＤをもつブローカーノードＢＲ４を選択する。なお、複合イベント用のルートノードとして選択するブローカーノードの選択方法は、本実施形態で示した方法に限られない。例えば、サブスクライバーＳ３は、現在の処理負荷が最も小さいブローカーノードを複合イベント用のルートノードとして選択してもよい。【００９１】
また、本実施形態では、一例として、ブローカーノードＢＲ４が複合イベント用のルートノードとして設定される場合を説明するが、複合イベント検出／配信システムにおいて、いずれのブローカーノードＢＲ１〜ＢＲ２５も複合イベント用のルートノードとして動作する機能を搭載している。従って、複合イベント検出／配信システムにおいて、ブローカーノードＢＲ４以外のブローカーノードを選択して、複合イベント用のルートノードとして設定することも可能である。【００９２】
上記の処理が実行されることによって、ブローカーノードＢＲ２３，ＢＲ２４，ＢＲ１９，ＢＲ１４，ＢＲ９，ＢＲ４上でイベントルーティングテーブル３０９が設定され、複合イベントＣ１用の配信パスが設定される。なお、図１３に示す配信パスは、一例であって、各ブローカーノードＢＲ１〜ＢＲ２５のイベントルーティングテーブル３０９に設定内容に応じて、異なる経路で複合イベントＣ１用の配信パスが設定されてもよい。【００９３】
なお、上記に示した処理は、厳密には２つの処理に分けることも可能である。つまり、複合イベントＣ１のルートノードを確定するためのフェーズと、複合イベントＣ１について配信パスを登録するフェーズとの２つの処理に分けることができる。この場合、前者のフェーズでサブスクライバーノードＳ３がルートノードＲ３を確定し、後者のフェーズにおいて各ブローカーノードＢＲ２３，ＢＲ２４，ＢＲ１９，ＢＲ１４，ＢＲ９，ＢＲ４がイベントルーティングテーブル３０９を設定する。【００９４】
図１４は、サブスクライバーノードＳ３からの要求に応じて、ブローカーノードＢＲ４上に設定されるルートノードＲ３に登録される複合イベント登録情報を示す説明図である。図１４に示す例では、２つのイベントＡ１，Ｂ１を複合した複合イベントＣ１検出用の複合イベント登録情報が登録される場合を示している。なお、図１４に示す複合イベント登録情報は、例えば、ルートノードＲ３（具体的には、ブローカーノードＢＲ４）が備えるメモリや磁気ディスク装置等の記憶装置に記憶される。【００９５】
図１４に示すように、ルートノードＲ３に登録される複合イベント登録情報には、複合イベントＩＤ４０１、関連イベントＡ１を識別するためのイベントＩＤ４０２、関連イベントＢ１を識別するためのイベントＩＤ４０３、及び関連条件式４０４が含まれる。【００９６】
関連条件式４０４は、ルートノードＲ３が複合イベントＣ１を検出したか否かを判定するために用いる条件式である。ルートノードＲ３は、例えば、以下に示す関連条件式４０４に従って、複合イベントＣ１を検出したか否かを判定する。【００９７】
（１）同時発生の関連条件式「Ａ１  ＡＮＤ  Ｂ１」。この場合、ルートノードＲ３は、
関連イベントＡ１の発生を検出するとともに、関連イベントＢ１の発生を検出すると、複
合イベントＣ１が発生したと判定する。【００９８】
（２）選択発生の関連条件式「Ａ１  ＯＲ  Ｂ１」。この場合、ルートノードＲ３は、関連イベントＡ１の発生を検出するか、又は関連イベントＢ１の発生を検出すると、複合イベントＣ１が発生したと判定する。【００９９】
（３）順序発生の関連条件式「Ａ１  ＴＨＥＮ  Ｂ１」。この場合、ルートノードＲ３は、関連イベントＡ１の発生を検出した後に、関連イベントＢ１の発生を検出すると、複合イベントＣ１が発生したと判定する。【０１００】
（４）順序、時間指定の関連条件式「Ａ１  ＴＨＥＮ  Ｂ１（関連イベントＡ１の発生後５秒以内に関連イベントＢ１が発生。又は関連イベントＡ１の発生後５秒以降に関連イベントＢ１が発生等）。この場合、ルートノードＲ３は、関連イベントＡ１の発生を検出した後に、５秒以内に（又は５秒経過後以降に）関連イベントＢ１の発生を検出すると、複合イベントＣ１が発生したと判定する。【０１０１】
なお、関連条件式４０４は、上記の（１）〜（４）に示したものに限られない。例えば、ルートノードＲ３は、関連条件式４０４を用いて、同一イベントの連続的な発生（例えば、一定時間内に何回発生したか等）を検出したことに基づいて、複合イベントＣ１が発生したと判定してもよい。【０１０２】
また、図１４に示す複合イベントＩＤ４０１は、複合イベント配信用のルートノードを確定する時に使用される。前述したように、本実施形態では、複合イベントＩＤ４０１と数値的に近いノードＩＤをもつブローカーノードＢＲ４が、ルートノードＲ３として選択される。【０１０３】
また、図１４に示す関連イベントＡ１に対応する基本タイプＩＤ及びイベントＩＤ４０２と、関連イベントＢ１に対応する基本タイプＩＤ及びイベントＩＤ４０３とは、複合イベント用のルートノードＲ３が、関連イベントＡ１，Ｂ１検出用のルートノードを特定する場合に使用される。【０１０４】
複合イベントを検出するための処理は、ステップＳ２０１〜Ｓ２０３の処理によってルートノードＲ３が設定された後に、ブローカーノードＢＲ４上のルートノードＲ３が行う。まず、ルートノードＲ３は、関連イベントＡ１を検出するための登録を行う。そのため、ルートノードＲ３は、イベントＡ１用のルートノードであるルートノードＲ１に向けて登録情報を送信する（ステップＳ２０４）。【０１０５】
図１３に示す例では、ルートノードＲ３から送信された登録情報は、各ブローカーノードのイベントルーティングテーブル３０９に従った転送処理によって、ブローカーノードＢＲ３、ブローカーノードＢＲ２、ブローカーノードＢＲ７の順にルーティングされている。そして、各ブローカーノードＢＲ３，ＢＲ２，ＢＲ７は、転送された登録情報に基づいて、イベントルーティングテーブル３０９を設定する。そして、図１３に示す例では、ブローカーノードＢＲ７において、パブリッシャーノードＰ１からルートノードＲ１を介してサブスクライバーノードＳ５にイベントＡ１が配信される経路を発見することが可能であり、ブローカーノードＢＲ７でイベントルーティングテーブル３０９の設定が行われることにより、登録処理が完了する。【０１０６】
図１５は、関連イベントＡ１を検出するための登録処理に用いられるメッセージの例を示す説明図である。ルートノードＲ３からルートノードＲ１への登録情報の転送経路において、各ブローカーノードＢＲ３，ＢＲ２，ＢＲ７は、図１５に示す登録情報のメッセージに含まれる関連イベントＡ１の基本タイプＩＤ４０２をキーとしてルーティング処理を行う。【０１０７】
関連イベントＡ１の登録処理と同様に、ルートノードＲ３は、関連イベントＢ１についても、イベントＢ１用のルートノードであるルートノードＲ２に向けて登録情報を送信する（ステップＳ２０５）。この場合、関連イベントＡ１の登録処理と同様の処理に従って、各ブローカーノードＢＲ９，ＢＲ８でイベントルーティングテーブル３０９の設定が行われる。そして、ブローカーノードＢＲ８において、関連イベントＢ１の配信経路を発見できるため、ブローカーノードＢＲ８でイベントルーティングテーブル３０９の設定が行われることにより、登録処理が完了する。なお、関連イベントＢ１を検出するための登録処理に用いられる登録情報（メッセージ）を図１６に示す。【０１０８】
上記のような処理が実行されることによって、ルートノードＲ３は、関連イベントＡ１（パブリッシャーノードＰ１からサブスクライバーノードＳ５に配信）と、関連イベントＢ１（パブリッシャーノードＰ２からサブスクライバーノードＳ１に配信）との２つのイベントを受信することが可能となる。【０１０９】
上記の設定後、パブリッシャーノードＰ１からサブスクライバーノードＳ５に向けてイベントＡ１が配信されると、中継するブローカーノードＢＲ７は、登録された関連イベントＡ１であることを検出する。そして、ブローカーノードＢＲ７は、イベントＡ１のコピーを作成して、一方をサブスクライバーノードＳ５に配信すべくブローカーノードＢＲ１３に転送するとともに、図１７に示すように、他方を関連イベントＡ１としてルートノードＲ３に配信すべくブローカーノードＢＲ２に転送する（ステップＳ２０６）。【０１１０】
また、パブリッシャーノードＰ２からサブスクライバーノードＳ１に向けてイベントＢ１が配信されると、中継するブローカーノードＢＲ８は、登録された関連イベントＢ１であることを検出する。そして、ブローカーノードＢＲ８は、イベントＢ１のコピーを作成して、一方をサブスクライバーノードＳ１に配信すべくブローカーノードＢＲ１２に転送するとともに、図１７に示すように、他方を関連イベントＢ１としてルートノードＲ３に配信すべくブローカーノードＢＲ９に転送する（ステップＳ２０７）。【０１１１】
次いで、ルートノードＲ３は、関連イベントＡ１，Ｂ１を受信すると、受信した関連イベントＡ１，Ｂ１に基づいて、複合イベントＣ１を生成する（ステップＳ２０８）。そして、ルートノードＲ３は、生成した複合イベントＣ１をサブスクライバーノードＳ３に向けて配信する（ステップＳ２０９）。【０１１２】
なお、本実施形態で示す例では、２つの関連イベントＡ１，Ｂ１を複合化した新たな複合イベントＣ１は、図１７に示すように、ルートノードＲ３（ブローカーノードＢＲ４）から、ブローカーノードＢＲ９，ＢＲ１４，ＢＲ１９，ＢＲ２４，ＢＲ２３の経路を経由して、サブスクライバーノードＳ３に配信される。図１７に示す例では、ブローカーノードＢＲ７が検出するイベントＡ１は、複合イベントＣ１の関連イベントＡ１として表されている。また、同様に、ブローカーノードＢＲ８が検出するイベントＢ１は、複合イベントＣ１の関連イベントＢ１として表されている。【０１１３】
次に、ブローカーノードＢＲ７，ＢＲ８，ＢＲ４における関連イベントＡ１，Ｂ１の収集、及び複合イベントＣ１の検出の動作について説明する。図１８は、関連イベントＡ１，Ｂ１の収集、及び複合イベントＣ１の検出の動作を示す説明図である。なお、図１８に示す例では、複合イベントＣ１を、関連イベントＡ１及び関連イベントＢ１の２つの関連イベントを用いて生成するモデルを示している。なお、複合イベント検出／配信システムにおいて、３以上の関連イベントを用いて複合イベントを検出し配信するように構成してもよい。【０１１４】
関連イベントＡ１は、図１０に示すように、パブリッシャーノードＰ１からサブスクライバーノードＳ５に対するイベントである。また、関連イベントＢ１は、図１１に示すように、パブリッシャーノードＰ２からサブスクライバーノードＳ１に対するイベントである。なお、図１８に示す例において、ルートノードＲ３によるブローカーノードＢＲ７，ＢＲ８への関連イベントＡ１，Ｂ１収集のための登録処理は、既に完了しているものと仮定する。【０１１５】
ブローカーノードＢＲ７は、イベントＡ１を受信すると、受信したイベントＡ１をイベントキューに一旦蓄積する。そして、ブローカーノードＢＲ７内のイベントルータ５０１は、イベントキューに蓄積したイベントを、順次ルーティング処理する。イベントルータは、このルーティング処理において、イベントＡ１を検出した場合、そのイベントＡ１のコピーを作成する。この場合、イベントルータは、オリジナルのイベントＡ１を送出用のイベントキューに出力する。そして、ブローカーノードＢＲ７は、オリジナルのイベントＡ１を、図１０に示すように、他のブローカーノードＢＲ１３，ＢＲ１４，ＢＲ１５，ＢＲ２０，ＢＲ２５を経由してサブスクライバーノードＳ５に配信する。【０１１６】
また、イベントルータは、コピーしたイベントＡ１を、関連イベント処理部５０２に出力する。すると、関連イベント処理部５０２は、コピーしたイベントＡ１に、複合イベントに関連するイベントであることを表すために、複合イベントＣ１のＩＤを付加する。なお、図１８では、オリジナルのイベントＡ１と区別するために、この複合イベントＣ１のＩＤが付加されたイベントを関連イベントＣ１／Ａ１として記している。【０１１７】
図１８に示した関連イベントＣ１／Ａ１は、図１７に示したように、最終的にブローカーノードＢＲ４に転送される。そして、ブローカーノードＢＲ４内のイベントルータ５２１は、ルーティング処理を行うことによって、関連イベントＣ１／Ａ１を検出し、検出した関連イベントＣ１／Ａ１を複合イベントキューに追加する。【０１１８】
また、ブローカーノードＢＲ８も、ブローカーノードＢＲ７と同様な処理を実行し、図１８に示すように、関連イベントＣ１／Ｂ１を作成して、最終的にブローカーノードＢＲ４に転送する。その結果、ブローカーノードＢＲ４（ルートノードＲ３）は、関連イベントＣ１／Ａ１と関連イベントＣ１／Ｂ１とを集約する。【０１１９】
ブローカーノードＢＲ４の複合イベント検出部５２２は、複合イベント検出処理を実行し、関連イベントＣ１／Ａ１と関連イベントＣ１／Ｂ１との発生を検出する。次いで、複合イベント検出部５２２は、設定された関連条件式に合致すれば、関連イベントＣ１／Ａ１と関連イベントＣ１／Ｂ１とに基づいて、複合イベントＣ１を検出（生成）する。そして、複合イベント検出部５２２は、検出した複合イベントＣ１を、図１７で説明したような経路（ブローカーノードＢＲ９，ＢＲ１４，ＢＲ１９，ＢＲ２４，ＢＲ２５を経由する経路）を介して、サブスクライバーノードＳ３に配信する。【０１２０】
次に、複合イベント検出／配信システムに含まれる各ブローカーノードの動作について説明する。図１９は、各ブローカーノードの動作を示す説明図である。なお、図１９に示す例では、一例として、ブローカーノードＢＲ７の場合が示されているが、複合イベント検出／配信システムに含まれる他のブローカーノードも同様の動作を行うことが可能である。【０１２１】
複合イベント検出の条件となる複数のイベントの関係については、様々な定義が考えられる。例えば、「関連イベントＡ１と関連イベントＢ１とが同時に発生した」や、「関連イベントＡ１が発生した後、関連イベントＢ１が発生した」、「関連イベントＡ１が発生した後、５秒以内に関連イベントＢ１が発生した」、「関連イベントＡ１が発生した後、５秒又は５秒経過以降に関連イベントＢ１が発生した」等、様々な複合イベントの定義が考えられる。【０１２２】
ここで、関連イベントＡ１と関連イベントＢ１とが、同時にブローカーノードＢＲ４（ルートノードＲ３）に到着することは難しい。そのため、図１９に示すように、ブローカーノードＢＲ７は、関連イベントの到着時刻に時間差がある場合でも、複合イベントを検出できる対策を施している。【０１２３】
図１９に示すように、ブローカーノードＢＲ７は、図１８に示したような関連イベントを検出してルートノードに転送する動作を行う機能と、複合イベント検出用のルートノードとして動作を行う機能との両方の機能を具備している。【０１２４】
すなわち、ブローカーノードＢＲ７は、関連イベント検出用のノードとして設定されている場合には、関連イベントＡ１やＢ１を検出した場合、関連イベント処理を実行する。また、ブローカーノードＢＲ７は、複合イベント検出用のルートノードとして設定されている場合、関連イベントを受信すると、複合イベント処理を実行する。このブローカーノードＢＲ７は、受信した関連イベントを関連イベントストレージ５０４に蓄積する。この関連イベントストレージ５０４については、メモリや、磁気ディスク装置、分散ストレージ等の多様な記憶媒体を用いた実現形態が考えられる。【０１２５】
このブローカーノードＢＲ７は、複合イベントを検出する場合、まず、関連イベントストレージ５０４に蓄積した関連イベントのサーチを実行する。ここで、ブローカーノードＢＲ７は、もし複合イベント検出条件にマッチする関連イベントを検出した場合、受信した関連イベントと蓄積していた関連イベントとによって複合イベントを生成する。そして、ブローカーノードＢＲ７は、生成した複合イベントをヒットイベントとして配信する。例えば、図１７に示すように、ブローカーノードＢＲ７は、このヒットイベントを、複合イベントＣ１としてサブスクライバーノードＳ３に配信する。【０１２６】
一方、ブローカーノードＢＲ７は、サーチ処理において、マッチする関連イベントが存在しなかった場合、受信した関連イベントを、未ヒットイベントとして、関連イベントストレージ５０４に蓄積する。なお、ブローカーノードＢＲ７（具体的には、複合イベント検出部５０３）は、関連イベントストレージ５０４が容量溢れを起こさないように、予め設定された期間以上蓄積され続けている等の古い関連イベントを削除する処理を行う。例えば、複合イベント検出部５０３は、所定期間毎に、関連イベントストレージ５０４が蓄積する各関連イベントの蓄積開始日時を判定し、蓄積開始から所定期間以上経過していると判定した関連イベントを全て削除する。【０１２７】
図２０は、イベントルータ５０１のイベントルーティング部５０７が用いるイベントルーティングテーブル５０９の例を示す説明図である。図２０に示すイベントルーティングテーブル５０９は、イベント登録情報がイベントメッセージ識別部５０６によって検出され、検出されたイベント登録情報に基づいて登録情報管理部５０８によって構築される。【０１２８】
上記のような構成により、個々のイベントが複合イベント検出及び配信する機能を具備するブローカーノードに集約された後に、複合イベントが生成され、その生成された複合イベントがサブスクライバーノードに配信される。【０１２９】
以上のように、本実施形態によれば、複合イベントを配信するためのルートノード機能を、複合イベント種別毎に分散させることができる。また、複合イベントを検出／配信するルートノードとしての機能と、複合イベントの検出に関連する関連ノードを検出する機能とを分散させることができる。従って、複合イベント種別の増加に対して、複合イベントを検出し配信するノードに対する負荷集中を軽減することができる。【０１３０】
また、本実施形態によれば、既存の複数のイベント配信ツリーと、新たに構築される複合イベント配信ツリーとを連結することにより、イベント以外のデータ転送量を軽減することができる。従って、複合イベント種別の増加に対して、ネットワークに対する負荷の増加を軽減することができる。【０１３１】
なお、本実施形態では、複合イベント検出／配信システムに含まれる全てのブローカーノードＢＲ１〜ＢＲ２５がルートノードとして設定可能に構成されている場合を示したが、一部の複数ブローカーノードのみがルートノードとして設定可能に構成されていてもよい。この場合、複合イベント検出／配信システム内のいずれのブローカーノードがルートノードとして設定可能であるか管理するノード（例えば、管理サーバ）が必要となるものの、全てのブローカーノードにルートノードとしての設定機能を搭載する必要をなくし、コストを低減することができる。【０１３２】
次に、本発明による複合イベント検出／配信システムの最小構成について説明する。図２１は、複合イベント検出／配信システムの最小の構成例を示す構成図である。図２１に示すように、複合イベント検出／配信システムは、最小の構成要素として、ブローカーノードを備える。また、ブローカーノードは、関連イベント処理部３０２と、複合イベント検出部３０３とを含む。また、ブローカーノードは、複数のイベントを複合した複合イベントの配信処理を行うルートノードとして動作する機能と、複合イベントの検出に関連する関連イベントを検出する関連イベント検出ノードとして動作する機能とを有する。【０１３３】
図２１に示す最小構成の複合イベント検出／配信システムにおいて、関連イベント処理部３０２は、関連イベント検出ノードとして設定されているときに、関連イベントを検出すると、検出した関連イベントを、ルートノードとして設定されているブローカーノードに転送する機能を備える。また、複合イベント検出部３０３は、ルートノードとして設定されているときに、関連イベント検出ノードとして設定されているブローカーノードから関連イベントを受信すると、受信した関連イベントに基づいて複合イベントを生成する機能を備える。複合イベント検出部３０３は、生成した複合イベントを設定内容に従って他のノードへ転送する機能を備える。【０１３４】
図２１に示す最小構成の複合イベント検出／配信システムによれば、システムは、複合イベント種別の増加に対して、複合イベントを検出し配信するノードに対する負荷集中を軽減することができる。【０１３５】
なお、本実施形態では、以下の（１）〜（８）に示すような複合イベント検出／配信システムの特徴的構成が示されている。
（１）複合イベント検出／配信システムは、イベント配信の中継を行う複数のブローカーノード（例えば、ブローカーノードＢＲ１〜ＢＲ２５）を備え、各ブローカーノードは、複数のイベントを複合した複合イベントの配信処理を行うルートノード（例えば、図１７に示すルートノードＲ３）として動作する機能と、複合イベントの検出に関連する関連イベントを検出する関連イベント検出ノード（例えば図１７に示すブローカーノードＢＲ７，ＢＲ８）として動作する機能とを有し、関連イベント検出ノードとして設定されているときに、関連イベントを検出すると、検出した関連イベントを、ルートノードとして設定されているブローカーノードに転送する関連イベント転送部（例えば、関連イベント処理部３０２によって実現される）と、ルートノードとして設定されているときに、関連イベント検出ノードとして設定されているブローカーノードから関連イベントを受信すると、受信した関連イベントに基づいて複合イベントを生成する複合イベント生成部（例えば、複合イベント検出部３０３によって実現される）と、複合イベント生成部が生成した複合イベントを設定内容に従って他のノードへ転送する複合イベント配信部（例えば、複合イベント検出部３０３によって実現される）とを含むことを特徴とする。【０１３６】
（２）複合イベント検出／配信システムにおいて、複合イベント配信部は、転送の結果、複合イベントをサブスクライバーノードに配信するように構成されていてもよい。【０１３７】
（３）複合イベント検出／配信システムにおいて、複合イベント生成部は、関連イベント検出ノードとして設定されているブローカーノードから受信した関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、所定の複合イベントの検出条件に合致したと判定したときに、複合イベントを生成するように構成されていてもよい。【０１３８】
（４）複合イベント検出／配信システムは、イベントを生成し、生成したイベントを送信するパブリッシャーノード（例えば、パブリッシャーノードＰ１，Ｐ２）と、パブリッシャーノードが送信したイベントを受信するサブスクライバーノード（例えば、サブスクライバーノードＳ１〜Ｓ５）とを備え、サブスクライバーノードは、ルートノードとして選択したブローカーノードに、複合イベントを受信するための登録情報を送信することによって、予め受信登録を行う受信登録部（例えば、ルートノード設定要求部２０４によって実現される）を含み、複合イベント配信部は、複合イベント生成部が生成した複合イベントを、予め受信登録したサブスクライバーノードに対して配信するように構成されていてもよい。【０１３９】
（５）複合イベント検出／配信システムにおいて、サブスクライバーノードは、複合イベントの検出に関連する複数の関連イベントの種別を示す情報（例えば、イベントＡ１の基本タイプＩＤ及びイベントＡ１のＩＤ４０２。イベントＢ１の基本タイプＩＤ及びイベントＢ１のＩＤ４０３）と、複数の関連イベント間の関係を示す関係式（例えば、関連条件式４０４）とを含む登録情報を生成する登録情報生成部（例えば、複合イベント登録情報生成部２０３によって実現される）を含み、受信登録部は、ルートノードとして選択したブローカーノードに、登録情報生成部が生成した登録情報を送信するように構成されていてもよい。【０１４０】
（６）複合イベント検出／配信システムにおいて、ルートノードとして選択されたブローカーノードは、サブスクライバーノードから受信した複合イベントの登録情報に含まれる複数の関連イベントの種別を示す情報を用いて、各関連イベントの中継を行っているブローカーノードに対して、関連イベント検出ノードとして設定させる関連イベント検出ノード設定要求部（例えば、関連イベント処理要求部３１０によって実現される）を含むように構成されていてもよい。【０１４１】
（７）複合イベント検出／配信システムにおいて、ルートノードとして設定されているブローカーノードは、関連イベント検出ノードとして設定されているブローカーノードから受信した関連イベントを蓄積する関連イベント蓄積部（例えば、関連イベントストレージ３０４によって実現される）を含み、複合イベント生成部は、関連イベント蓄積部が蓄積する関連イベントを検索し、検索した関連イベントに基づいて複合イベントを生成するように構成されていてもよい。【０１４２】
（８）複合イベント検出／配信システムにおいて、ルートノードとして設定されているブローカーノードは、関連イベントの受信の有無に関わらず、所定期間毎に関連イベント蓄積部が蓄積する関連イベントを走査し、予め設定された期間以上蓄積されている関連イベントが存在する場合に、期間以上蓄積されている関連イベントを削除する関連イベント削除部（例えば、複合イベント検出部３０３によって実現される）を含むように構成されていてもよい。【０１４３】
本発明は、例えば、大規模ネットワークシステムの稼動状況を監視する用途に適用できる。すなわち、ネットワークシステム内で発生する様々なイベントを組み合わせることにより、高度なネットワークの可視化が実現可能となる。また、Intelligent  Traffic  System（ＩＴＳ）における渋滞情報等に適用すれば、様々なセンシングデータから得られるイベントを複合化し配信することにより、高度な情報配信環境の構築が可能となる。また、昨今のユビキタスサービス領域において既に実現されている様々なセンシングシステムに対して、各システム間のイベント交換空間を提供することも可能である。【０１４４】
以上、実施形態を参照して本発明を説明したが、本発明は実施形態に限定されるものではない。クレームに定義された本発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１４５】
この出願は、２００８年２月２９日に出願された日本出願特願２００８−０５０２２０を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
【図１】
2009107511.tif 000003
【図２】
2009107511.tif 000004
【図３】
2009107511.tif 000005
【図４】
2009107511.tif 000006
【図５】
2009107511.tif 000007
【図６】
2009107511.tif 000008
【図７】
2009107511.tif 000009
【図８】
2009107511.tif 000010
【図９】
2009107511.tif 000011
【図１０】
2009107511.tif 000012
【図１１】
2009107511.tif 000013
【図１２】
2009107511.tif 000014
【図１３】
2009107511.tif 000015
【図１４】
2009107511.tif 000016
【図１５】
2009107511.tif 000017
【図１６】
2009107511.tif 000018
【図１７】
2009107511.tif 000019
【図１８】
2009107511.tif 000020
【図１９】
2009107511.tif 000021
【図２０】
2009107511.tif 000022
【図２１】
2009107511.tif 000023
【手続補正書】
【提出日】平成21年7月10日(2009.7.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送する関連イベント検出ノードと、
前記関連イベント検出ノードから前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、生成した該複合イベントを設定内容に従って他のノードへ転送するルートノードと、
を有する複合イベント検出／配信システム。
【請求項２】
前記ルートノードは、生成した前記複合イベントをサブスクライバーノードへ配信する請求項１に記載の複合イベント検出／配信システム。
【請求項３】
前記ルートノードは、受信した前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項１又は請求項２記載の複合イベント検出／配信システム。
【請求項４】
イベントを生成し、生成した前記イベントを送信するパブリッシャーノードと、
前記パブリッシャーノードから前記イベントを受信し、自身が複合イベントを前記ルートノートから受信することを要求する受信登録要求を前記ルートノードへ送信するサブスクライバーノードと、
を更に有し、
前記ルートノードは、前記サブスクライバーノードから前記受信登録要求を受信し、該受信登録要求に基づいて、生成した前記復号イベントを該サブスクライバーノードへ送信する、請求項１から請求項３のうちのいずれか１項に記載の複合イベント検出／配信システム。
【請求項５】
前記受信登録要求は、複合イベントの検出に関連する複数の関連イベントの種別と、複数の関連イベント間の関係を示す関係式とを含む、請求項４に記載の複合イベント検出／配信システム。
【請求項６】
前記ルートノードは、受信した前記受信登録要求に含まれる複数の関連イベントの種別に基づいて、各関連イベントの中継を行っているブローカーノードに対して、該ブローカーノードを前記関連イベント検出ノードとして設定するように要求する設定要求を送信する、請求項５記載の複合イベント検出／配信システム。
【請求項７】
前記ルートノードは、前記関連イベント検出ノードから受信した前記関連イベントを蓄積しておき、蓄積しておいた関連イベントの中から、所定の条件を満たす関連イベントを検索し、検索した関連イベントに基づいて前記複合イベントを生成する、請求項１乃至請求項６のいずれか１項に記載の複合イベント検出／配信システム。
【請求項８】
前記ルートノードは、所定期間毎に蓄積した関連イベントを走査し、予め設定された期間以上蓄積されている関連イベントを削除する、請求項７記載の複合イベント検出／配信システム。
【請求項９】
複数のイベントを複合した関連イベントを受信する受信手段と、
前記受信手段により受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手段と、
前記関連イベント生成手段により生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手段と、
を有するブローカーノード。
【請求項１０】
前記複合イベント配信手段は、前記複合イベントをサブスクライバーノードに配信する、請求項９に記載のブローカーノード。
【請求項１１】
複合イベント生成手段は、前記前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項９又は請求項１０に記載のブローカーノード。
【請求項１２】
複数のイベントを複合した複合イベントの検出に関連する関連イベントを検出すると、検出した該関連イベントを、ルートノードへ転送し、
前記関連イベントを受信すると、受信した該関連イベントに基づいて複合イベントを生成し、
生成した該複合イベントを設定内容に従って他のノードへ転送する、複合イベント検出／配信方法。
【請求項１３】
前記複合イベントをサブスクライバーノードに配信する、請求項１２に記載の複合イベント検出／配信方法。
【請求項１４】
受信した関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する、請求項１２又は請求項１３記載の複合イベント検出／配信方法。
【請求項１５】
コンピュータに、
複数のイベントを複合した複合イベントを受信する受信手順、
前記受信手順で受信された前記関連イベントに基づいて複合イベントを生成する複合イベント生成手順、及び
前記関連イベント生成手順で生成された前記複合イベントを設定内容に従って他のノードへ転送する複合イベント配信手順、
実行させるための複合イベント検出／配信用プログラム。
【請求項１６】
前記複合イベント配信手順は、前記複合イベントをサブスクライバーノードに配信する手順である、請求項１５記載の複合イベント検出／配信用プログラム。
【請求項１７】
前記複合イベント生成手順は、前記関連イベントに基づいて、所定の複合イベントの検出条件に合致したか否かを判定し、合致したのであれば、複合イベントを生成する手順である、請求項１５又は請求項１６記載の複合イベント検出／配信用プログラム。
【請求項１８】
前記複合イベント検出／配信用プログラムは、
コンピュータに、
前記サブスクライバーノードから前記受信登録要求を受信する受信登録要求受信手順を更に実行させるプログラムであって、
前記複合イベント配信手順は、前記受信登録要求受信手順で受信された前記受信登録要求に基づいて、生成した前記復号イベントを該サブスクライバーノードへ送信する手順である、請求項１５乃至請求項１７のいずれか１項に記載の複合イベント検出／配信用プログラム。
【請求項１９】
コンピュータに、
前記受信登録要求受信手順で受信された前記受信登録要求に含まれる複数の関連イベントの種別に基づいて、各関連イベントの中継を行っているブローカーノードに対して、該ブローカーノードを前記関連イベント検出ノードとして設定するように要求する設定要求を送信する設定要求送信手順を更に実行させる、請求項１８に記載の複合イベント検出／配信用プログラム。
【請求項２０】
コンピュータに、
前記関連イベント検出ノードから受信した前記関連イベントを記憶手段に蓄積する手順、及び
前記記憶手段に蓄積しておいた関連イベントの中から、所定の条件を満たす関連イベントを検索し、検索した関連イベントに基づいて前記複合イベントを生成する手順、
を更に事項させる、請求項１５乃至請求項１９のいずれか１項に記載の複合イベント検出／配信用プログラム。
【請求項２１】
コンピュータに、
所定期間毎に関連イベント蓄積手順で蓄積した関連イベントを走査し、予め設定された期間以上蓄積されている関連イベントを削除する手順を更に実行させる、請求項２０記載の複合イベント検出／配信用プログラム。
【国際調査報告】
2009107511.tif 000024
2009107511.tif 000025
2009107511.tif 000026
2009107511.tif 000027