【文献】
江口 敦子,ネットワーク社会に向けたソフトウェア技術 Software Technologies toward the Network Era,東芝レビュー,株式会社東芝,1998年 8月 1日,第53巻,第8号,p.7-10
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の実施形態は、ハイブリッド・イベント処理ネットワーク(ハイブリッドEPN)を構築する方法、システム、およびコンピュータ・プログラムに関する。
【課題を解決するための手段】
【0007】
本発明の一実施形態によれば、ハイブリッドEPNを構築する方法が開示される。ハイブリッドEPNは、少なくとも1つのイベント処理エージェント(EPA)を有する。
【0008】
ハイブリッドEPNでは、第1の組のEPAが宣言により定義され、第2の組のEPAがインターフェースを介して実行時に動的に定義される。
【0009】
別の実施形態によれば、イベント・ルータ(ER)が定義され、ERはERインターフェースも含む。
【0010】
さらに別の実施形態によれば、イベント処理コンテキスト(EPC)が定義される。EPCは、ハイブリッドEPNのEPAへのポインタを含む。
【0011】
本発明の別の実施形態によれば、ハイブリッドEPNの少なくとも1つのEPAについてEPAインターフェースが定義される。
【0012】
本発明の別の実施形態による、ハイブリッドEPNをデプロイする方法は、ハイブリッドEPNをロードするステップと、EPN構造を構築するステップと、EPN構造のノードの索引を作成するステップとを含む。当該方法は、イベント・ソースでのイベント発生に応答してハイブリッドEPN内のイベントを表現するステップと、イベントに基づいてハイブリッドEPNから通知を受信するステップと、イベント・チャネル内に通知を発行するステップとをさらに含む。ハイブリッドEPNをデプロイする方法は、ハイブリッドEPN内で受信されたイベントを伝播するステップと、ハイブリッドEPN内のイベントに関連する後続のEPAを求めるステップと、ハイブリッドEPNの最後の要素に達するまで、ハイブリッドEPN内の後続のEPAにイベントを伝播するステップとをさらに含む。
【0013】
本発明のさらに別の実施形態によれば、イベント処理ネットワーク(EPN)は、宣言により構成された第1の組のEPAと、実行時に動的に修正されるように構成された第2の組のEPAとを含み、得られる第1の組のEPAと第2の組のEPAの組合せが、ハイブリッドEPNを形成する。
【0014】
本発明の別の実施形態によれば、ハイブリッドEPNは、イベント・ルータ(ER)と、第2の組のEPAを実行時に動的に修正するように構成されたERインターフェースと、EPAへのポインタを含むように構成されたイベント処理コンテキスト(EPC)と、ハイブリッドEPNの少なくとも1つのEPAのためのEPAインターフェースとをさらに含む。
【0015】
本発明の別の態様は、ハイブリッド・イベント処理ネットワーク(EPN)を構築するコンピュータ・プログラムを開示する。ハイブリッドEPNは少なくとも1つのイベント処理エージェント(EPA)を有し、ハイブリッドEPNは、宣言により定義される第1の組のEPAと、インターフェースを介して実行時に動的に定義される第2の組のEPAとからなる。
【0016】
本発明のさらに別の態様は、イベント処理のためのハイブリッドEPNの配置を開示する。他の態様および実施形態も開示される。
【0017】
以下の略図を参照しながら、本発明の実施形態を以下で例として詳細に説明する。
【発明を実施するための形態】
【0019】
本発明の実施形態は、分離され、分散された方式で、イベント処理のためにハイブリッドEPNを構築および配置する方法およびシステムを開示する。ハイブリッドEPNは、EDシステムのためのイベント処理を実施するように構成される。
【0020】
イベント処理は、イベントに関して実施されるコンピューティングのプロセスである。イベント処理は、イベントの読取り、アクションを実施することによってイベントに応答すること、イベントの修正、イベントの作成、イベントの破棄などの操作を含むことができる。イベントの処理は、様々なカテゴリに分類することができる。イベント処理の例示的実施形態は「単純イベント処理」でよく、単純イベント処理は、イベント変換、集約、スプリッタ、情報付与(enrichment)、フィルタリングなどを含む。イベント処理の別の例示的実施形態は「複合イベント処理」でよく、イベント間の関係、例えばイベント集約(イベントのパターンが上位レベルのイベントを示唆する)、因果関係(あるイベントが別のイベントによって引き起こされる)、およびパターン検出を含む。イベント処理のさらに別の例示的実施形態は、インタイム意思決定を可能にする、企業内の情報および企業を取り巻く情報のリアル・タイム・フローに関する「ストリーム・イベント処理」である。「インテリジェント・イベント処理」と呼ばれるイベント処理のタイプは通常、イベント履歴および確率に基づいて様々なタイプの推論および予測に対処する。
【0021】
例えば限定はしないが金融市場、電気通信、医療、自動車、化学および石油、エネルギー、国防、ならびに小売および流通を含む複数の産業分野からのイベント処理要件の分析によれば、典型的な解決策として、さまざまなタイプのイベントを混合処理する能力が必要とされることが示される。こうした処理能力は、さまざまなソフトウェア・コンポーネントのセットによって提供され、各コンポーネントは情報技術(IT)環境内で分散していても良い。
【0022】
ハイブリッドEPNは、部分的に静的に(宣言によって)、部分的に動的に(プログラムされることにより)定義することができ、その中で、ノードは、あるイベントの処理経路を、当該イベント関する処理要件に基づいて、実行時に変更することができる。
【0023】
静的EPNでは、実行時にフローを変更することに関し柔軟性が低い。一方、動的EPNで構築されたEDシステムでは、開発者は実行時にプログラムによってEPAを関連付けることができるが、その結果、最も基本的なネットワークであっても開発者は関連付けのためのコードを実装する必要があり、開発者にとってプログラミングの複雑さが増すだろう。必要に応じて実行時に修正することができ、プログラミング負荷を最適化することもできる、静的でも動的でもあるハイブリッドEPNを構築する周知の方法はない。
【0024】
プログラミング負荷を最適化するために、本発明のいくつかの実施形態は、開発者が宣言によりEPNを定義することを可能にし、次いでユーザがインターフェースを介して実行時にEPNを変更することを可能にする。インターフェースの一例は、アプリケーション・プログラミング・インターフェース(API)でよい。この機構は汎用的であり、特定のタイプのイベント・モデリングに縛られないので、本発明のいくつかの実施形態は、イベントに対処し、複数の製品にわたって普及している複数の処理能力を活用するために、業界に依存しないイベント・モデリング(industry agnostic event modeling)および実行環境(イベント・ミドルウェア)を生み出す。システムは、複数のイベント・ソース/ストリーム、複数のイベント・タイプ表現、さらにはイベントに対するルール・ドリブン反応をサポートすることができる。
【0025】
本発明のいくつかの実施形態は、複数の処理エージェントにわたるイベント処理の決定性完了(deterministic completion)を実装することができる。また、実行時に、関与するノードによって、イベント処理ネットワークを変更することもできる。イベントを任意の処理エージェントにルーティングする、このような動的ルーティング能力は、イベント情報、ノードでの処理結果、または詳細に関しイベント・レジストリやリポジトリのような外部リソース(メタデータ)への問い合わせ、あるいはそれらの組合せに基づく。
【0026】
本発明のある実施形態の様々な構成要素が、以下で定義される。
【0027】
イベント処理ネットワーク(EPN)−EPNがイベント処理エージェントのネットワークを定義する。EPNは、正式にはノードおよびエッジの接続されたグラフとして、EPN:={N,E}と表現される。ただし「N」は、グラフ内のノード(頂点)を表し、「E」はグラフ内のエッジを表す。さらに、グラフ内のノードNは、N:={P,A,C}と表すことができる。ただし「P」はイベント・プロデューサ(ソース)であり、「A」はイベント処理エージェントであり、「C」はイベント・コンシューマ(シンク)である。グラフ内のエッジEは、ソースまたは処理エージェントをコンシューマまたは別の処理エージェントに接続する順序付き対である、E:={(x,y)|x χ S,P;y χ P,C}と表すことができる。
【0028】
イベント・プロデューサ(ソース)−イベント・プロデューサは、現実世界の実体、例えばイベントを生成するイベント・ソースを表す。
【0029】
イベント処理エージェント(EPA)−EPAは、イベントをそれと共に処理すべきであるビジネスロジックを定義する。EPAは通常、指定された論理/規則に基づいてイベントを処理し、新しいイベントを生成することもできる。
【0030】
イベント・コンシューマ−イベント・コンシューマは、イベントを消費し、イベントに対するアクションを実施する現実世界の実体をモデル化する。
【0031】
イベント・チャネル−イベント・チャネル(イベント・トピックとも呼ばれる)は、イベント・プロデューサから種々のEPAへ、最終的にはイベント・コンシューマへの、特定のタイプのイベントのためのトランスポートである。
【0032】
イベント処理コンテキスト(EPC)−EPCは、その中でイベントが処理されるべきコンテキストである。EPCはコンテナによって維持され、使用される。各イベントについて、固有のEPCを作成することができ、イベントの全ライフ・サイクルを通じてこの固有のEPCをイベントと関連付けることができる。任意の処理ノードは、イベント処理コンテキスト内に情報を格納することができ、イベント処理コンテキスト内の情報にアクセスすることができる。
【0033】
イベント・メタデータ−イベント・メタデータは、イベント・プロデューサ、処理エージェント、および加入者に対して利用可能にされるイベント・タイプ指定およびイベント処理規則からなる。
【0034】
イベント・ルータ(ER)−イベント・ルータは通常、EPN定義をロードし、EPN定義に従ってイベントをルーティングする任を担うソフトウェア・コンポーネントである。イベント・ルータ(ERインターフェース)のインターフェースが、イベントのルーティングのために使用される。
【0035】
図1は、イベント処理ネットワーク(EPN)の全体的概略100の例示的実施形態を示す。EPNは、イベント・プロデューサP 102、イベント・コンシューマC 122、およびこの場合はブロック103内に表されている9個のEPA A
1104からA
9120として例示的に示されているいつかの例示的イベント処理エージェントEPAからなる。EPAの数が例示的実施形態に示されるような9個だけに制限されないことは当業者には明らかであるはずである。P102からC122への矢印の向きは、イベントの流れを示す。ノードA
iの後に複数のEPAがあるとき、例えばA
1104の後にA
2106およびA
3118があるとき、A
iの後に実行されるガード条件がある可能性があり、この評価の結果に基づいて、イベントが後続のノードのうちの1つにルーティングされることを意味する。
図1のA
8116からA
3118の間の点線は、ユーザが実行時に条件付きでA
8116からA
3118にイベントをルーティングすることを必要としていることを示す。イベントのこのルーティングは通常、ERインターフェースでサポートされる。
【0036】
図2は、
図1に記述されるEPN100のツリー構造200を示すEPN構造の例示的実施形態を示す。ツリー構造200は、
図1で定義されるEPNの静的部分に対応する。ツリー構造200は、ルート・ノード(R)202、無条件実行ノード(U)204、212、および条件付き実行ノード(C)208、218からなることができる。
図1のEPN100のEPAに対応する9個のノードA
i(206、216、214、224、226、228、220、222、210)が、円で表される。ツリー構造200を横断する例示的方法では、標準レフト・ファースト・アルゴリズム(modified standard left first algorithm)を変形して使用することができる。ツリー横断のためのアルゴリズムは、条件の評価に基づいて、ツリー構造内の単一の子ノードだけを訪問し、EPNで指定されるEPAのシーケンスを得ることができるような方式で、条件付きノードで修正することができる。本明細書で定義されるツリー構造200は
図1のEPN100と同等であることを当業者は理解されよう。
【0037】
図3及び
図4は、
図1で記述されるEPNに対応する例示的XML定義を示す。開発者がEPNを手動で、または適切なツールを使用することによって定義するのを援助するために、XMLスキーマが作成される。スキーマは、イベント・タイプ、ルーティング条件、処理エージェント、必要なアクションなどのパラメータをはっきりと示す。
【0038】
図5は、前述の本発明の様々な実施形態を実装するのに使用することのできるコンピュータ・システム400のブロック図の例示的実施形態である。ある実施形態では、コンピュータ・システム400を
図1のハイブリッドEPN100として使用することができる。コンピュータ・システム400はプロセッサ404を含む。
図4は単一のプロセッサを示すが、必要に応じて複数のプロセッサを含めることができることを当業者は理解されよう。プロセッサ404が通信インフラストラクチャ402(例えば、通信バス、クロスオーバ・バー、またはネットワーク)に接続される。様々なソフトウェア実施形態がこの例示的コンピュータ・システムに関して説明される。この説明を読んだ後に、他のコンピュータ・システムまたはコンピュータ・アーキテクチャ、あるいはその両方を使用して本発明をどのように実装するかが当業者には明らかとなるであろう。
【0039】
例示的コンピュータ・システム400は、ディスプレイ・ユニット410上に表示するために通信インフラストラクチャ402(またはフレーム・バッファ、図示せず)からグラフィックス、テキスト、および他のデータを転送するように構成されたディスプレイ・インターフェース408を含むことができる。コンピュータ・システム400はまた、ランダム・アクセス・メモリ(RAM)でよいメイン・メモリ406をも含み、二次メモリ412をも含むことができる。二次メモリ412は、例えばハード・ディスク・ドライブ414、またはフロッピィ・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブなどを表す取外し可能ストレージ・ドライブ416、あるいはその両方を含むことができる。取外し可能ストレージ・ドライブ416は、当業者には周知の方式で、取外し可能ストレージ・ユニット418から読み取り、または取外し可能ストレージ・ユニット418に書き込み、あるいはその両方を行う。取外し可能ストレージ・ユニット418は、取外し可能ストレージ・ドライブ416で読み取られ、書き込まれる、例えばフロッピィ・ディスク、磁気テープ、光ディスクなどを表す。理解するであろうが、取外し可能ストレージ・ユニット418は、コンピュータ・ソフトウェアまたはデータあるいはその両方が格納されたコンピュータ使用可能記憶媒体を含む。
【0040】
例示的実施形態では、二次メモリ412は、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードすることを可能にする他の類似の手段を含むことができる。そのような手段は、例えば取外し可能ストレージ・ユニット422およびインターフェース420を含むことができる。そのようなものの例は、(ビデオ・ゲーム装置で見られるような)プログラム・カートリッジおよびカートリッジ・インターフェース、取外し可能メモリ・チップ(EPROM、PROMなど)および関連ソケット、ならびに取外し可能ストレージ・ユニット422からコンピュータ・システム400にソフトウェアおよびデータを転送することを可能にする他の取外し可能ストレージ・ユニット422およびインターフェース420を含むことができる。
【0041】
コンピュータ・システム400はまた、通信インターフェース424をも含むことができる。通信インターフェース424は、コンピュータ・システムと外部装置との間でソフトウェアおよびデータを転送することを可能にする。通信インターフェース424の例は、モデム、ネットワーク・インターフェース(イーサネット(R)・カードなど)、通信ポート、PCMCIAスロットおよびカードなどを含むことができる。通信インターフェース424を介して転送されるソフトウェアおよびデータは信号の形態であり、信号は、例えば電子信号、電磁信号、光信号、または通信インターフェース424で受信することのできる他の信号でよい。こうした信号は、通信経路(すなわちチャネル)426を介して通信インターフェース424に供給される。チャネル426は信号を搬送し、ワイヤもしくはケーブル、光ファイバ、電話線、携帯電話リンク、RFリンク、または他の通信チャネル、あるいはそれらの組合せを使用して実装することができる。
【0042】
本文書では、「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ可読媒体」という用語が、メイン・メモリ406および二次メモリ412、取外し可能ストレージ・ドライブ416、ハード・ディスク・ドライブ414内に設置されたハード・ディスクなどの媒体を全般的に指すのに用いられる。こうしたコンピュータ・プログラム製品は、コンピュータ・システムにソフトウェアを提供する手段である。コンピュータ可読媒体は、コンピュータ・システムがコンピュータ可読媒体からデータ、命令、メッセージまたはメッセージ・パケット、および他のコンピュータ可読情報を読み取ることを可能にする。コンピュータ可読媒体は、例えば、フロッピィ、ROM、フラッシュ・メモリ、ディスク・ドライブ・メモリ、CD−ROM、他の永続ストレージなどの不揮発性メモリを含むことができる。コンピュータ可読媒体を使用して、例えば、コンピュータ・システム間でデータやコンピュータ命令などの情報を移送することができる。さらに、コンピュータ可読媒体は、コンピュータがそのようなコンピュータ可読情報を読み取ることを可能にすることができる。
【0043】
コンピュータ・プログラム(本明細書ではコンピュータ制御論理とも呼ばれる)が、メイン・メモリ406または二次メモリ412あるいはその両方に格納される。コンピュータ・プログラムは、通信インターフェース424を介して受け取ることもできる。そのようなコンピュータ・プログラムは、実行されたときに、コンピュータ・システムが本明細書で論じられる本発明の例示的実施形態の特徴を実施することを可能にすることができる。具体的には、コンピュータ・プログラムは、実行されたときに、プロセッサ404がコンピュータ・システム400の特徴を実施することを可能にする。したがって、そのようなコンピュータ・プログラムは、コンピュータ・システムのコントローラを表す。
【0044】
図6は、
図1に示されるハイブリッドEPN100の作成の流れ
図500の例示的実施形態を示す。ステップ502では、第1の組のEPAが宣言によりに定義され、第2の組のEPAが動的に定義される。ハイブリッドEPN100の作成はまた、実行時に第2の組のEPAを動的に変更するインターフェースを作成することもさらに含む。ハイブリッドEPNの静的部分(宣言により定義)および動的部分(プログラムにより定義)が識別されると、ステップ504では、ハイブリッドEPNがイベント・ルータ(ER)によってロードされる。ステップ506では、ERがハイブリッドEPNのEPN構造、例えばツリー構造をさらに構築し、一実施形態では、ハイブリッドEPNのEPAに関する索引を作成することを含む。ステップ508では、ERインターフェースを使用して、第2の組のEPAが実行時に動的に定義される。ステップ510では、EPCが定義される。このEPCは、ハイブリッドEPNのEPAへのポインタを含む。ステップ512では、ハイブリッドEPNの少なくとも1つのEPAに関するEPAインターフェースが定義される。EPAインターフェースは、ハイブリッドEPNのイベント・フローを変更するように構成される。ステップ512では、ハイブリッドEPNをイベント処理のために使用する準備ができている。
【0045】
図7は、
図6のステップ512の終わりに構築されたハイブリッドEPNを、具体的には一実施形態においてはそのハイブリッドEPNをイベント処理のために使用する準備ができた時点でデプロイする流れ
図600の例示的実施形態を示す。ハイブリッドEPNは、イベントを実行時に動的にルーティングするのに使用される。例えばEPNを定義中にユーザによって指定される固有識別子による任意のノードの識別を容易にし、その特定のノードにイベントをルーティングするために、ERは、EPAの固有識別子に基づいてツリー内のノードの索引も作成し、EPAの固有識別子は、EPNをロードし、EPNをツリー構造に変換している間にERによって準備される。この索引は、ERと共に利用可能である。
【0046】
ステップ601は、ハイブリッドEPNを使用する準備ができていることを示す。物理イベントがイベント・ソースで生じたとき、ステップ602では、イベント・プロデューサがイベント・ソースでのイベント発生を検出し、抽象化する。ステップ604では、イベント・プロデューサがイベントを表現し、603を介してイベントをイベント・ファクトリ606に通信する。さらにステップ604では、イベント・プロデューサが、605を介してイベント・ファクトリ606からイベント通知607を受信する。イベント通知607は、それ自体の中にイベント情報を包む。イベント・ファクトリ606はEPCも生成する。EPCは、所与のイベントについて固有であり、イベントのライフ・サイクル全体の間、イベントと関連付けられたままとなる。EPCはまた、イベントを処理するのに必要な次のEPA(後続のEPA)へのポインタをも有する。
【0047】
当初、ポインタは設定されない。EPCが作成されるとき、このポインタの値がヌルに設定される。ステップ608では、イベント・プロデューサが、所与のイベント・タイプについてイベント通知607をイベント・チャネル内に発行する。次いで、イベント・チャネルは、関連するERにイベントを転送する。ステップ610では、イベントがハイブリッドEPN内で伝播される。ステップ612では、ハイブリッドEPN内のイベントに関連する後続のEPAが求められる。ERは、EPCと共にチェックし、現ステージでイベントを処理するための後続のEPAを見つける。
【0048】
例示的実施形態では、ステップ612でのいくつかの条件の処理が以下のように記述される。
A.後続のEPAへのポインタがヌルである場合、ツリー構造のルート要素へのポインタが設定され、次いでイベントがチャネルにプッシュされる。そうでない場合、
B.後続のEPAへのポインタがヌルではない場合、ツリー構造内のノードのタイプをチェックする。
i.前のEPAがコンテキスト中のポインタを(上書きAPIを使用して)上書きした場合、任意のループを中断し、イベントをチャネルにプッシュする。そうでない場合、
ii.ノードがツリー構造の非リーフ・ノードである場合、この非リーフ・ノードが条件付きノードであるか、それとも無条件ノードであるかを判定する。
a.非リーフ・ノードが条件付きノードである場合、条件を実行し、得られるEPAへのポインタを設定し、チャネルにイベントをプッシュする。
b.非リーフ・ノードが無条件ノードである場合、左から右への各子要素について、子要素へのポインタを設定し、イベントをチャネルにプッシュする。そうでない場合、
iii.ノードがリーフ・ノードである場合、そのEPAにイベントをルーティングする。EPAがルーティング経路を修正する必要がある場合、EPAは、ERの上書きAPIを起動することができる。
【0049】
ステップ612の論理を使用して後続のEPAを識別したので、ステップ614では、チェックが行われ、EPN内の最後の要素(イベント・コンシューマ)に達したかどうかが判定される。ステップ612での後続のEPAがEPN内の最後の要素(イベント・コンシューマ)である場合、ステップ616は、
図1のイベント・コンシューマ122がイベントを消費し、イベントに関するアクションを実施することを示す。後続のEPAが
図1のイベント・コンシューマ122ではない場合、ステップ610で記述されるように、イベントがさらにハイブリッドEPNの後続のEPAに伝播される。
【0050】
本発明の一実施形態はさらに、上記で示され詳細に説明された様々な実施形態で説明された、EPAを含むEPNを構築する方法を実施する機械可読命令のプログラムを有形に具体化する記憶媒体を提供する。
【0051】
本発明の一実施形態では、2つのEPAまたはノードが互いに直接的に通信しない。イベントがイベント・チャネルを介してプッシュされ、EPAが、注目するイベントを受信する。システムのデカップルされた挙動を保持する特定のチャネルから注目のイベントをプルするのは、次のイベントEPAの責任である。本発明の1つまたは複数の実施形態では、構築される初期ツリー構造は、各EPAの索引として働くことができ、他の利用可能なEPAに関して照会し、したがって必要を満たすために必要な動的ルーティングを決定する。
【0052】
本明細書で使用される用語は、例示的実施形態を説明するためのものであり、本発明を限定するものではない。本明細書では、単数形「a」、「an」、および「the」は、文脈がそうでないことをはっきりと示すのでない限り、複数形も含むものとする。「含む」または「備える」という用語は、本明細書で使用されるとき、述べられる特徴、完全体、ステップ、操作、要素、または構成要素、あるいはそれらの組合せの存在を指定するが、1つまたは複数の他の特徴、完全体、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそれらの組合せの存在または追加を除外するものではないことをさらに理解されよう。
【0053】
本発明の例示的実施形態を説明したが、現在の当業者と将来の当業者がどちらも、以下の特許請求の範囲内に包含される様々な改良および拡張を行えることを理解されよう。こうした特許請求の範囲は、最初に述べた本発明に関する適切な保護を維持するように解釈されるべきである。