(57)【要約】【課題】イベント処理システムでのイベント合致処理の処理時間を短くする。【解決手段】ルール格納手段（ルール格納部１１）は、複数のルール格納リストを有し、イベントパターン、及び、１つ以上のイベントパターンに合致したイベントの通知先（イベント受信者２４）である１つ以上の通知先を含んで構成されているルールを複数のルール格納リストに分散して格納する。ルール登録手段（ルール登録・削除部１２）は、ルール登録者２１からデータ転送部１４を経て与えられたルール登録要求データに含まれているルールを、ルール格納部１１内の適切なルール格納リストに登録する。イベント合致判定手段（イベント処理部１３）は、イベント配信者２３からデータ転送部１４を経てイベント処理要求データが与えられたとき、１つのルール格納リストに格納されているルールに対してのみ合致判定を行う。【選択図】図２
2012212227.tif 000002
【特許請求の範囲】
【請求項１】
人及びモノの状態情報を表すイベントと、前記イベントの通知先に通知するためのイベントの条件を表すイベントパターンとの合致判定を行い、合致した前記イベントを前記通知先に送信するイベント処理システムであって、
複数のルール格納リストを有し、前記イベントパターン、及び、１つ以上の前記イベントパターンに合致したイベントの通知先を含んで構成されているルールを前記複数のルール格納リストに分散して格納するためのルール格納手段と、
与えられたルール登録要求データに含まれている前記ルールを、前記ルール格納手段内の前記ルール格納リストに登録するルール登録手段と、
イベント処理要求データが与えられたとき、１つの前記ルール格納リストに格納されている前記ルールに対してのみ前記合致判定を行うイベント合致判定手段とから構成されていることを特徴とするイベント処理システム。
【請求項２】
前記ルール格納手段は、
前記ルール格納リストに対するポインタを保持するポインタ保持手段を有することを特徴とする請求項１記載のイベント処理システム。
【請求項３】
前記ポインタ保持手段は、
所定のキー集合が分割されてできた部分キー集合が当該ポインタ保持手段の各要素にあらかじめ割り当てられ、
前記ルール登録手段は、
前記ルールを受信したときに該ルールから１つ以上のキーを生成し、生成したキーを管理する前記ポインタ保持手段の前記要素が指す前記ルール格納リストにルールを登録する構成とされ、
前記イベント合致判定手段は、
前記イベントを受信したときに該イベントから前記キーを生成し、該キーを管理するポインタ保持テーブルの要素が指す前記ルール格納リスト内の前記ルールと合致判定を行う構成とされていることを特徴とする請求項２記載のイベント処理システム。
【請求項４】
前記キー集合は、
前記ルール又は前記イベントを構成する特定の属性名の属性値が取り得る値から生成されていることを特徴とする請求項３記載のイベント処理システム。
【請求項５】
前記ルール登録手段は、
与えられたルール削除要求データに含まれているルールを、前記ルール格納手段の前記ルール格納リストから削除する機能も有していることを特徴とする請求項１、２、３又は４記載のイベント処理システム。
【請求項６】
イベント処理プログラムがコンピュータに、人及びモノの状態情報を表すイベントと、前記イベントの通知先に通知するためのイベントの条件を表すイベントパターンとの合致判定を行わせ、合致した前記イベントを前記通知先に送信させるイベント処理方法であって、
前記コンピュータに、複数のルール格納リストを有し、前記イベントパターン、及び、１つ以上の前記イベントパターンに合致したイベントの通知先を含んで構成されているルールを前記複数のルール格納リストに分散して格納するためのルール格納手段を設け、
与えられたルール登録要求データに含まれている前記ルールを、前記ルール格納手段内の前記ルール格納リストに登録するルール登録処理と、
イベント処理要求データが与えられたとき、１つの前記ルール格納リストに格納されている前記ルールに対してのみ前記合致判定を行うイベント合致判定処理とを行わせることを特徴とするイベント処理方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか一に記載のイベント処理システムとして機能させることを特徴とするイベント処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、イベント処理システム、該システムに用いられるイベント処理方法及びイベント処理プログラムに係り、特に、大量のイベントデータの処理を行う場合に用いて好適なイベント処理システム、該システムに用いられるイベント処理方法及びイベント処理プログラムに関する。
【背景技術】
【０００２】
イベントは、人及びモノに対する事象を表し、１個以上の属性から構成されている。属性は、人及びモノの状態情報であり、属性名と属性値とから構成されている。たとえば、図９に示すように、イベントｅｖ１は、属性ｄ１，ｄ２，ｄ３，ｄ４から構成されている。属性ｄ１は、人及びモノの状態情報を検出した装置やセンサなどを示すデータ（たとえば、「装置ＩＤ」）、属性ｄ２は、同装置やセンサが取得したデータ（たとえば、「温度」）、属性ｄ３は、データの取得場所（たとえば、「場所」）、及び属性ｄ４が、データの取得時刻（たとえば、「時刻」）で構成されている。属性名は、「装置ＩＤ」、「温度」、「場所」、及び「時刻」などの各属性の名称、及び、属性値が、属性名に対するデータ値（“ＩＤ１”、“３０℃”、“東京都港区”、“１０：１０：２５”など）である。
【０００３】
図１０は、イベントパターンの構成例を示す図である。
イベントパターン（event pattern ）とは、イベント受信者に通知するためのイベントの条件である。なお、ここでは、１個以上の属性条件（属性名と属性値）を指定したものとして説明する。属性条件には、１つの属性値を指定する属性値一致条件と、属性値の範囲を指定する属性値範囲指定条件とがある。図１０では、イベントパターン、及び属性条件（属性値一致条件、及び属性値範囲指定条件）の例が示されている。イベントパターンｅｐ１では、属性条件ｅ１1 （属性値一致条件）は（装置ＩＤ＝“ＩＤ１”）、及び、属性条件ｅ１2 （属性値一致条件）が（温度＝“３０℃”）である。イベントパターンｅｐ２では、属性条件ｅ２1 （属性値一致条件）は（装置ＩＤ＝“ＩＤ１”）、及び、属性条件ｅ２2 （属性値範囲指定条件）が（“１０℃”≦温度≦“３０℃”）である。
【０００４】
イベント合致判定では、イベント配信装置により、イベントとイベントパターンとが合致（以下、マッチ(match）ともいう）するか否かが判定され、イベントがイベントパターンに合致するとき、同イベントがイベント受信者に通知される。このイベント合致判定では、イベントパターンで指定された全ての属性条件とイベントの属性とが合致か否かが判定される。この属性条件の合致とは、属性値一致条件の場合、属性値一致条件の属性名に対する属性値が、イベントの同じ属性名に対する属性値と合致することであり、また、属性値範囲指定条件の場合、属性値範囲指定条件の属性名に対する属性範囲に、イベントの同じ属性名に対する属性値が含まれることである。
【０００５】
属性条件の合致について、たとえば、図９に示すイベントｅｖ１、及び、図１０に示すイベントパターンｅｐ１を使用して説明する。
まず、イベントパターンｅｐ１で指定されている属性名「装置ＩＤ」に対する属性値“ＩＤ１”が、イベントｅｖ１の属性名「装置ＩＤ」に対する属性値“ＩＤ１”と合致している。また、イベントパターンｅｐ１で指定されている属性名「温度」に対する属性値“３０℃”が、イベントｅｖ１の属性名「温度」に対する属性値“３０℃”と合致している。従って、「図９中のイベントｅｖ１が図１０中のイベントパターンｅｐ１に合致する」との判定結果となる。なお、図１０に示すイベントパターンｅｐ１では、図９に示すイベントｅｖ１に記述される属性のうち、属性名「場所」及び「時刻」に対する属性値は指定されていない。このように、属性値が指定されていない場合は、指定されていない属性値（この場合、属性名「場所」、「時刻」など）が、どのような値でも良いことになる。
【０００６】
この種の関連技術としては、たとえば、非特許文献１に記載されたものがある。
この非特許文献１では、ルールの管理方法及びイベント合致方法を説明するための区間木（Interval Tree ）について記載されている。すなわち、区間木における範囲指定ルールの管理方法では、範囲指定ルール内のある１又は複数の属性（属性名を「属性名Ａ」とする）の属性値を使用して区間木を構築するものとする。また、範囲指定ルールに属性名Ａをもつ属性条件がない場合、属性名Ａの属性値は属性名Ａの属性値が取り得る任意の値で良いことになるため、属性名Ａの属性値範囲指定条件は、「（属性名Ａの取り得る属性値の最小値≦属性名Ａ≦属性名Ａの属性値の取り得る属性値の最大値）」と指定されていることになる。以下の説明では、ルールに属性名Ａをもつ属性値範囲指定条件がない場合、属性名Ａの属性値範囲指定条件は、このように指定されているものとする。
【０００７】
範囲指定ルールがｎ個ある場合、各ルールの属性名Ａをもつ属性値範囲指定条件で指定されている属性値（合計２ｎ個）を取得し、２ｎ個の中央の値をｘ centerとする。次に、ｘ centerによって、ルールを、Ｓ center、Ｓ left、及びＳ right に分類する。Ｓ centerは、属性名Ａをもつ属性値範囲指定条件の属性値の範囲（以降の説明では、「属性値（小）≦属性名Ａ≦属性値（大）」とする）の区間にｘ centerを含むルールの集合である（すなわち、属性値（小）≦ｘ center≦属性値（大））。Ｓ leftは、属性名Ａをもつ属性値範囲指定条件の属性値（大）がｘ centerよりも小さいルールの集合である（すなわち、属性値（小）≦属性値（大）＜ｘ center）。Ｓ right は、属性名Ａをもつ属性値範囲指定条件の属性値（小）がｘ centerよりも大きいルールの集合である（すなわち、ｘ center＜属性値（小）≦属性値（大））。Ｓ leftとＳ right とに属するルール集合は、同様の方式で再帰的に分割していき、Ｓ left及びＳ right がなくなるまで分割を続ける。
【０００８】
このとき、一番初めに生成されたＳ centerをルートノードとして、再帰的に作成されたｘ centerを子ノードとして、２分木にしたものが区間木である。各ノードは、（１）ｘ centerの値、（２）Ｓ leftから再帰的に作成したＳ centerに対応するノードへのポインタ、（３）Ｓ right から再帰的に作成したＳ centerに対応するノードへのポインタ、（４）Ｓ centerに属するルールを属性値（小）で昇順にソートしたリスト、及び、（５）Ｓ centerに属するルールを属性値（大）で昇順にソートしたリストを情報としてもつ。
【０００９】
区間木におけるイベントの合致判定方法では、イベントが発生したとき、同イベントから属性名Ａを含む属性の属性値を取得し、区間木のルートノードに対して、以降の探索処理を行う。属性値がルートノードの保持する（１）の値より小さいとき、（４）のリストを順に調べていき、属性値を含むルールに対して合致判定を行い、合致するルールを全て報告する。属性値を含まないルールに到達すれば直ちに終了し、（２）で指すノードに対して探索処理を行う。属性値が区間木のルートノードの保持する（１）の値以上のとき、（５）のリストを順に調べていき、属性値を含むルールに対して合致判定を行い、合致するルールを全て報告する。属性値を含まないルールに到達すれば直ちに終了し、（３）で指すノードに対して探索処理を行う。また、ｎをイベント処理システムに登録されているルール数、及び、ｍをイベントに合致するルール数とすると、上記区間木を使用した合致判定の処理時間は、Ｏ（ｌｏｇｎ＋ｍ）（Ｏ記法）となる。また、区間木を使用したルール登録・削除の処理時間は、Ｏ（ｎｌｏｇｎ）（Ｏ記法）となる。
【００１０】
また、非特許文献２では、ルールの管理方法及びイベント合致方法を説明するためのデータベースが記載されている。すなわち、リレーショナルデータベース（ＲＤＢ）などのデータベース（ＤＢ）は、データ（ここでは、ルール）をテーブルに登録するとき、データから作成したインデックスをもとに登録する。データを検索するときは、インデックスを使用することにより、検索速度が向上する。このデータベースに登録できるデータは、たとえば「“１０℃”≦温度」のように、１つの属性名に対して１つの属性値である。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】ウィキペディア、ホームページ「区間木」
【非特許文献２】ウィキペディア、ホームページ「データベース」
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記関連技術では、次のような課題があった。
すなわち、非特許文献１では、イベント処理システムに登録されているルール数をｎ、及び、イベントに合致するルール数をｍとすると、区間木を使用した合致判定の処理時間は、Ｏ（ｌｏｇｎ＋ｍ）となり、処理時間がかかるので、合致判定の処理時間を短くする必要があるという課題がある。また、区間木を使用したルール登録・削除の処理時間は、Ｏ（ｎｌｏｇｎ）となり、処理時間がかかるので、ルール登録・削除の処理時間を短くする必要があるという課題がある。
【００１３】
また、特許文献２に記載されたデータベースでは、同データベースに登録できるデータは、「“１０℃”≦温度」のように、１つの属性名に対して１つの属性値であり、この発明における「“１０℃”≦温度、温度≦“３０℃”」のように、１つの属性名に対して２つ以上の属性値を指定することができず、処理方法が異なっている。
【００１４】
この発明は、上述の事情に鑑みてなされたもので、イベント合致判定の処理時間が短くなるイベント処理システム、該システムに用いられるイベント処理方法及びイベント処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、この発明の第１の構成は、人及びモノの状態情報を表すイベントと、前記イベントの通知先に通知するためのイベントの条件を表すイベントパターンとの合致判定を行い、合致した前記イベントを前記通知先に送信するイベント処理システムに係り、複数のルール格納リストを有し、前記イベントパターン、及び、１つ以上の前記イベントパターンに合致したイベントの通知先を含んで構成されているルールを前記複数のルール格納リストに分散して格納するためのルール格納手段と、与えられたルール登録要求データに含まれている前記ルールを、前記ルール格納手段内の前記ルール格納リストに登録するルール登録手段と、イベント処理要求データが与えられたとき、１つの前記ルール格納リストに格納されている前記ルールに対してのみ前記合致判定を行うイベント合致判定手段とから構成されていることを特徴としている。
【００１６】
この発明の第２の構成は、イベント処理プログラムがコンピュータに、人及びモノの状態情報を表すイベントと、前記イベントの通知先に通知するためのイベントの条件を表すイベントパターンとの合致判定を行わせ、合致した前記イベントを前記通知先に送信させるイベント処理方法に係り、前記コンピュータに、複数のルール格納リストを有し、前記イベントパターン、及び、１つ以上の前記イベントパターンに合致したイベントの通知先を含んで構成されているルールを前記複数のルール格納リストに分散して格納するためのルール格納手段を設け、与えられたルール登録要求データに含まれている前記ルールを、前記ルール格納手段内の適切な前記ルール格納リストに登録するルール登録処理と、イベント処理要求データが与えられたとき、１つの前記ルール格納リストに格納されている前記ルールに対してのみ前記合致判定を行うイベント合致判定処理とを行わせることを特徴としている。
【発明の効果】
【００１７】
この発明の構成によれば、イベント合致判定のための処理時間を短縮することができる。
【図面の簡単な説明】
【００１８】
【図１】ルールの例を示す図である。
【図２】この発明の一実施形態であるイベント処理システムの要部の構成を示すブロック図である。
【図３】イベント処理ノード１０内で処理されるデータを示す図である。
【図４】図２中のルール格納部１１の構成を示す図である。
【図５】ルール登録・削除部１２のルール登録処理を説明するフローチャートである。
【図６】ルール登録処理後のルール格納部１１の状態を示す図である。
【図７】イベント処理部１３のイベント処理を説明するフローチャートである。
【図８】データ転送部１４の動作を説明するフローチャートである。
【図９】イベントの例を示す図である。
【図１０】イベントパターンの構成例を示す図である。
【発明を実施するための形態】
【００１９】
上記ルール格納部は、上記ルール格納リストに対するポインタを保持するポインタ保持手段（ポインタ保持テーブル）を有するイベント処理システムを実現する。
【００２０】
また、上記ポインタ保持手段（ポインタ保持テーブル）は、所定のキー集合が分割されてできた部分キー集合が当該ポインタ保持手段（ポインタ保持テーブル）の各要素にあらかじめ割り当てられ、上記ルール登録手段（ルール登録・削除部）は、上記ルールを受信したときに該ルールから１つ以上のキーを生成し、生成したキーを管理する上記ポインタ保持手段（ポインタ保持テーブル）の上記要素が指す上記ルール格納リストにルールを登録する構成とされ、上記イベント合致判定手段（イベント処理部）は、上記イベントを受信したときに該イベントから上記キーを生成し、該キーを管理するポインタ保持テーブルの要素が指す上記ルール格納リスト内の上記ルールと合致判定を行う構成とされている。
【００２１】
また、上記キー集合は、上記ルール又は上記イベントを構成する特定の属性名の属性値が取り得る値から生成されている。また、上記ルール登録手段（ルール登録・削除部）は、与えられたルール削除要求データに含まれているルールを、上記ルール格納手段（ルール格納部）内のルール格納リストから削除する機能も有している。
【００２２】
この発明のイベント処理システムでは、イベント配信者が配信したイベントと、ルール登録者が登録したルールに含まれるイベントパターンとの合致判定が行われ、合致したイベントがイベント受信者に送信される。この場合、イベント配信者とは、検出したイベントを、イベント処理システムに配信する装置、システム、プログラムなどである。また、イベント配信者とは、起きた事象（イベント）を検出する装置（たとえば、携帯端末、ＲＦタグ、センサなど）であり、また、このような装置からイベントに関する情報を受け取って、イベント処理システムにパブリッシュ（publish ）する装置（たとえば、サーバなど）でも良い。
【００２３】
ルールとは、ルール登録者がイベントの通知を要求するときに、イベント処理システムに登録するデータである。この場合、ルールは、上記イベントパターン、及び、１つ以上のイベントパターンに合致したイベントの通知先（イベント受信者）である１つ以上の通知先を含んで構成されている。ルールの中のイベントパターンに１つ以上の属性値範囲指定条件を含むルールを「範囲指定ルール」、及び、含まないルールを「一致ルール」という。なお、ルールでは、イベント処理システムで使用される全属性名の中で指定されていない属性名がある場合、その属性名の属性値は、この属性名が取り得る全属性値を指定することになるため、範囲指定ルールとなる。
【００２４】
図１は、ルールの例を示す図である。
イベント処理システムで使用する属性名を、たとえば、「装置ＩＤ」、「温度」、「場所」、及び「時刻」の４つとすると、図１０に示すように、ルールｒ１は、一致ルールであり、イベントパターンは属性値範囲指定条件を含まない。また、ルールｒ２は、範囲指定ルールであり、イベントパターンが属性値範囲指定条件（“１０℃”≦温度≦“３０℃”）を含み、また、属性名「場所」及び「時刻」が指定されていない。なお、ルールとイベントとの合致判定も、イベント合致判定という。このような合致（マッチ）の場合には、たとえば、「イベントがルールのイベントパターンにマッチする」、「イベントがルールに合致する」などともいう。
【００２５】
ルール登録者は、ルールを指定する装置、システム、プログラムなどであり、イベント処理システムにルールを登録する。イベント受信者（ｒｅｃｖ１，ｒｅｃｖ２）は、イベント処理システムから、イベントを受信する装置、システム、プログラムなどである。また、範囲指定ルールで指定される範囲は、ルールで指定される範囲のごく一部であることを想定している。イベント処理システムを使用する例を、モバイル広告アプリケーションとすると、同イベント処理システムは、ルールで指定されている位置情報に基づいて、ルールを分散管理するものとする。このとき、「任意の範囲」として、たとえば、あるレストランを中心とした直径５００ｍの正方形（０．２５ｋｍ2 ）などが指定されると予想され、指定できる範囲が、たとえば関東領域（３２，４２３／ｋｍ2 ）とすると、ルールで指定される範囲は、全体の（０．２５／３２，４２３＝）０．８×１０(-5) となり、ごく一部である。
【実施形態】
【００２６】
図２は、この発明の一実施形態であるイベント処理システムの要部の構成を示すブロック図である。
この形態のイベント処理システムは、同図に示すように、１つのイベント処理ノード１０から構成され、ルール登録者２１、ルール削除者２２、イベント配信者２３及びイベント受信者２４との間でデータのやりとりを行う。また、イベント処理ノード１０内で処理されるデータは、図３に示すように、ルール登録要求データ、ルール削除要求データ、イベント処理要求データ及びイベント通知要求データの４種類あり、サービス識別子と、イベント又はルールとから構成されている。たとえば、ルール登録要求データは、サービス識別子「ルール登録要求」と、ルールとから構成されている。ルール登録要求データはルール登録者２１から、ルール削除要求データはルール削除者２２から、及び、イベント処理要求データはイベント配信者２３から、それぞれ送出される。また、イベント通知要求データは、イベント受信者２４へ送出される。
【００２７】
このイベント処理システムでは、イベント配信者２３から配信され、人及びモノの状態情報を表すイベントと、ルール登録者２１により登録されたルールに含まれ、上記イベントの通知先であるイベント受信者２４に通知するためのイベントの条件を表すイベントパターンとの合致判定を行い、合致したイベントを上記通知先（イベント受信者２４）に送信する。また、このイベント処理システムは、イベント処理プログラムに基づいて機能するコンピュータで構成されている。
【００２８】
イベント処理ノード１０は、特に、この実施形態では、ルール格納部１１と、ルール登録・削除部１２と、イベント処理部１３と、データ転送部１４とから構成されている。ルール格納部１１は、図示しない複数のルール格納リストを有し、上記イベントパターン、及び、１つ以上のイベントパターンに合致したイベントの通知先（イベント受信者２４）である１つ以上の通知先を含んで構成されているルールを上記複数のルール格納リストに分散して格納するためのものである。ルール登録・削除部１２は、ルール登録者２１からデータ転送部１４を経て与えられたルール登録要求データに含まれているルールを、ルール格納部１１内の適切なルール格納リストに登録する。また、ルール登録・削除部１２は、ルール削除者２２からデータ転送部１４を経て与えられたルール削除要求データに含まれているルールを、ルール格納部１１内のルール格納リストから削除する。イベント処理部１３は、イベント配信者２３からデータ転送部１４を経てイベント処理要求データが与えられたとき、１つの上記ルール格納リストに格納されているルールに対してのみ上記合致判定を行う。
【００２９】
図４は、図２中のルール格納部１１の構成を示す図である。
このルール格納部１１は、図４に示すように、ポインタ保持テーブル１１1 （各要素；ｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］）と、ルール格納リスト１１2 （１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ）とから構成されている。ルール格納リスト１１2 は、複数のルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄを有し、上記イベントパターン、及び、１つ以上の同イベントパターンに合致したイベントの通知先（イベント受信者２４）である１つ以上の通知先を含んで構成されているルールを上記複数のルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄに分散して格納するためのものである。
【００３０】
ポインタ保持テーブル１１1 は、ルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄに対するポインタｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］を保持する。また、ポインタ保持テーブル１１1 は、所定のキー集合が分割されてできた部分キー集合が同ポインタ保持テーブル１１1 のポインタｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］にあらかじめ割り当てられている。この場合、ルール登録・削除部１２は、上記ルールを受信したときに同ルールから１つ以上のキーを生成し、生成したキーを管理するポインタ保持テーブル１１1 のポインタｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］が指すルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄに同ルールを登録する。また、イベント処理部１３は、上記イベントを受信したときに同イベントから上記キーを生成し、同キーを管理するポインタ保持テーブル１１1 のポインタｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］が指すルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ内のルールと合致判定を行う。上記キー集合は、上記ルール又はイベントを構成する特定の属性名の属性値が取り得る値から生成されている。
【００３１】
ルール格納リスト１１2ａ，１１2ｂ，１１2ｃ，１１2ｄからルールを格納するルール格納リストを決定する場合、まず、連続した数値や文字列の集合である「キー空間」を用意する。ここでは、キー空間として、数値を使用することとし、たとえば、キー空間｛０，１，…，３９｝とすると共に、各数値を「キー」とする。このキー空間を、ポインタ保持テーブル１１1 の要素数で等分割し（これを「キー部分空間」という）、ポインタ保持テーブル１１1 の各要素に、キー部分空間をキーの値が小さい順に割り当てる。たとえば、キー空間｛０，１，…，３９｝を図４中のポインタ保持テーブル１１1 の要素数（４）で等分割すると、各要素のｐｔ［０］はキー部分空間｛０，１，…，９｝、ｐｔ［１］はキー部分空間｛１０，１１，…，１９｝、ｐｔ［２］はキー部分空間｛２０，２１，…，２９｝、及び、ｐｔ［３］には、キー部分空間｛３０，３１，…，３９｝が割り当てられる。
【００３２】
次に、ある属性名（たとえば、「属性名Ａ」とする）の属性値を、ルールを格納するルール格納リスト１１2 の決定に使用し、この属性値が取り得る値の集合をキー空間にマッピングする。たとえば、属性名Ａに対する属性値が｛０，１，…，７９｝を取り得るときに、ｋ＝ｆ（ｖ）＝ｖ／２（ｋ；キー、ｖ；属性値）で属性値をキー空間のキーにマッピングする。マッピングする関数（例では、ｆ（ｖ））を用いて、ルールの属性名Ａに対する属性値からキーを求め、このキーを管理するポインタ保持テーブル１１1 が指すルール格納リスト１１2 （１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ）にルールを登録する。
【００３３】
図５は、ルール登録・削除部１２のルール登録処理を説明するフローチャート、図６は、ルール登録処理後のルール格納部１１の状態を示す図、図７は、イベント処理部１３のイベント処理を説明するフローチャート、及び図８が、データ転送部１４の動作を説明するフローチャートである。
これらの図を参照して、この形態のイベント処理システムに用いられるイベント処理方法の処理内容について説明する。
このイベント処理システムでは、イベント処理プログラムがコンピュータに、イベント配信者２３から配信され、人及びモノの状態情報を表すイベントと、ルール登録者２１により登録されたルールに含まれ、イベント受信者２４（イベントの通知先）に通知するためのイベントの条件を表すイベントパターンとの合致判定を行わせ、合致した上記イベントをイベント受信者２４に送信させる。
【００３４】
特に、この実施形態では、上記コンピュータに、上記イベントパターン、及び、１つ以上の上記イベントパターンに合致したイベント受信者２４（イベントの通知先）である１つ以上の「通知先」を含んで構成されているルールを上記複数のルール格納リスト１１2 （１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ）に分散して格納するためのルール格納部１１を設ける。そして、上記コンピュータに、ルール登録者２１からデータ転送部１４を経て与えられたルール登録要求データに含まれている上記ルールを、ルール格納部１１内の適切なルール格納リスト１１2 （１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ）に登録するルール登録処理と、イベント配信者２３からデータ転送部１４を経てイベント処理要求データが与えられたとき、１つの上記ルール格納リストに格納されている上記ルールに対してのみ上記合致判定を行うイベント合致判定処理とを行わせる。
【００３５】
すなわち、ルール登録・削除部１２では、たとえば、ポインタ保持テーブル１１1 の要素数は４、キー空間は｛０，１，…，３９｝、各キーを管理するポインタ保持テーブル１１1 を算出する関数は、ｔ＝ｇ（ｋ）＝ｋ／１０（ｋ；キー、ｔ；キー「ｋ」を管理するポインタ保持テーブル１１1 の要素番号）、キーを作成する属性の属性名をＡ、キーは、属性名Ａを含む属性条件の属性値から作成され、属性名Ａに対応する属性値のとり得る値は｛０，１，…，７９｝、及び、属性値からキー空間へのマッピングが、ｋ＝ｆ（ｖ）＝ｖ／２（ｋ；キー、ｖ；属性値）とする。そして、図５に示すように、ルール登録・削除部１２は、データ転送部１４からルール登録要求データを受信したとき（ステップＡ１）、同ルール登録要求データ内のルールからキー範囲［ｋ ｌ，ｋ ｕ］を作成する（ステップＡ２）。具体的には、キー範囲は、属性名Ａをもつ属性条件が「（ｖ ｌ≦属性名Ａ≦ｖ ｕ）」のとき（「≦」は「＜」でも良い）、ｋ ｌ＝ｆ（ｖ ｌ），ｋ ｕ＝ｆ（ｖ ｕ）とする。
【００３６】
次に、ルール登録・削除部１２では、ｋ ｌを管理するポインタ保持テーブル１１1 のインデックスｉをｉ＝ｇ（ｋ ｌ）により算出し（ステップＡ３）、ｐｔ［ｉ］が指すルール格納リスト１１2 にルールを登録する（ステップＡ４）。次に、ルール登録・削除部１２は、インデックスｉの値をインクリメントし（ステップＡ５）、ｐｔ［ｉ］≦ｋ ｕのとき（ステップＡ６でＹｅｓ）、すなわち、ルールをｐｔ［ｉ］が管理する場合、ｐｔ［ｉ］が指すルール格納リスト１１2 にルールを登録する（ステップＡ４）一方、ｐｔ［ｉ］＞ｋ ｕのとき（ステップＡ６でＮｏ）、ルール登録処理を終了する。
【００３７】
より具体的な例を用いて説明すると、ルール登録・削除部１２が受信したルール登録要求データのルール（「ルールｒ１」とする）のイベントパターンを、たとえば｛（５≦属性名Ａ≦２５），（４≦属性名Ｂ≦１０）｝とする（ステップＡ１）。そして、ルール登録・削除部１２は、属性名Ａを含む属性条件の属性値「６」と「２５」とから、キー範囲［ｋ ｌ，ｌ ｕ］＝［ｆ（６），ｆ（２５）］＝［６／２，２５／２］＝［３，１２］を作成し（ステップＡ２）、キーｋ ｌからインデックスｉ＝ｇ（３）＝０を算出し（ステップＡ３）、ｐｔ［０］が指すルール格納リスト１１2ａにルールを登録する（ステップＡ４）。
【００３８】
この後、ルール登録・削除部１２は、インデックスｉ＝１とし（ステップＡ５）、ｐｔ［１］が管理するキーの最小値＝１０がｋ ｕ（＝１２）より小さいので（ステップＡ６でＹｅｓ）、ｐｔ［１］が指すルール格納リスト１１2ｂにルールを登録する（ステップＡ４）。次に、ルール登録・削除部１２は、インデックスｉ＝２とし（ステップＡ５）、ｐｔ［２］が管理するキーの最小値＝２０がｋ ｕ（＝１２）より大きいので（ステップＡ６でＮｏ）、処理を終了する。この結果、ルール格納部１１では、図６に示すように、ルール格納リスト１１2ａにルールｒ１、及びルール格納リスト１１2ｂにルールｒ１が格納された状態となる。なお、ルール登録・削除部１２によるルール削除処理は、ルール登録処理に対して逆の処理である。
【００３９】
イベント処理部１３では、図７に示すように、データ転送部１４からイベント処理要求データを受信し（ステップＢ１）、イベント処理要求データのイベントから属性名Ａに対応する属性値ｖを取得して、キーｋ＝ｆ（ｖ）を作成する（ステップＢ２）。次に、イベント処理部１３では、キーｋを管理するポインタ保持テーブル１１1 のインデックスｉ＝ｇ（ｋ）を算出し（ステップＢ３）、ｐｔ［ｉ］が指すルール格納リスト１１2 を取得する（ステップＢ４）。そして、イベント処理部１３は、取得したルール格納リスト１１2 内の各ルールに対して合致判定を行い（ステップＢ５）、合致したルール毎にイベント通知要求データを作成してデータ転送部１４に送信する（ステップＢ６）。
【００４０】
より具体的には、ルール格納部１１が、たとえば図６に示す状態とすると、イベント処理部１３は、たとえばイベント｛（属性名Ａ、１０），（属性名Ｂ、５）｝を含むイベント処理要求データを受信したとき（ステップＢ１）、イベントからキーｋ＝ｆ（１０）＝５を生成し（ステップＢ２）、キーｋからインデックスｉ＝ｇ（５）＝０を算出する（ステップＢ３）。イベント処理部１３は、ｐｔ［０］が指すルール格納リスト１１2ａを取得し（ステップＢ４）、同ルール格納リスト１１2ａに格納されているルールｒ１と合致判定を行い、同ルールｒ１がイベントに合致するので、イベント通知要求データを作成してデータ転送部１４に送信する（ステップＢ６）。
【００４１】
データ転送部１４では、図８に示すように、データを受信したとき（ステップＣ１）、データからサービス識別子（サービスＩＤ）を取得し（ステップＣ２）、同サービス識別子（サービスＩＤ）がルール登録要求又はルール削除要求のとき（ステップＣ３がＹｅｓ）、データをルール登録・削除部１２に転送する（ステップＣ４）。また、データ転送部１４は、サービス識別子（サービスＩＤ）がイベント処理要求のとき（ステップＣ５、Ｙｅｓ）、データをイベント処理部１３に転送する（ステップＣ６）。また、データ転送部１４は、サービス識別子（サービスＩＤ）がイベント通知要求のとき（ステップＣ７がＹｅｓ）、データのルール中の通知先を取得し、該当する通知先（イベント受信者２４）にデータを転送する（ステップＣ８）。
【００４２】
このイベント処理システムでは、イベント合致判定処理は、ルール格納リスト１１2 の１つのルール格納リストに格納されているルールに対してのみ行えば良いため、ルール格納リスト１１2 に格納されているルール数をｑとすると、イベント合致判定の処理時間がＯ（ｑ）（Ｏ記法）となり、処理時間が短くなる。また、ルールは、同ルールを管理すべきルール格納リスト１１2 に追加するだけで良く、区間木のように木を作り直す必要がないので、ルール登録の処理時間がＯ（ｐ）（Ｏ記法）（ｐ；ルールが登録されるルール格納リストの数）となり、処理時間が短くなる。この場合、１つのルールは、１つもしくはそれに近い数のルール格納リストにのみ登録されているため、上記ｐは、１もしくはそれに近い数となる。
【００４３】
以上のように、この実施形態では、ルール登録の処理時間及びイベント合致判定の処理時間が短くなるので、最終的にイベント合致判定のための処理時間が短縮される。
【００４４】
以上、この発明の実施形態を図面により詳述してきたが、具体的な構成は同実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更などがあっても、この発明に含まれる。
たとえば、ルール格納リスト１１2 が保持するルールは、ルールに対応するポインタでも良い。また、ルール登録・削除部１２では、図５中のステップＡ２において、ルールからキー範囲［ｋ ｌ，ｋ ｕ］を生成しているが、複数のキー範囲｛［ｋ ｌ1 ，ｋ ｕ1 ］，［ｋ ｌ2 ，ｋ ｕ2 ］，…，［ｋ ｌx ，ｌ ｕx ］｝を生成しても良い。この場合、ステップＡ３からステップＡ６の処理を、各キー範囲に対して行う。また、この発明のイベント処理システムは、イベント処理ノード１０と同様のイベント処理ノードが複数設けられていても良い。
【産業上の利用可能性】
【００４５】
この発明は、イベントデータの処理を行うイベント処理システム全般に適用できる。
【符号の説明】
【００４６】
１０      イベント処理ノード（イベント処理システム）
１１      ルール格納部（ルール格納手段）
１１1       ポインタ保持テーブル（ポインタ保持手段）
１１2       ルール格納リスト（ルール格納手段）
１１2ａ，１１2ｂ，１１2ｃ，１１2ｄ      ルール格納リスト
１２      ルール登録・削除部（ルール登録手段）
１３      イベント処理部（イベント合致判定手段）
１４      データ転送部（イベント処理システムの一部）
ｐｔ［０］，ｐｔ［１］，ｐｔ［２］，ｐｔ［３］      ポインタ保持手段の各要素
【図１】
2012212227.tif 000003
【図２】
2012212227.tif 000004
【図３】
2012212227.tif 000005
【図４】
2012212227.tif 000006
【図５】
2012212227.tif 000007
【図６】
2012212227.tif 000008
【図７】
2012212227.tif 000009
【図８】
2012212227.tif 000010
【図９】
2012212227.tif 000011
【図１０】
2012212227.tif 000012