(57)【要約】      （修正有）【課題】ハイブリッド・イベント処理ネットワーク（ハイブリッドＥＰＮ）を構築する方法、システム、およびコンピュータ・プログラムを提供する。【解決手段】少なくとも１つのイベント処理エージェント（ＥＰＡ）を有するハイブリッド・イベント処理ネットワーク（ＥＰＮ）が、宣言式に定義される第１の組のＥＰＡと、インターフェースを介して実行時に動的に定義される第２の組のＥＰＡとからなる。ハイブリッドＥＰＮを配置することは、ハイブリッドＥＰＮをロードすること、ＥＰＮ構造を構築すること、およびＥＰＮ構造のノードの索引を作成することを含む。ハイブリッドＥＰＮを配置することは、イベント・ソースでのイベント発生に応答して、ハイブリッドＥＰＮ内のイベントを表現すること、イベントに基づいてハイブリッドＥＰＮから通知を受信すること、およびイベント・チャネル内に通知を発行することをさらに含む。【選択図】図１
2011113566.tif 000002
【特許請求の範囲】
【請求項１】
イベント処理エージェントを含むイベント処理ネットワークを構築する方法であって、
第１の組のイベント処理エージェントを宣言により構成するステップと、
第２の組のイベント処理エージェントを動的に構成するステップと
を含み、得られる前記第１の組のイベント処理エージェントと前記第２の組のイベント処理エージェントの組合せが、ハイブリッド・イベント処理ネットワークを形成する方法。
【請求項２】
前記第２の組のイベント処理エージェントを実行時に動的に修正するインターフェースを設けるステップをさらに含む請求項１に記載の方法。
【請求項３】
前記ハイブリッド・イベント処理ネットワークをロードするステップをさらに含む請求項１に記載の方法。
【請求項４】
前記ハイブリッド・イベント処理ネットワークをロードするステップが、イベント・ルータで処理され、前記イベント・ルータがイベント・ルータ・インターフェースを備え、前記イベント・ルータが、
前記ハイブリッド・イベント処理ネットワークのイベント処理ネットワーク構造を構築し、
前記ハイブリッド・イベント処理ネットワークのイベント処理エージェントについて索引を作成する
ように構成される請求項３に記載の方法。
【請求項５】
前記イベント・ルータ・インターフェースが、
前記第２の組のイベント処理エージェントを実行時に動的に定義するように構成される請求項４に記載の方法。
【請求項６】
イベント処理コンテキストを定義するステップであって、前記イベント処理コンテキストが、前記ハイブリッド・イベント処理ネットワークの前記イベント処理エージェントへのポインタを含むステップ
をさらに含む請求項１に記載の方法。
【請求項７】
前記ハイブリッド・イベント処理ネットワークの少なくとも１つのイベント処理エージェントについてイベント処理エージェント・インターフェースを定義するステップであって、前記イベント処理エージェント・インターフェースが、前記ハイブリッド・イベント処理ネットワークのイベント・フローを修正するように構成されるステップ
をさらに含む請求項１に記載の方法。
【請求項８】
イベント処理エージェントを含むイベント処理ネットワーク内のイベント処理のための方法であって、
イベント・ソースでのイベント発生に応答して、ハイブリッド・イベント処理ネットワーク内の前記イベントを表現するステップと、
前記イベントに基づいて前記ハイブリッド・イベント処理ネットワークから通知を受信するステップと、
イベント・チャネル内に前記通知を発行するステップと
を含む方法。
【請求項９】
第１の組のイベント処理エージェントを宣言式に構成するステップと、
第２の組のイベント処理エージェントを実行時に動的に構成するステップと
をさらに含む請求項８に記載の方法。
【請求項１０】
前記通知が、イベント通知およびイベント処理コンテキストのうちの少なくとも１つを含む請求項８に記載の方法。
【請求項１１】
前記イベント処理コンテキストが、前記ハイブリッド・イベント処理ネットワークのイベント処理エージェントへのポインタを有する請求項１０に記載の方法。
【請求項１２】
前記ハイブリッド・イベント処理ネットワークをイベント・ルータでロードするステップと、
イベント処理ネットワーク構造を前記イベント・ルータで構築するステップと、
前記ハイブリッド・イベント処理ネットワークの前記イベント処理エージェントに関する索引を前記イベント・ルータで作成するステップと
をさらに含む請求項１１に記載の方法。
【請求項１３】
イベント・ルータ・インターフェースを介して前記第２の組のイベント処理エージェントを実行時に動的に修正するステップ
をさらに含む請求項１２に記載の方法。
【請求項１４】
前記ハイブリッド・イベント処理ネットワークの少なくとも１つのイベント処理エージェントについてイベント処理エージェント・インターフェースを定義するステップであって、前記イベント処理エージェント・インターフェースが、前記ハイブリッド・イベント処理ネットワークのイベント・フローを修正するように構成されるステップ
をさらに含む請求項１３に記載の方法。
【請求項１５】
前記ハイブリッド・イベント処理ネットワーク内で受信される前記イベントを伝播するステップと、
前記ハイブリッド・イベント処理ネットワーク内の前記イベントに関連する後続のイベント処理エージェントを求めるステップと、
前記ハイブリッド・イベント処理ネットワークの最後の要素に達するまで、前記ハイブリッド・イベント処理ネットワーク内の前記後続のイベント処理エージェントに前記イベントを伝播するステップと
をさらに含む請求項１４に記載の方法。
【請求項１６】
イベント処理エージェントを有するイベント処理ネットワークであって、
宣言式に構成された第１の組のイベント処理エージェントと、
実行時に動的に修正されるように構成された第２の組のイベント処理エージェントと
を備え、得られる前記第１の組のイベント処理エージェントと前記第２の組のイベント処理エージェントの組合せが、ハイブリッド・イベント処理ネットワークを形成するイベント処理ネットワーク。
【請求項１７】
前記ハイブリッド・イベント処理ネットワークをロードし、
イベント処理ネットワーク構造を構築し、
前記ハイブリッド・イベント処理ネットワークのイベント処理エージェントについて索引を作成するように構成されるイベント・ルータと、
前記第２の組のイベント処理エージェントを実行時に動的に修正するように構成されるイベント・ルータ・インターフェースと、
前記イベント処理エージェントへのポインタを含むように構成されるイベント処理コンテキストと、
前記ハイブリッド・イベント処理ネットワークの少なくとも１つのイベント処理エージェントについてのイベント処理エージェント・インターフェースと
をさらに備える請求項１６に記載のイベント処理ネットワーク。
【請求項１８】
イベント処理ネットワークを構築する方法を実施するためにデジタル処理機器で実行可能な機械可読命令のプログラムを有形に具体化する記憶媒体であって、前記イベント処理ネットワークがイベント処理エージェントを含み、前記機械可読命令が、
第１の組のイベント処理エージェントを宣言式に定義し、
第２の組のイベント処理エージェントを動的に定義する
ように構成され、得られる前記第１の組のイベント処理エージェントと前記第２の組のイベント処理エージェントの組合せが、ハイブリッド・イベント処理ネットワークを形成する記憶媒体。
【請求項１９】
ハイブリッド・イベント処理ネットワークをロードし、
イベント処理ネットワーク構造を構築し、
前記ハイブリッド・イベント処理ネットワークのイベント処理エージェントについて索引を作成し、
前記第２の組のイベント処理エージェントを実行時に動的に修正する
ように構成された機械可読命令をさらに含む請求項１８に記載の記憶媒体。
【請求項２０】
イベント・ソースでのイベント発生に応答して、ハイブリッド・イベント処理ネットワーク内の前記イベントを表現し、
前記イベントに基づいて前記ハイブリッド・イベント処理ネットワークから通知を受信し、
イベント・チャネル内に前記通知を発行し、
前記ハイブリッド・イベント処理ネットワーク内で受信される前記イベントを伝播し、
前記ハイブリッド・イベント処理ネットワーク内の前記イベントに関連する後続のイベント処理エージェントを求め、
前記ハイブリッド・イベント処理ネットワークの最後の要素に達するまで、前記ハイブリッド・イベント処理ネットワーク内の前記後続のイベント処理エージェントに前記イベントを伝播する
ように構成された機械可読命令をさらに含む請求項１９に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２００９年１１月２３日出願の「Event Processing」という名称の出願第１２／６２３５９５号、整理番号ＩＮ９２００８０１７７ＵＳ１に関連する。
【背景技術】
【０００２】
イベント・ドリブン（ＥＤ）システムは、分離・アーキテクチャに従うことにより、イベントを感知し、イベントに応答することができる。イベント処理ネットワーク（ＥＰＮ）は、ＥＤシステムの実行の代表的なものである。ＥＰＮは、いくつかのイベントの複雑なパターン、イベント相関および抽象化、イベント階層、および因果関係、メンバーシップ、タイミングなどのイベント間の関係、およびイベント・ドリブン・プロセスの検出などの技法を使用する。
【０００３】
通常、ＥＰＮは、通信チャネルによって相互接続された１組のイベント処理エージェント（ＥＰＡ）またはノードからなる。ＥＰＮは、こうしたビジネスの必要に基づいてＥＰＡ間の動的経路を作成および選択することによってイベント処理を実行する。イベントのプロデューサが１つだけあり、イベントのレシーバが１つだけある場合、ＥＰＡ間の経路の識別は自明である。イベント処理要件に基づいて、ＥＰＮを動的に修正する必要がある場合、問題がより多く伴う。所与のノードでのルーティング決定は、イベント情報、ノードでの処理結果、または詳細について例えばイベント・レジストリやリポジトリなどの外部リソースを調べること、あるいはそれらの組合せに基づいて行われる。
【０００４】
典型的なＥＤシステムの分離・アーキテクチャでは、イベント・プロデューサは、イベント処理エージェントまたはイベント・コンシューマについての事前の知識を持たない。通常、１組のＥＰＡからなるＥＰＮの動的関連付けは、イベントがＥＰＮに到着するか或いはイベントがＥＰＮで受信されたことに応じて、行うことができる。何らかの特定のイベントによって取得されるルートは、イベントのタイプ、イベントに対応するコンテンツ、およびその関連メタデータに依存する。ＥＰＮに関与する各ＥＰＡは、実行時にＥＰＡがＥＰＮ内部で起動されるシーケンスを変更することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第１２／６２３５９５号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、ハイブリッド・イベント処理ネットワーク（ハイブリッドＥＰＮ）を構築する方法、システム、およびコンピュータ・プログラムに関する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によれば、ハイブリッドＥＰＮを構築する方法が開示される。ハイブリッドＥＰＮは、少なくとも１つのイベント処理エージェント（ＥＰＡ）を有する。
【０００８】
ハイブリッドＥＰＮでは、第１の組のＥＰＡが宣言により定義され、第２の組のＥＰＡがインターフェースを介して実行時に動的に定義される。
【０００９】
別の実施形態によれば、イベント・ルータ（ＥＲ）が定義され、ＥＲはＥＲインターフェースも含む。
【００１０】
さらに別の実施形態によれば、イベント処理コンテキスト（ＥＰＣ）が定義される。ＥＰＣは、ハイブリッドＥＰＮのＥＰＡへのポインタを含む。
【００１１】
本発明の別の実施形態によれば、ハイブリッドＥＰＮの少なくとも１つのＥＰＡについてＥＰＡインターフェースが定義される。
【００１２】
本発明の別の実施形態による、ハイブリッドＥＰＮをデプロイする方法は、ハイブリッドＥＰＮをロードするステップと、ＥＰＮ構造を構築するステップと、ＥＰＮ構造のノードの索引を作成するステップとを含む。当該方法は、イベント・ソースでのイベント発生に応答してハイブリッドＥＰＮ内のイベントを表現するステップと、イベントに基づいてハイブリッドＥＰＮから通知を受信するステップと、イベント・チャネル内に通知を発行するステップとをさらに含む。ハイブリッドＥＰＮをデプロイする方法は、ハイブリッドＥＰＮ内で受信されたイベントを伝播するステップと、ハイブリッドＥＰＮ内のイベントに関連する後続のＥＰＡを求めるステップと、ハイブリッドＥＰＮの最後の要素に達するまで、ハイブリッドＥＰＮ内の後続のＥＰＡにイベントを伝播するステップとをさらに含む。
【００１３】
本発明のさらに別の実施形態によれば、イベント処理ネットワーク（ＥＰＮ）は、宣言により構成された第１の組のＥＰＡと、実行時に動的に修正されるように構成された第２の組のＥＰＡとを含み、得られる第１の組のＥＰＡと第２の組のＥＰＡの組合せが、ハイブリッドＥＰＮを形成する。
【００１４】
本発明の別の実施形態によれば、ハイブリッドＥＰＮは、イベント・ルータ（ＥＲ）と、第２の組のＥＰＡを実行時に動的に修正するように構成されたＥＲインターフェースと、ＥＰＡへのポインタを含むように構成されたイベント処理コンテキスト（ＥＰＣ）と、ハイブリッドＥＰＮの少なくとも１つのＥＰＡのためのＥＰＡインターフェースとをさらに含む。
【００１５】
本発明の別の態様は、ハイブリッド・イベント処理ネットワーク（ＥＰＮ）を構築するコンピュータ・プログラムを開示する。ハイブリッドＥＰＮは少なくとも１つのイベント処理エージェント（ＥＰＡ）を有し、ハイブリッドＥＰＮは、宣言により定義される第１の組のＥＰＡと、インターフェースを介して実行時に動的に定義される第２の組のＥＰＡとからなる。
【００１６】
本発明のさらに別の態様は、イベント処理のためのハイブリッドＥＰＮの配置を開示する。他の態様および実施形態も開示される。
【００１７】
以下の略図を参照しながら、本発明の実施形態を以下で例として詳細に説明する。
【図面の簡単な説明】
【００１８】
【図１】イベント処理ネットワーク（ＥＰＮ）の概略の例示的実施形態を示す図である。
【図２】図１で記述されるＥＰＮのツリー構造の例示的実施形態を示す図である。
【図３】図１で記述されるＥＰＮに対応するＸＭＬ定義の例示的実施形態を示す図である。
【図４】図１で記述されるＥＰＮに対応するＸＭＬ定義の例示的実施形態を示す図である。
【図５】ハイブリッドＥＰＮを使用するイベント処理システムの詳細な概略の例示的実施形態を示す図である。
【図６】ハイブリッドＥＰＮの作成の流れ図の例示的実施形態を示す図である。
【図７】イベントを実行時に動的にルーティングするようにハイブリッドＥＰＮを配置する流れ図の例示的実施形態を示す図であり、例示的ハイブリッドＥＰＮが図５に従って構築されている。
【発明を実施するための形態】
【００１９】
本発明の実施形態は、分離され、分散された方式で、イベント処理のためにハイブリッドＥＰＮを構築および配置する方法およびシステムを開示する。ハイブリッドＥＰＮは、ＥＤシステムのためのイベント処理を実施するように構成される。
【００２０】
イベント処理は、イベントに関して実施されるコンピューティングのプロセスである。イベント処理は、イベントの読取り、アクションを実施することによってイベントに応答すること、イベントの修正、イベントの作成、イベントの破棄などの操作を含むことができる。イベントの処理は、様々なカテゴリに分類することができる。イベント処理の例示的実施形態は「単純イベント処理」でよく、単純イベント処理は、イベント変換、集約、スプリッタ、情報付与（enrichment）、フィルタリングなどを含む。イベント処理の別の例示的実施形態は「複合イベント処理」でよく、イベント間の関係、例えばイベント集約（イベントのパターンが上位レベルのイベントを示唆する）、因果関係（あるイベントが別のイベントによって引き起こされる）、およびパターン検出を含む。イベント処理のさらに別の例示的実施形態は、インタイム意思決定を可能にする、企業内の情報および企業を取り巻く情報のリアル・タイム・フローに関する「ストリーム・イベント処理」である。「インテリジェント・イベント処理」と呼ばれるイベント処理のタイプは通常、イベント履歴および確率に基づいて様々なタイプの推論および予測に対処する。
【００２１】
例えば限定はしないが金融市場、電気通信、医療、自動車、化学および石油、エネルギー、国防、ならびに小売および流通を含む複数の産業分野からのイベント処理要件の分析によれば、典型的な解決策として、さまざまなタイプのイベントを混合処理する能力が必要とされることが示される。こうした処理能力は、さまざまなソフトウェア・コンポーネントのセットによって提供され、各コンポーネントは情報技術（ＩＴ）環境内で分散していても良い。
【００２２】
ハイブリッドＥＰＮは、部分的に静的に（宣言によって）、部分的に動的に（プログラムされることにより）定義することができ、その中で、ノードは、あるイベントの処理経路を、当該イベント関する処理要件に基づいて、実行時に変更することができる。
【００２３】
静的ＥＰＮでは、実行時にフローを変更することに関し柔軟性が低い。一方、動的ＥＰＮで構築されたＥＤシステムでは、開発者は実行時にプログラムによってＥＰＡを関連付けることができるが、その結果、最も基本的なネットワークであっても開発者は関連付けのためのコードを実装する必要があり、開発者にとってプログラミングの複雑さが増すだろう。必要に応じて実行時に修正することができ、プログラミング負荷を最適化することもできる、静的でも動的でもあるハイブリッドＥＰＮを構築する周知の方法はない。
【００２４】
プログラミング負荷を最適化するために、本発明のいくつかの実施形態は、開発者が宣言によりＥＰＮを定義することを可能にし、次いでユーザがインターフェースを介して実行時にＥＰＮを変更することを可能にする。インターフェースの一例は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）でよい。この機構は汎用的であり、特定のタイプのイベント・モデリングに縛られないので、本発明のいくつかの実施形態は、イベントに対処し、複数の製品にわたって普及している複数の処理能力を活用するために、業界に依存しないイベント・モデリング（industry agnostic event modeling）および実行環境（イベント・ミドルウェア）を生み出す。システムは、複数のイベント・ソース／ストリーム、複数のイベント・タイプ表現、さらにはイベントに対するルール・ドリブン反応をサポートすることができる。
【００２５】
本発明のいくつかの実施形態は、複数の処理エージェントにわたるイベント処理の決定性完了（deterministic completion）を実装することができる。また、実行時に、関与するノードによって、イベント処理ネットワークを変更することもできる。イベントを任意の処理エージェントにルーティングする、このような動的ルーティング能力は、イベント情報、ノードでの処理結果、または詳細に関しイベント・レジストリやリポジトリのような外部リソース（メタデータ）への問い合わせ、あるいはそれらの組合せに基づく。
【００２６】
本発明のある実施形態の様々な構成要素が、以下で定義される。
【００２７】
イベント処理ネットワーク（ＥＰＮ）−ＥＰＮがイベント処理エージェントのネットワークを定義する。ＥＰＮは、正式にはノードおよびエッジの接続されたグラフとして、ＥＰＮ：＝｛Ｎ，Ｅ｝と表現される。ただし「Ｎ」は、グラフ内のノード（頂点）を表し、「Ｅ」はグラフ内のエッジを表す。さらに、グラフ内のノードＮは、Ｎ：＝｛Ｐ，Ａ，Ｃ｝と表すことができる。ただし「Ｐ」はイベント・プロデューサ（ソース）であり、「Ａ」はイベント処理エージェントであり、「Ｃ」はイベント・コンシューマ（シンク）である。グラフ内のエッジＥは、ソースまたは処理エージェントをコンシューマまたは別の処理エージェントに接続する順序付き対である、Ｅ：＝｛（ｘ，ｙ）｜ｘ  χ  Ｓ，Ｐ；ｙ  χ  Ｐ，Ｃ｝と表すことができる。
【００２８】
イベント・プロデューサ（ソース）−イベント・プロデューサは、現実世界の実体、例えばイベントを生成するイベント・ソースを表す。
【００２９】
イベント処理エージェント（ＥＰＡ）−ＥＰＡは、イベントをそれと共に処理すべきであるビジネスロジックを定義する。ＥＰＡは通常、指定された論理／規則に基づいてイベントを処理し、新しいイベントを生成することもできる。
【００３０】
イベント・コンシューマ−イベント・コンシューマは、イベントを消費し、イベントに対するアクションを実施する現実世界の実体をモデル化する。
【００３１】
イベント・チャネル−イベント・チャネル（イベント・トピックとも呼ばれる）は、イベント・プロデューサから種々のＥＰＡへ、最終的にはイベント・コンシューマへの、特定のタイプのイベントのためのトランスポートである。
【００３２】
イベント処理コンテキスト（ＥＰＣ）−ＥＰＣは、その中でイベントが処理されるべきコンテキストである。ＥＰＣはコンテナによって維持され、使用される。各イベントについて、固有のＥＰＣを作成することができ、イベントの全ライフ・サイクルを通じてこの固有のＥＰＣをイベントと関連付けることができる。任意の処理ノードは、イベント処理コンテキスト内に情報を格納することができ、イベント処理コンテキスト内の情報にアクセスすることができる。
【００３３】
イベント・メタデータ−イベント・メタデータは、イベント・プロデューサ、処理エージェント、および加入者に対して利用可能にされるイベント・タイプ指定およびイベント処理規則からなる。
【００３４】
イベント・ルータ（ＥＲ）−イベント・ルータは通常、ＥＰＮ定義をロードし、ＥＰＮ定義に従ってイベントをルーティングする任を担うソフトウェア・コンポーネントである。イベント・ルータ（ＥＲインターフェース）のインターフェースが、イベントのルーティングのために使用される。
【００３５】
図１は、イベント処理ネットワーク（ＥＰＮ）の全体的概略１００の例示的実施形態を示す。ＥＰＮは、イベント・プロデューサＰ  １０２、イベント・コンシューマＣ  １２２、およびこの場合はブロック１０３内に表されている９個のＥＰＡ  Ａ１１０４からＡ９１２０として例示的に示されているいつかの例示的イベント処理エージェントＥＰＡからなる。ＥＰＡの数が例示的実施形態に示されるような９個だけに制限されないことは当業者には明らかであるはずである。Ｐ１０２からＣ１２２への矢印の向きは、イベントの流れを示す。ノードＡｉの後に複数のＥＰＡがあるとき、例えばＡ１１０４の後にＡ２１０６およびＡ３１１８があるとき、Ａｉの後に実行されるガード条件がある可能性があり、この評価の結果に基づいて、イベントが後続のノードのうちの１つにルーティングされることを意味する。図１のＡ８１１６からＡ３１１８の間の点線は、ユーザが実行時に条件付きでＡ８１１６からＡ３１１８にイベントをルーティングすることを必要としていることを示す。イベントのこのルーティングは通常、ＥＲインターフェースでサポートされる。
【００３６】
図２は、図１に記述されるＥＰＮ１００のツリー構造２００を示すＥＰＮ構造の例示的実施形態を示す。ツリー構造２００は、図１で定義されるＥＰＮの静的部分に対応する。ツリー構造２００は、ルート・ノード（Ｒ）２０２、無条件実行ノード（Ｕ）２０４、２１２、および条件付き実行ノード（Ｃ）２０８、２１８からなることができる。図１のＥＰＮ１００のＥＰＡに対応する９個のノードＡｉ（２０６、２１６、２１４、２２４、２２６、２２８、２２０、２２２、２１０）が、円で表される。ツリー構造２００を横断する例示的方法では、標準レフト・ファースト・アルゴリズム（modified standard left first algorithm）を変形して使用することができる。ツリー横断のためのアルゴリズムは、条件の評価に基づいて、ツリー構造内の単一の子ノードだけを訪問し、ＥＰＮで指定されるＥＰＡのシーケンスを得ることができるような方式で、条件付きノードで修正することができる。本明細書で定義されるツリー構造２００は図１のＥＰＮ１００と同等であることを当業者は理解されよう。
【００３７】
図３及び図４は、図１で記述されるＥＰＮに対応する例示的ＸＭＬ定義を示す。開発者がＥＰＮを手動で、または適切なツールを使用することによって定義するのを援助するために、ＸＭＬスキーマが作成される。スキーマは、イベント・タイプ、ルーティング条件、処理エージェント、必要なアクションなどのパラメータをはっきりと示す。
【００３８】
図５は、前述の本発明の様々な実施形態を実装するのに使用することのできるコンピュータ・システム４００のブロック図の例示的実施形態である。ある実施形態では、コンピュータ・システム４００を図１のハイブリッドＥＰＮ１００として使用することができる。コンピュータ・システム４００はプロセッサ４０４を含む。図４は単一のプロセッサを示すが、必要に応じて複数のプロセッサを含めることができることを当業者は理解されよう。プロセッサ４０４が通信インフラストラクチャ４０２（例えば、通信バス、クロスオーバ・バー、またはネットワーク）に接続される。様々なソフトウェア実施形態がこの例示的コンピュータ・システムに関して説明される。この説明を読んだ後に、他のコンピュータ・システムまたはコンピュータ・アーキテクチャ、あるいはその両方を使用して本発明をどのように実装するかが当業者には明らかとなるであろう。
【００３９】
例示的コンピュータ・システム４００は、ディスプレイ・ユニット４１０上に表示するために通信インフラストラクチャ４０２（またはフレーム・バッファ、図示せず）からグラフィックス、テキスト、および他のデータを転送するように構成されたディスプレイ・インターフェース４０８を含むことができる。コンピュータ・システム４００はまた、ランダム・アクセス・メモリ（ＲＡＭ）でよいメイン・メモリ４０６をも含み、二次メモリ４１２をも含むことができる。二次メモリ４１２は、例えばハード・ディスク・ドライブ４１４、またはフロッピィ・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブなどを表す取外し可能ストレージ・ドライブ４１６、あるいはその両方を含むことができる。取外し可能ストレージ・ドライブ４１６は、当業者には周知の方式で、取外し可能ストレージ・ユニット４１８から読み取り、または取外し可能ストレージ・ユニット４１８に書き込み、あるいはその両方を行う。取外し可能ストレージ・ユニット４１８は、取外し可能ストレージ・ドライブ４１６で読み取られ、書き込まれる、例えばフロッピィ・ディスク、磁気テープ、光ディスクなどを表す。理解するであろうが、取外し可能ストレージ・ユニット４１８は、コンピュータ・ソフトウェアまたはデータあるいはその両方が格納されたコンピュータ使用可能記憶媒体を含む。
【００４０】
例示的実施形態では、二次メモリ４１２は、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードすることを可能にする他の類似の手段を含むことができる。そのような手段は、例えば取外し可能ストレージ・ユニット４２２およびインターフェース４２０を含むことができる。そのようなものの例は、（ビデオ・ゲーム装置で見られるような）プログラム・カートリッジおよびカートリッジ・インターフェース、取外し可能メモリ・チップ（ＥＰＲＯＭ、ＰＲＯＭなど）および関連ソケット、ならびに取外し可能ストレージ・ユニット４２２からコンピュータ・システム４００にソフトウェアおよびデータを転送することを可能にする他の取外し可能ストレージ・ユニット４２２およびインターフェース４２０を含むことができる。
【００４１】
コンピュータ・システム４００はまた、通信インターフェース４２４をも含むことができる。通信インターフェース４２４は、コンピュータ・システムと外部装置との間でソフトウェアおよびデータを転送することを可能にする。通信インターフェース４２４の例は、モデム、ネットワーク・インターフェース（イーサネット（Ｒ）・カードなど）、通信ポート、ＰＣＭＣＩＡスロットおよびカードなどを含むことができる。通信インターフェース４２４を介して転送されるソフトウェアおよびデータは信号の形態であり、信号は、例えば電子信号、電磁信号、光信号、または通信インターフェース４２４で受信することのできる他の信号でよい。こうした信号は、通信経路（すなわちチャネル）４２６を介して通信インターフェース４２４に供給される。チャネル４２６は信号を搬送し、ワイヤもしくはケーブル、光ファイバ、電話線、携帯電話リンク、ＲＦリンク、または他の通信チャネル、あるいはそれらの組合せを使用して実装することができる。
【００４２】
本文書では、「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ可読媒体」という用語が、メイン・メモリ４０６および二次メモリ４１２、取外し可能ストレージ・ドライブ４１６、ハード・ディスク・ドライブ４１４内に設置されたハード・ディスクなどの媒体を全般的に指すのに用いられる。こうしたコンピュータ・プログラム製品は、コンピュータ・システムにソフトウェアを提供する手段である。コンピュータ可読媒体は、コンピュータ・システムがコンピュータ可読媒体からデータ、命令、メッセージまたはメッセージ・パケット、および他のコンピュータ可読情報を読み取ることを可能にする。コンピュータ可読媒体は、例えば、フロッピィ、ＲＯＭ、フラッシュ・メモリ、ディスク・ドライブ・メモリ、ＣＤ−ＲＯＭ、他の永続ストレージなどの不揮発性メモリを含むことができる。コンピュータ可読媒体を使用して、例えば、コンピュータ・システム間でデータやコンピュータ命令などの情報を移送することができる。さらに、コンピュータ可読媒体は、コンピュータがそのようなコンピュータ可読情報を読み取ることを可能にすることができる。
【００４３】
コンピュータ・プログラム（本明細書ではコンピュータ制御論理とも呼ばれる）が、メイン・メモリ４０６または二次メモリ４１２あるいはその両方に格納される。コンピュータ・プログラムは、通信インターフェース４２４を介して受け取ることもできる。そのようなコンピュータ・プログラムは、実行されたときに、コンピュータ・システムが本明細書で論じられる本発明の例示的実施形態の特徴を実施することを可能にすることができる。具体的には、コンピュータ・プログラムは、実行されたときに、プロセッサ４０４がコンピュータ・システム４００の特徴を実施することを可能にする。したがって、そのようなコンピュータ・プログラムは、コンピュータ・システムのコントローラを表す。
【００４４】
図６は、図１に示されるハイブリッドＥＰＮ１００の作成の流れ図５００の例示的実施形態を示す。ステップ５０２では、第１の組のＥＰＡが宣言によりに定義され、第２の組のＥＰＡが動的に定義される。ハイブリッドＥＰＮ１００の作成はまた、実行時に第２の組のＥＰＡを動的に変更するインターフェースを作成することもさらに含む。ハイブリッドＥＰＮの静的部分（宣言により定義）および動的部分（プログラムにより定義）が識別されると、ステップ５０４では、ハイブリッドＥＰＮがイベント・ルータ（ＥＲ）によってロードされる。ステップ５０６では、ＥＲがハイブリッドＥＰＮのＥＰＮ構造、例えばツリー構造をさらに構築し、一実施形態では、ハイブリッドＥＰＮのＥＰＡに関する索引を作成することを含む。ステップ５０８では、ＥＲインターフェースを使用して、第２の組のＥＰＡが実行時に動的に定義される。ステップ５１０では、ＥＰＣが定義される。このＥＰＣは、ハイブリッドＥＰＮのＥＰＡへのポインタを含む。ステップ５１２では、ハイブリッドＥＰＮの少なくとも１つのＥＰＡに関するＥＰＡインターフェースが定義される。ＥＰＡインターフェースは、ハイブリッドＥＰＮのイベント・フローを変更するように構成される。ステップ５１２では、ハイブリッドＥＰＮをイベント処理のために使用する準備ができている。
【００４５】
図７は、図６のステップ５１２の終わりに構築されたハイブリッドＥＰＮを、具体的には一実施形態においてはそのハイブリッドＥＰＮをイベント処理のために使用する準備ができた時点でデプロイする流れ図６００の例示的実施形態を示す。ハイブリッドＥＰＮは、イベントを実行時に動的にルーティングするのに使用される。例えばＥＰＮを定義中にユーザによって指定される固有識別子による任意のノードの識別を容易にし、その特定のノードにイベントをルーティングするために、ＥＲは、ＥＰＡの固有識別子に基づいてツリー内のノードの索引も作成し、ＥＰＡの固有識別子は、ＥＰＮをロードし、ＥＰＮをツリー構造に変換している間にＥＲによって準備される。この索引は、ＥＲと共に利用可能である。
【００４６】
ステップ６０１は、ハイブリッドＥＰＮを使用する準備ができていることを示す。物理イベントがイベント・ソースで生じたとき、ステップ６０２では、イベント・プロデューサがイベント・ソースでのイベント発生を検出し、抽象化する。ステップ６０４では、イベント・プロデューサがイベントを表現し、６０３を介してイベントをイベント・ファクトリ６０６に通信する。さらにステップ６０４では、イベント・プロデューサが、６０５を介してイベント・ファクトリ６０６からイベント通知６０７を受信する。イベント通知６０７は、それ自体の中にイベント情報を包む。イベント・ファクトリ６０６はＥＰＣも生成する。ＥＰＣは、所与のイベントについて固有であり、イベントのライフ・サイクル全体の間、イベントと関連付けられたままとなる。ＥＰＣはまた、イベントを処理するのに必要な次のＥＰＡ（後続のＥＰＡ）へのポインタをも有する。
【００４７】
当初、ポインタは設定されない。ＥＰＣが作成されるとき、このポインタの値がヌルに設定される。ステップ６０８では、イベント・プロデューサが、所与のイベント・タイプについてイベント通知６０７をイベント・チャネル内に発行する。次いで、イベント・チャネルは、関連するＥＲにイベントを転送する。ステップ６１０では、イベントがハイブリッドＥＰＮ内で伝播される。ステップ６１２では、ハイブリッドＥＰＮ内のイベントに関連する後続のＥＰＡが求められる。ＥＲは、ＥＰＣと共にチェックし、現ステージでイベントを処理するための後続のＥＰＡを見つける。
【００４８】
例示的実施形態では、ステップ６１２でのいくつかの条件の処理が以下のように記述される。
Ａ．後続のＥＰＡへのポインタがヌルである場合、ツリー構造のルート要素へのポインタが設定され、次いでイベントがチャネルにプッシュされる。そうでない場合、
Ｂ．後続のＥＰＡへのポインタがヌルではない場合、ツリー構造内のノードのタイプをチェックする。
ｉ．前のＥＰＡがコンテキスト中のポインタを（上書きＡＰＩを使用して）上書きした場合、任意のループを中断し、イベントをチャネルにプッシュする。そうでない場合、
ｉｉ．ノードがツリー構造の非リーフ・ノードである場合、この非リーフ・ノードが条件付きノードであるか、それとも無条件ノードであるかを判定する。
ａ．非リーフ・ノードが条件付きノードである場合、条件を実行し、得られるＥＰＡへのポインタを設定し、チャネルにイベントをプッシュする。
ｂ．非リーフ・ノードが無条件ノードである場合、左から右への各子要素について、子要素へのポインタを設定し、イベントをチャネルにプッシュする。そうでない場合、
ｉｉｉ．ノードがリーフ・ノードである場合、そのＥＰＡにイベントをルーティングする。ＥＰＡがルーティング経路を修正する必要がある場合、ＥＰＡは、ＥＲの上書きＡＰＩを起動することができる。
【００４９】
ステップ６１２の論理を使用して後続のＥＰＡを識別したので、ステップ６１４では、チェックが行われ、ＥＰＮ内の最後の要素（イベント・コンシューマ）に達したかどうかが判定される。ステップ６１２での後続のＥＰＡがＥＰＮ内の最後の要素（イベント・コンシューマ）である場合、ステップ６１６は、図１のイベント・コンシューマ１２２がイベントを消費し、イベントに関するアクションを実施することを示す。後続のＥＰＡが図１のイベント・コンシューマ１２２ではない場合、ステップ６１０で記述されるように、イベントがさらにハイブリッドＥＰＮの後続のＥＰＡに伝播される。
【００５０】
本発明の一実施形態はさらに、上記で示され詳細に説明された様々な実施形態で説明された、ＥＰＡを含むＥＰＮを構築する方法を実施する機械可読命令のプログラムを有形に具体化する記憶媒体を提供する。
【００５１】
本発明の一実施形態では、２つのＥＰＡまたはノードが互いに直接的に通信しない。イベントがイベント・チャネルを介してプッシュされ、ＥＰＡが、注目するイベントを受信する。システムのデカップルされた挙動を保持する特定のチャネルから注目のイベントをプルするのは、次のイベントＥＰＡの責任である。本発明の１つまたは複数の実施形態では、構築される初期ツリー構造は、各ＥＰＡの索引として働くことができ、他の利用可能なＥＰＡに関して照会し、したがって必要を満たすために必要な動的ルーティングを決定する。
【００５２】
本明細書で使用される用語は、例示的実施形態を説明するためのものであり、本発明を限定するものではない。本明細書では、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈がそうでないことをはっきりと示すのでない限り、複数形も含むものとする。「含む」または「備える」という用語は、本明細書で使用されるとき、述べられる特徴、完全体、ステップ、操作、要素、または構成要素、あるいはそれらの組合せの存在を指定するが、１つまたは複数の他の特徴、完全体、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそれらの組合せの存在または追加を除外するものではないことをさらに理解されよう。
【００５３】
本発明の例示的実施形態を説明したが、現在の当業者と将来の当業者がどちらも、以下の特許請求の範囲内に包含される様々な改良および拡張を行えることを理解されよう。こうした特許請求の範囲は、最初に述べた本発明に関する適切な保護を維持するように解釈されるべきである。
【符号の説明】
【００５４】
１００  イベント処理ネットワーク（ＥＰＮ）
１０２  イベント・プロデューサＰ
１２２  イベント・コンシューマＣ
２００  ツリー構造
２０２  ルート・ノード（Ｒ）
２０４  無条件実行ノード（Ｕ）
２１２  無条件実行ノード（Ｕ）
２０８  条件付き実行ノード（Ｃ）
２１８  条件付き実行ノード（Ｃ）
４００  コンピュータ・システム
４０２  通信インフラストラクチャ
４０４  プロセッサ
４０６  メイン・メモリ
４０８  ディスプレイ・インターフェース
４１０  ディスプレイ・ユニット
４１２  二次メモリ
４１４  ハード・ディスク・ドライブ
４１６  取外し可能ストレージ・ドライブ
４１８  取外し可能ストレージ・ユニット
４２０  インターフェース
４２２  取外し可能ストレージ・ユニット
４２４  通信インターフェース
４２６  通信経路
【図１】
2011113566.tif 000003
【図２】
2011113566.tif 000004
【図３】
2011113566.tif 000005
【図４】
2011113566.tif 000006
【図５】
2011113566.tif 000007
【図６】
2011113566.tif 000008
【図７】
2011113566.tif 000009