(57)【要約】【課題】  イベント処理言語及びイベント処理実行モデルを、オンライン・ストリーミング・イベント処理と遡及イベント処理との両方を取り扱うように拡張する。【解決手段】  ユーザがオンライン・ストリーミング・パターンと履歴（遡及）パターンとの両方からなるパターンを定めることができるようにする履歴パターン及び関連する遡及イベント処理をサポートするために、言語内に構造及びパターンを含むようにイベント処理パターン言語を拡張するための新規で有用な方法、システム、及びフレームワークである。これによって、機能の全体が単一のパターン言語で表現できるようになるとともに、機能の処理が複数のイベント処理エージェント（ＥＰＡ）にマッピングされるイベント処理最適化も可能になる。ＥＰＡは、次に、物理プロセッサに割り当てられ、プロセッサ内のスレッドに割り当てられる。【選択図】      図４
2011086288.tif 000002
【特許請求の範囲】
【請求項１】
イベント処理の方法であって、
イベント処理パターン言語を準備するステップと、
前記イベント処理パターン言語を、履歴パターンをサポートするように拡張し、それにより、ユーザが単一のパターン言語を用いてオンライン・ストリーミング・パターンと遡及履歴パターンとの両方からなるパターンを定めることができるようにするステップと、
を含み、
前記準備するステップ及び前記拡張するステップは、前記準備するステップ及び拡張するステップを行うように構成されたコンピュータ・ハードウェア又は一時的なものではない有形のコンピュータ可読ストレージ媒体に具体化されたコンピュータ・ソフトウェアのいずれかに実装される、方法。
【請求項２】
前記拡張されたイベント処理言語は、一次及び二次コンテキストに基づく２段階の遡及処理実行をサポートするためにイベント処理実行モデルを拡張するように動作する、請求項１に記載の方法。
【請求項３】
前記拡張するステップは、拡張されたイベント処理パターン言語機能を１つ又は複数の物理イベント処理エージェント（ＥＰＡ）にマッピングすることを含む、請求項１に記載の方法。
【請求項４】
前記拡張されたイベント処理パターン言語は、オンライン・ストリーミング・イベントにおいて順行方向に進行する時間を取り扱いながら同時に時間を逆行して過去イベントを見るために、一次及び二次コンテキスト・パターン言語拡張を提供するように動作する、請求項１に記載の方法。
【請求項５】
イベント処理の方法であって、
ストリーミング・イベント処理を取り扱うのに適したイベント処理言語を準備するステップと、
前記イベント処理言語に遡及パターン言語拡張を付加し、その結果として得られる拡張されたイベント処理言語が、前記ストリーミング・イベント処理に加えて遡及イベント処理を取り扱うことを可能にするステップと、
を含み、
前記準備するステップ及び前記付加するステップは、前記準備するステップ及び付加するステップを行うように構成されたコンピュータ・ハードウェア又は一時的なものではない有形のコンピュータ可読ストレージ媒体に具体化されたコンピュータ・ソフトウェアのいずれかに実装される、方法。
【請求項６】
前記遡及パターン言語拡張は、イベント処理システムがパターンの仮定を補強できるようにする、請求項５に記載の方法。
【請求項７】
前記遡及パターン言語拡張は、一次及び二次コンテキストに基づく２段階の遡及処理実行をサポートするためにイベント処理実行モデルを拡張するように動作する、請求項５に記載の方法。
【請求項８】
前記遡及パターン言語拡張は、パターン機能を１つ又は複数の物理イベント処理エージェント（ＥＰＡ）にマッピングすることを含む、請求項５に記載の方法。
【請求項９】
前記ＥＰＡは、依存関係がモデル化されたアプリケーション・イベント処理ネットワーク（ＥＰＮ）の一部である、請求項８に記載の方法。
【請求項１０】
前記遡及パターン言語拡張は、遡及処理が、それぞれのイベント処理ネットワーク（ＥＰＮ）の構造に基づく最適処理に関与することを可能にする、請求項５に記載の方法。
【請求項１１】
ＥＰＮ依存関係グラフをＥＰＡの１つ又は複数の集合に区分するステップをさらに含み、前記集合は前記集合間に依存関係を有することなく並列に実行することができ、前記集合の各々はＥＰＮ層を定める、請求項５に記載の方法。
【請求項１２】
遡及イベント処理を１つ又は複数のイベント処理エージェント（ＥＰＡ）にマッピングするステップをさらに含む、請求項５に記載の方法。
【請求項１３】
前記マッピングするステップは、ＥＰＡを物理プロセッサ及びプロセッサ内のスレッドに割り当てるステップを含む、請求項１２に記載の方法。
【請求項１４】
前記プロセッサ間でリアルタイムの負荷分散を行うステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記拡張されたイベント処理言語は、オンライン・ストリーミング・パターン・マッチングと遡及パターン・マッチングとの両方を行うための最適な単一言語を提供するように動作する、請求項５に記載の方法。
【請求項１６】
前記拡張されたイベント処理言語は、オンライン・ストリーミング・イベントにおいて順行方向に進行する時間を取り扱いながら同時に時間を逆行して過去イベントを見るために、一次及び二次コンテキスト・パターン言語拡張を提供するように動作する、請求項５に記載の方法。
【請求項１７】
前記拡張されたイベント処理言語を用いて、イベント・セットのセットに状態パターンを適用するステップをさらに含む、請求項５に記載の方法。
【請求項１８】
履歴イベントをメモリに格納し、前記履歴イベントを１つ又は複数のイベント処理エージェントに渡すステップをさらに含む、請求項５に記載の方法。
【請求項１９】
履歴イベントを１つ又は複数のパターンについてのデータベースに格納し、前記格納された履歴イベントを１つ又は複数のイベント処理エージェントに渡すステップをさらに含む、請求項５に記載の方法。
【請求項２０】
イベント処理装置であって、
ストリーミング・イベント・パターンと遡及イベント・パターン拡張との両方を含む拡張されたイベント処理パターン言語フレームワークと、
遡及拡張を含む前記拡張されたイベント処理パターン言語をサポートし、それにより、多数のコンテキストに基づく多段階の遡及処理拡張を可能にするように動作する、イベント処理フレームワークと、
を含む装置。
【請求項２１】
前記拡張されたイベント処理パターン言語は、一次及び二次コンテキストに基づく２段階の遡及処理実行をサポートするためにイベント処理実行モデルを拡張するように動作する、請求項２０に記載の装置。
【請求項２２】
前記イベント処理フレームワークは、拡張されたイベント処理パターン言語機能を１つ又は複数の物理イベント処理エージェント（ＥＰＡ）にマッピングするための手段を含む、請求項２０に記載の装置。
【請求項２３】
前記拡張されたイベント処理パターン言語は、オンライン・ストリーミング・イベントにおいて順行方向に進行する時間を取り扱いながら同時に時間を逆行して過去イベントを見るために、一次及び二次コンテキスト・パターン言語拡張を提供するように動作する、請求項２０に記載の装置。
【請求項２４】
イベント処理を行うためのコンピュータ・プログラム製品であって、
コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含み、前記コンピュータ使用可能プログラム・コードは、
ストリーミング・イベント処理を取り扱うのに適したイベント処理言語を提供するように構成されたコンピュータ使用可能コードと、
前記イベント処理言語に遡及パターン言語拡張を付加し、その結果として得られる拡張されたイベント処理言語が、前記ストリーミング・イベント処理に加えて遡及イベント処理を取り扱うことを可能にするように構成されたコンピュータ使用可能コードと、
を含む、コンピュータ・プログラム製品。
【請求項２５】
イベント処理を行うためのコンピュータ・プログラム製品であって、
コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含み、前記コンピュータ使用可能プログラム・コードは、
イベント処理パターン言語を提供するように構成されたコンピュータ使用可能コードと、
履歴パターンをサポートするように前記イベント処理パターン言語を拡張し、それにより、ユーザが単一のパターン言語を用いてオンライン・ストリーミング・パターンと遡及履歴パターンとの両方からなるパターンを定めることができるように構成されたコンピュータ使用可能コードと、
を含む、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント処理の分野に関し、より具体的には、イベント処理言語及びイベント処理実行モデルを、オンライン・ストリーミング・イベント処理と遡及イベント処理との両方を取り扱うように拡張するための方法、システム、及びフレームワークに関する。
【背景技術】
【０００２】
物理ＥＰＡへのマッピングにより、遡及処理が、関連するＥＰＮグラフの構造に基づく最適化プロセスに関与できるようにしないと、遡及処理は計算要件の重要部分を構成するものであるため、アプリケーションの一部が最適化プロセスから取り残され、最適化プロセスを無効にするおそれがある。
従来のシステムは、典型的には、遡及処理をＳＱＬクエリの集合によって表現する。さらに、従来のシステムでは、クエリ最適化モデルとＥＰＮ最適化モデルは異なっており、２つの最適化モデルが用いられる場合には、リソースを全体的に見ることは不可能であり、従って、結果は最適なものとはならない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この発明は、イベント処理言語及びイベント処理実行モデルを、オンライン・ストリーミング・イベント処理と遡及イベント処理との両方を取り扱うように拡張するための方法、システム、及びフレームワークを提供することを目的とするものである。
【課題を解決するための手段】
【０００４】
ユーザがオンライン・ストリーミング・パターンと履歴（遡及）パターンとの両方からなるパターンをシームレスに定めることができるようにする履歴パターン及び関連する遡及イベント処理をサポートするために、言語内に構造及びパターンを含むようにイベント処理パターン言語及びイベント実行モデルを拡張するための新規で有用な方法、システム、及びフレームワークを提供する。これによって、機能の全体が単一のパターン言語で表現できるようになるとともに、機能の処理が複数のイベント処理エージェント（ＥＰＡ）にマッピングされるイベント処理最適化も可能になる。ＥＰＡは、次に、物理プロセッサに割り当てられ、プロセッサ内のスレッドに割り当てられる。
【０００５】
本発明の一実施形態においては、ストリーミング・イベントを対象とした通常のイベント処理モデルが、典型的には仮定を補強するために通常のイベント処理の一部として必要な遡及イベント処理を含むように拡張される。拡張は、（１）パターン言語を、遡及処理を表現するように拡張すること、（２）一次及び二次コンテキストに基づく２段階の遡及処理の実行を可能にすることによって、言語表現をサポートするようにイベント処理の実行モデルを拡張すること、及び（３）遡及パターン機能を物理的なイベント処理エージェントにマッピングすることを含み、イベント処理エージェントは、依存関係がモデル化されたアプリケーション・イベント処理ネットワーク（ＥＰＮ）の一部となる。
【０００６】
これらのパターン言語拡張によって、幾つかの利点がもたらされ、即ち、（１）開発者は、アプリケーションを開発するために、２つの言語が混合されたものではなく単一の言語を用いることができ、それによりアプリケーション全体の寿命にかかるコストが著しく低減される、（２）物理ＥＰＡへのマッピングにより、遡及処理が、関連するＥＰＮグラフの構造に基づく最適化プロセスに関与できるようになり、これが行われない場合には、遡及処理は計算要件の重要部分を構成するものであるため、アプリケーションの一部が最適化プロセスから取り残され、最適化プロセスを無効にするおそれがある。
【０００７】
本発明のパターン言語拡張がなければ、通常のストリーミング・イベント処理モデルにおいて遡及処理を表現できないことに留意されたい。従来のシステムは、典型的には、遡及処理をＳＱＬクエリの集合によって表現する。さらに、従来のシステムでは、クエリ最適化モデルとＥＰＮ最適化モデルは異なっており、２つの最適化モデルが用いられる場合には、リソースを全体的に見ることは不可能であり、従って、結果は最適なものとはならない。
【０００８】
従って、本発明によれば、イベント処理の方法が提供され、本方法は、イベント処理パターン言語を準備するステップと、イベント処理パターン言語を、履歴パターンをサポートするように拡張し、それにより、ユーザが単一のパターン言語を用いてオンライン・ストリーミング・パターンと遡及履歴パターンとの両方からなるパターンを定めることができるようにするステップと、を含む。
【０００９】
また、本発明によれば、ストリーミング・イベント・パターンと遡及イベント・パターン拡張との両方を含む拡張されたイベント処理パターン言語フレームワークと、遡及拡張を含む拡張されたイベント処理パターン言語をサポートし、それにより多数のコンテキストに基づく多段階の遡及処理拡張を可能にするように動作する、イベント処理フレームワークと、を含むイベント処理装置が提供される。
【００１０】
さらに、本発明によれば、イベント処理を行うためのコンピュータ・プログラム製品が提供され、本コンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含み、コンピュータ使用可能プログラム・コードは、ストリーミング・イベント処理を取り扱うのに適したイベント処理言語を提供するように構成されたコンピュータ使用可能コードと、イベント処理言語に遡及パターン言語拡張を付加し、その結果として得られる拡張されたイベント処理言語が、ストリーミング・イベント処理に加えて遡及イベント処理を取り扱うことを可能にするように構成されたコンピュータ使用可能コードと、を含む。
【００１１】
また、本発明によれば、イベント処理を行うためのコンピュータ・プログラム製品が提供され、本コンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含み、コンピュータ使用可能プログラム・コードは、イベント処理パターン言語を提供するように構成されたコンピュータ使用可能コードと、履歴パターンをサポートするようにイベント処理パターン言語を拡張し、それにより、ユーザが単一のパターン言語を用いてオンライン・ストリーミング・パターンと遡及履歴パターンとの両方からなるパターンを定めることができるように構成されたコンピュータ使用可能コードと、を含む。
【図面の簡単な説明】
【００１２】
【図１】本発明の遡及イベント処理機構を実装するように適合された例示的なコンピュータ処理システムを示すブロック図である。
【図２】例示的なパターン・マッチング・プロセスを示す図である。
【図３】例示的なイベント処理ネットワーク（ＥＰＮ）を示す図である。
【図４】例示的な遡及パターン・マッチング・プロセスを示すフロー図である。
【図５】本発明の例示的な実施形態による、オンライン・ストリーミング・イベント処理と遡及イベント処理との両方の組み合わせ例を示す図である。
【図６】例示的なイベント処理アプリケーションと、それに続くイベント処理ネットワークの層化とを示す図である。
【図７】本発明の例示的な実施形態による例示的な高レベルの最適化プロセスを示すフロー図である。
【図８】イベント処理エージェント（ＥＰＡ）を実行時アーチファクトに区分する例を示す図である。
【発明を実施するための形態】
【００１３】
本発明は、本明細書において、添付の図面を参照し、単なる例として説明される。
全体を通じて用いられる表記
本文書の全体を通じて、以下の表記が用いられる。
【表１】
2011086288.tif 000003
【００１４】
本発明は、ユーザがオンライン・ストリーミング・パターン検出と履歴（遡及）パターン検出との両方からなるパターンを定めることができるようにする履歴パターン及び関連する遡及イベント処理をサポートするために、言語内に構造及びパターンを含むようにイベント処理パターン言語を拡張するための方法、システム、及びフレームワーク（一般に、遡及イベント処理機構とも呼ばれる）である。遡及イベント処理機構により、機能の全体が単一のパターン検出言語で表現できるようになり、機能の処理が複数のイベント処理エージェント（ＥＰＡ）にマッピングされるイベント処理最適化も可能になる。ＥＰＡは、次に、１つ又は複数の物理プロセッサに割り当てられ、１つ又は複数のプロセッサ内のスレッドに割り当てられる。
【００１５】
本発明の遡及イベント処理機構の幾つかの利点として、（１）オンライン・ストリーミング・イベントと履歴イベントとを検出するために単一のイベント処理パターン言語を用いることが、パターン言語の有用性を著しく向上させること、及び、（２）オンライン・ストリーミング・タイプのパターンと履歴タイプのパターンとの両方の検出を必要とするアプリケーションの総所有コストを大幅に下げられること、が挙げられる。
【００１６】
当業者であれば分かるように、本発明は、システム、方法、コンピュータ・プログラム製品、又はそのいずれかの組み合わせとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む）、又は、ソフトウェア及びハードウェアの態様を組み合わせた実施形態の形を取ることができ、本明細書ではその全てを広く「回路」、「モジュール」、又は「システム」と呼ぶことがある。さらにまた、本発明は、コンピュータ使用可能プログラム・コードが具体化されたいずれかの有形の表現媒体として具体化されたコンピュータ・プログラム製品の形を取ることができる。
【００１７】
１つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体のいずれの組み合わせも用いることができる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、デバイス、又は伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより詳細な例（非網羅的なリスト）として、１つ又は複数の配線を有する電気接続、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、携帯可能コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、インターネット若しくはイントラネットをサポートするような伝送媒体、又は磁気ストレージ・デバイスが挙げられる。例えば、紙又は他の媒体の光学的なスキャンを介してプログラムを電気的にキャプチャし、次いで、必要であればそれをコンパイルし、変換し、又は他の適切な手法で処理し、次いでコンピュータ・メモリに格納することが可能なので、プログラムが印刷された紙又は別の適切な媒体でさえコンピュータ使用可能媒体又はコンピュータ可読媒体となり得ることに留意されたい。本文書の文脈においては、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、若しくはデバイスによって、又はこれらと共に、用いるためのプログラムを含み、格納し、通信し、伝搬し、又は搬送することができるいずれかの装置とすることができる。コンピュータ使用可能媒体は、ベースバンドにおいて又は搬送波の一部として、コンピュータ使用可能プログラム・コードを具体化した伝搬データ信号を含むことができる。コンピュータ使用可能プログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなどを含むがこれらに限定されないいずれかの適切な媒体を用いて、伝送することができる。
【００１８】
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋などのようなオブジェクト指向型プログラミング言語と、「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語とを含む１つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で実行するか、スタンドアロンのソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行するか、一部はユーザのコンピュータ上で実行し、一部はリモート・コンピュータ上で実行するか、又は、完全にリモート・コンピュータ若しくはサーバ上で実行することができる。後者の場合には、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続することができ、又は、（例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて）外部コンピュータに接続することもできる。
【００１９】
本発明は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して、以下で説明される。フローチャート図及び／又はブロック図の各ブロック、及び、フローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装又はサポートできることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又はマシンを生成する他のプログラム可能データ処理装置のプロセッサに与え、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャート及び／又はブロック図のブロック又は複数のブロックにおいて指定される機能／動作を実装するための手段を生成するようにしてもよい。
【００２０】
また、これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置に特定の方法で機能するように指示することができるコンピュータ可読媒体に格納し、それにより、そのコンピュータ可読媒体に格納された命令が、フローチャート及び／又はブロック図のブロック又は複数のブロックにおいて指定される機能／動作を実装する命令手段を含む製品を作るようにしてもよい。
【００２１】
また、コンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置にロードし、コンピュータ又は他のプログラム可能データ処理装置上で一連の操作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図のブロック又は複数のブロックにおいて指定される機能／動作を実行するためのプロセスを提供するようにしてもよい。
【００２２】
本発明の遡及イベント処理機構を実装するように適合された例示的なコンピュータ処理システムを示すブロック図を図１に示す。全体が１０で示されるコンピュータ・システムは、デジタル信号プロセッサ（ＤＳＰ）、中央演算処理装置（ＣＰＵ）、マイクロコントローラ、マイクロプロセッサ、マイクロコンピュータ、ＡＳＩＣ、又はＦＰＧＡコアを含むことができるプロセッサ１２を含む。システムはまた、静的読み取り専用メモリ１８及び動的メイン・メモリ２０を含み、その全てがプロセッサと通信を行う。プロセッサはまた、バス１４を介して、同じくコンピュータ・システムに含まれる多数の周辺デバイスと通信を行う。バスに結合された周辺デバイスには、表示デバイス２４（例えば、モニタ）、英数字入力デバイス２５（例えば、キーボード）、及びポインティング・デバイス２６（例えば、マウス、タブレットなど）が含まれる。
【００２３】
コンピュータ・システムは、データＩ／Ｏ通信インターフェース２２（例えばネットワーク・インターフェース・カード又はＮＩＣ）を介してシステムに接続された通信ラインによって、ＬＡＮ又はＷＡＮ２３のような１つ又は複数の外部ネットワークに接続される。システムに結合されたネットワーク・アダプタ２２によって、データ処理システムを、介在する専用又は公衆ネットワークを通じて他のデータ処理システム又はリモート・プリンタ若しくはストレージ・デバイスに結合することが可能になる。モデム、ケーブル・モデム、及びイーサネット・カードは、現在利用可能なネットワーク・アダプタのタイプのうちのごく一部である。システムはまた、アプリケーション・プログラム及びデータを格納するための磁気又は半導体ベースのストレージ・デバイス２１及び／又は２８を含む。システムは、磁気ストレージ、光ストレージ、半導体揮発性若しくは不揮発性メモリ、又は他のいずれかのメモリ・ストレージ・デバイスを含むがこれらに限定されないいずれかの適切な記憶手段を含むことができるコンピュータ可読ストレージ媒体を含む。
【００２４】
本発明のシステム及び方法を実装するように適合されたソフトウェアは、ディスク・ドライブ・ユニット内の磁気ディスクのようなコンピュータ可読媒体上に存在するように適合される。代替的に、コンピュータ可読媒体は、フロッピー（商標）ディスク、取り外し可能ハード・ディスク、フラッシュ・メモリ１６、ＥＥＲＯＭベース・メモリ、バブル・メモリ・ストレージ、ＲＯＭストレージ、配布媒体、中間ストレージ媒体、コンピュータの実行メモリ、及び、本発明の方法を実装するコンピュータ・プログラムをコンピュータが後で読み取るように格納することができる他のいずれかの媒体又はデバイスを含むことができる。本発明のシステム及び方法を実装するように適合されたソフトウェアはまた、全体又は一部が、静的又は動的メイン・メモリに存在することができ、コンピュータ・システムのプロセッサ内（即ち、マイクロコントローラ、マイクロプロセッサ、又はマイクロコンピュータ内部メモリ内）のファームウェアに存在することもできる。
【００２５】
他のデジタル・コンピュータ・システム構成を用いて本発明のシステム及び方法を実装することもでき、特定のシステム構成は、本発明のシステム及び方法を実装することができる限りにおいて、図１の代表的なデジタル・コンピュータ・システムと等価であり、本発明の主旨及び範囲内にある。
【００２６】
こうしたデジタル・コンピュータ・システムは、本発明のシステム及び方法を実装するプログラム・ソフトウェアからの命令に従って特定の機能を行うようにプログラムされると、事実上、本発明の方法に特化したコンピュータとなる。このために必要な技術は、コンピュータ・システムの当業者にとっては周知である。
【００２７】
本発明のシステム及び方法を実装するコンピュータ・プログラムは、一般に、フロッピー（商標）ディスク又はＣＤ−ＲＯＭといった配布媒体によってユーザに配布されることになるか、インターネットのようなネットワーク上で、ＦＴＰ、ＨＴＴＰ、又は他の適切なプロトコルを用いてダウンロードすることができることに留意されたい。コンピュータ・プログラムは、そこからハード・ディスク又は同様の中間ストレージ媒体にコピーされる場合が多い。プログラムが実行されるときは、プログラムは、その配布媒体又は中間ストレージ媒体からコンピュータの実行メモリにロードされ、コンピュータを、本発明の方法によって動作するように構成する。これらの操作の全ては、コンピュータ・システムの当業者には周知である。
【００２８】
図面のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法、及びコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、及び操作を示す。この点に関して、フローチャート又はブロック図の中の各ブロックは、特定の１つ又は複数の論理機能を実装するための１つ又は複数の実行可能命令を含むコードのモジュール、セグメント、又は一部を表すことができる。幾つかの代替的な実装においては、ブロックに記載された機能が図面に記載された順序通りに行われない場合があることにも留意すべきである。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には、実質的に同時に実行されることがあり、ブロックが逆順に実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及び、ブロック図及び／又はフローチャート図におけるブロックの組み合わせは、指定の機能又は動作を行う専用ハードウェア・ベースのシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって、実装できることにも留意されたい。
【００２９】
遡及イベント処理機構
多くのシステムにおいて、ストリーミング・イベントと履歴イベントとの両方に関係するオンライン・イベント・パターンを見出すことが要件である。複合イベント処理（ＣＥＰ）は、ストリーミング・イベントのパターンを見出そうとする。ストリーミング・イベントにおけるこのようなパターン・マッチングの例として、ＸＹＺ株が２時間で３％値上がりした、患者が退院した後２４時間以内に入院した、窓を破る手口の窃盗事件の全ての相対的な最大距離が５マイル未満である、といったことを挙げることができる。
【００３０】
このようなパターンを実装するシステムは存在する。しかしながら、場合によっては、ストリーミング・イベントのパターンを、過去のイベントに反復的に適用されるパターンと混合する必要性が存在する。例えば、単一の勤務日内に（総額で）２０，０００ドルを超える預金を行った人物は、マネー・ロンダリング（即ち、ストリーミング・イベント・パターン）の容疑者であると考える。容疑を補強するために、状態（modal）パターンを過去に適用すると、昨年の一週間の期間内に、同一人物が（総額で）５０，０００ドル又はそれ以上の預金を行い、同じ週内に少なくとも（総額で）５０，０００ドルを引き出していた。
【００３１】
別の例では、電子取引サイトが商品を提供する能力を顧客に与えて、顧客が入札を行い、（ＣＥＰシステムを用いた）入札管理システムを提供できるようにする。顧客に提供されるサービスの１つは、「購入できる価格が高すぎるというアラートを送る」ことである。ストリーミング・イベントのパターンは、以下のこと、即ち、少なくとも２人の入札者が存在し、そのうちの誰も売り手の最小価格に一致しなかった場合には、「入札価格が高すぎる」という表示とすることができることを含む。履歴イベントのパターンは、以下のこと、即ち、同じ売り手の過去の入札のうち少なくとも三分の二が同様に「高すぎる入札価格」の状況をもたらしていることである。オンライン状況（即ち、ストリーミング・イベントのパターン）が発生した場合には、補強状況（履歴イベントのパターン）を探す。条件が満たされた場合には、売り手には、「欲張りすぎである」との通知が送られる。
【００３２】
一実施形態において、ストリーミングと履歴の両方のイベント処理を必要とするアプリケーションは、（１）ストリーミング・イベントのパターンを実装する、自らの抽象化、言語、実行モデル、及び最適化を伴うイベント処理と、（２）履歴データへの時間的な照会をサポートする時間データベースと、に分割される。履歴イベントは時間データとして表現され、パターンは時間的な照会として表現される。
【００３３】
別の実施形態においては、両方の機能をオンラインで必要とするアプリケーションにおいて、ストリーミング・イベント処理パターン言語要素と履歴イベント処理パターン言語要素とを同一の言語に組み合わせることによって、有効性と効率性が達成される。有効性に関しては、２つのコード・ベースを２つの異なる言語でもち、組み合わされたアプリケーションが必要となるたびにこれらの２つのコード・ベースを統合することを必要とするのではなく、本発明の一実施形態は、これら２つを単一のパターン言語に組み合わせる。効率性に関しては、イベント処理最適化スキームは、イベント処理機能全体を考慮に入れており、ここではシステム全体が最適化システムの制御内に入る。本発明の最適化システムは、履歴イベントのパターンを考慮しており、従って最適化システムによって達成可能な結果を改善する。
【００３４】
例示的なオンライン・パターン・マッチング・プロセスを示す図を図２に示す。全体が３０で示されるプロセスは、フィルタ処理ブロック３４、マッチング・ブロック３６、及び導出ブロック３８と、ポリシー・ブロック４２と、複数の入力端末３２と、出力端末４０と、イベント・データ・セット（三角形４４）とを含む。オンライン・マッチング・プロセスでは、特定のパターンについての関連条件に従って、最初にイベントがフィルタ処理され、出力が生成される。次いで、フィルタ処理されたイベント出力にマッチング条件が適用され、１つ又は複数のマッチング及び導出されたイベントを生成する。一例として、上述された例のうちの１つ、すなわち、患者が退院後２４時間以内に入院した例を挙げる。プロセス記述は以下のとおりであり、即ち、（１）関連イベントは、入院イベント及び退院イベントである、（２）マッチング・プロセスは、患者が同一であり、タイムスタンプ差が２４時間より小さいイベントのセットを見出す、（３）そのようなイベント・セットが検出されると、退院及び入院イベントからの関連情報を用いて、導出イベントが生成される。導出イベントは、更なる処理のために送られるか、又は、最終消費者に送られる。
【００３５】
マッチング・プロセスを行うソフトウェアは、イベント処理エージェント（ＥＰＡ）と呼ばれる。種々のイベント処理エージェントの接続及び編成は、イベント処理ネットワーク（ＥＰＮ）と呼ばれるイベント・フロー図を形成する。例示的なイベント処理ネットワーク（ＥＰＮ）を示す図を図３に示す。全体が５０で示される例示的なネットワークは、複数の入力５２、５４、５６と、出力５８、６０と、ルータ６４と、チャネル６２によって接続されたＥＰＡ６６とを含む。
【００３６】
この例示的なイベント処理ネットワークにおいては、イベント・フロー図の中で種々のパターンが接続される。ｒ１からｒ９によって示されるノードは、イベントを更なる処理のために送るかどうかを判定する経路指定チャネルを含む。ＥＰＡは、パターン検出及びパターン集約を行う。３つの入力は、入院ステーション情報５６、血圧の数値５２、及び体温の数値５４を含む。出力は、医師５８と看護師６０を含む。入力データと、ＥＰＡによって行われる処理とに応じて、医師又は看護師にアラートを送ることができる。
【００３７】
本発明の一実施形態によれば、従来のイベント処理パターン言語は、オンライン・ストリーミング・イベントと履歴イベントとの両方についてのパターン検出を含むように拡張される。言語の拡張がストリーミング・イベントに加えて履歴パターン・マッチングを取り扱うようにすることには、１つはストリーミング・イベントについて、もう１つは履歴イベントについての２つの別個の言語及びシステムの場合に必須のグルー・コードを必要としなくなるという利点がある。ストリーミング・イベント及び履歴（即ち遡及）イベントの両方についての言語要素を組み入れた単一の言語の例が、下記の表２に示される。
【００３８】
イベント処理における言語的構造が、パターンである。以下の表２はパターンのリストの例である。
【表２】
2011086288.tif 000004
【００３９】
言語は、基本、閾値、相対値、状態、時間、及び空間カテゴリを含む、いくつかのカテゴリについてのパターンを含むことに留意されたい。また、言語は再帰を含み、従って、パターンのパターン構造などを用いることができる。しかしながら、典型的には、殆どのシステムは、１つ又は２つのレベルのパターン再帰のみを用いる。特定のシステム及びアプリケーションに応じて、より高いレベルの再帰を実装できることが分かる。
【００４０】
パターン言語に付加された遡及処理パターンは、典型的にはそれらをクエリの集合内で表現するシステムとは対照的である。本発明のパターン言語を用いて、イベント処理機能の全体がシームレスな言語で表現される。以下の例を考える。
【００４１】
例示的なパターンは、以下の通りである。
第１部分：単一の勤務日内に（総額で）２０，０００ドルを超える預金を行った人物は、マネー・ロンダリングの容疑者である。この容疑を補強するために、状態（modal）パターンを過去に適用する（即ち、遡及）。
第２部分：昨年の一週間の期間内に、同一人物が（総額で）５０，０００ドル又はそれ以上の預金を行い、同じ週内に少なくとも（総額で）５０，０００ドルを引き出していた。
【００４２】
上記の第１部分は、関連イベントを選択する時間的コンテキストが単一の「勤務日」であるものとして、「合計」パターンで表現できることに留意されたい。よって、各々の日について、このパターンのために実装されたＥＰＡの別のインスタンスを開いて閉じることになり、イベントはタイプ  預金であり、閾値は属性  預金額の「合計」である。パターンは、この属性の「合計」要素が２０，０００ドルを超えた場合に満たされたことになる。
【００４３】
しかしながら、上記の第２部分は、演算子が単一のイベント・セットに関するものであるため、パターン言語でそのまま表現することができない。したがって、イベント・セットのセットを考慮する必要がある（一週間の各々が１つのセットを構成する）。これについての解決策は、セットのセットに作用するパターンを２つのレベルで付加することである。
１．各セットについての規則的なパターン（この例では、一週間の期間）。
２．セットにまたがって作用する、各セットをより大きなセットの中の要素として見る状態パターン。
【００４４】
この例では、パターンは次のようになる。
一次コンテキスト＝昨年；二次コンテキスト＝週；
一次パターン＝時々；
二次パターン＝合計（預金額＞５０，０００ドル）
【００４５】
このパターンは、次のように実行される。最初に、一次コンテキストが、現在から時間を逆行するようにセットされる。一次コンテキストは、指定された時間単位に応じて二次コンテキストに区分される。次いで、各々の二次コンテキストは関連する時間間隔として扱われ、それに対して規則的なイベント処理パターンが適用される。この二次コンテキストについて、パターンの一致が存在する場合には、二次コンテキストは「真」としてマークされ、それ以外の場合は、二次コンテキストは「偽」としてマークされる。最後に、セット全体ついて状態パターン（常時、時々）が適用され、真又は偽が返される。真が返された場合には、オンライン・パターンは補強される。
【００４６】
例示的な遡及パターン・マッチング・プロセス（補強プロセス）を示すフロー図を図４に示す。規則的なストリーミング・イベント・パターン・マッチング・プロセスが行われる（ステップ７０）。履歴パターンを適用する必要がある場合には（ステップ７１）、コンテキストが逆行方向に開かれる（ステップ７２）。一次及び二次コンテキストによって、時間コンテキストが順行方向に進行するストリーミング・イベントを現時点で取り扱いながら、プロセスが時間を逆行して過去イベントを見ることができるようになり、そのためタイムトラベル効果を生み出していることに留意されたい。
【００４７】
パターン・マッチングが各々の関連する間隔に適用され（ステップ７４）、結果が収集されてモデル演算子に適用される（ステップ７６）。パターンが補強された場合には（ステップ７８）、パターン検出表示が生成され（ステップ８０）、補強されない場合には、パターン非検出表示が生成される（ステップ８２）。履歴パターンを適用する必要がない場合には、本方法は、パターン検出を続ける（ステップ８０）。状態パターンをイベント・セットのセットに適用することで、パターン言語の能力が拡張され、実行モデルが拡張されることに留意されたい。
【００４８】
本明細書において説明される実行モデルによって、パターンの両方の部分を、２つの異なる言語を用いることを必要とせずに同一の言語で書くことが可能になり、従って、システムの効率性が著しく向上する。代替的な実施形態においては、遡及イベント処理をサポートするために、異なる言語拡張を提供できることに留意されたい。
【００４９】
本発明の例示的な一実施形態による、オンライン・ストリーミング・イベント処理エージェントと遡及イベント処理エージェントとの両方の組み合わせ例を示す図を、図５に示す。全体が９０で示される組み合わせ例は、ストリーミングＥＰＡ９２と、履歴ＥＰＡ９４とを含む。ストリーミングＥＰＡは、２０，０００ドルを超える預金イベントを探す「合計」パターンを含む。その出力は、補強チャネル９８に入力される容疑者導出イベント１０２であり、補強チャネルは、容疑者導出イベントが更なる処理のために報告されるか、無視されるかを判定する。
【００５０】
履歴ＥＰＡ９４は「時々」パターンを含み、一年（今日を最終日とする）が一次コンテキスト、その一年のうちの各一週間が二次コンテキスト１００であり、各々が合計＞５０，０００ドルのパターンを有する。ＥＰＡ９４への入力は、容疑者導出イベント１０４である。容疑イベントが補強された場合（即ち、ＥＰＡ９４の評価が真である場合）には、補強イベント１０６は、補強チャネル９８に戻される。
【００５１】
組み合わされた最適化
本発明の一実施形態によれば、ストリーミング・イベント処理と履歴イベント処理との両方についてのパターンを同一の言語で（即ち、同一のＥＰＡを用いて）有することにより、システム全体を最適化することが可能になる。これは、遡及（即ち、履歴）処理をＥＰＡにマッピングすることによって可能となる。
【００５２】
イベント処理最適化の問題に関して、イベント処理アプリケーションを最適化するための１つの技術は、ＥＰＡを物理プロセッサ及び物理プロセッサ内のスレッドに割り当てることに関する判断を行うことである。最適化は、種々の所望の機能（例えば、スループットの最大化又は待ち時間の最小化）を有する場合があることに留意されたい。
【００５３】
例示的なイベント処理アプリケーションと、それに続くイベント処理ネットワークの層化とを示す図を、図６に示す。パーティションは、イベント処理アプリケーション１１０と、複数のＥＰＡ１１６を含むイベント処理ネットワーク（ＥＰＮ）依存関係グラフ１１２と、複数のＥＰＡからなる複数の層１１８を含む層化ＥＰＮ１１４とを含む。ネットワークは、ＥＰＮ依存関係グラフ１１２に基づいて区分される。パーティションは、グラフを、並列に実行することができるＥＰＡの集合に有効に区分する。この説明例では、３つの異なる層、即ち、Ｓ１、Ｓ２、及びＳ３が生成される。各々の層内では、ＥＰＡは他から独立していることに留意されたい。このことは、経験則を利用して各々のＥＰＡをプロセッサ／スレッドに割り当てて実行時における負荷分散を行う、更なる最適化のためのベースの役目を果たす。
【００５４】
本発明の例示的な一実施形態による例示的な高レベルの最適化プロセスを示すフロー図を図７に示す。本発明にとって実際の最適化自体も重要であるが、システムに対して最適化プロセスを実施できる能力は、本発明が、遡及イベント処理機能をＥＰＡにマッピングして、それを最適化プロセスの一部となるようにすることができるという事実によって可能となり、それは、最適化プロセスは、ＥＰＡを適切な層にマッピングできるように他のＥＰＡとのイベント・フロー依存関係に関する情報を必要とするからである。
【００５５】
最初に、最適化基準が適用され、最適化スキームが計算される（ステップ１２０）。各々のＥＰＡについて、プロセッサ（即ち、マシン）及びマシン内のスレッドを割り当てる（ステップ１２２）。ストリーミング・イベントの振舞いに変化が検出された場合（ステップ１２４）には、動的負荷分散を適用する（ステップ１２６）。
【００５６】
上述のように、遡及処理機能は、論理ＥＰＡにマッピングすることができる。ストリーミング・イベント・パターンでは、典型的に、各々の論理ＥＰＡは、単一の物理ＥＰＡにマッピングされる。しかしながら、遡及の場合においては、このＥＰＡは、ＥＰＡの一部である二次コンテキストが互いに独立であるという事実により、さらに分解することができる。この分解は、上で説明した図６に示されている。
【００５７】
イベント処理エージェント（ＥＰＡ）を実行時アーチファクトに区分する例を示す図を、図８に示す。この図は、さらに分解することができる、履歴イベントをＥＰＡグラフの一部として見ることを可能にするエージェントの集合１３２によって強化された、ストリーミング・イベントＥＰＮ依存関係グラフを示すものであり、これにより、両方のタイプのパターン・マッチング、即ちストリーミング及び履歴について、単一の最適化スキームの使用が可能になる。
【００５８】
グラフは、複数のストリーミングＥＰＡ１３０と、履歴ＥＰＡ１３４及び状態パターン評価ＥＰＡ１３６の集合１３２とを含む。ＥＰＡ１３４（即ち、１からＮまでの間隔についてのパターン・マッチング）は、並列に実行することができる。一次コンテキスト１３６は、Ｎ個のＥＰＡ１３４の全ての出力を収集し、評価する。
【００５９】
本明細書において用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を限定することを意図していない。本明細書において用いられるときには、単数形の「１つの（ａ）」、「１つの（ａｎ）」及び「その（ｔｈｅ）」という用語は、文脈が明確に他の場合を指示していない限り、複数形も含むことを意図している。「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書で用いられるときには、述べられた特徴、整数、ステップ、操作、要素、及び／又はコンポーネントの存在を特定するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び／又はその集合の存在又は付加を排除するものではないことが、さらに理解されるであろう。
【００６０】
特許請求の範囲における全てのミーンズ・プラス・ファンクション要素又はステップ・プラス・ファンクション要素の対応する構造、材料、行為、及び等価物は、具体的に請求される他の特許請求要素と組み合わせて本機能を実施するためのいずれかの構造、材料、又は行為を含むことを意図している。本発明の記載は、例示及び説明のために提示されるが、網羅的であること又は本発明を開示された形態に限定することを意図するものではない。当業者であれば多数の修正及び変更に容易に想到するため、本発明は、本明細書において説明される限られた数の実施形態に限定されないことが意図される。従って、全ての適切な変形、修正、及び等価物を、本発明の主旨及び範囲内にあるものとして用いることができる。実施形態は、本発明の原理及び実際の用途を最も良好に説明し、当業者以外であっても、企図される特定の使用に適合する種々の修正を伴う種々の実施形態について本発明を理解することができるように、選択され、説明された。
【００６１】
特許請求の範囲は、本発明の主旨及び範囲内にある本発明の全てのそうした特徴及び利点に及ぶことが意図されている。当業者であれば多数の修正及び変更に容易に想到するため、本発明は、本明細書において説明される限られた数の実施形態に限定されないことが意図される。従って、全ての適切な変形、修正、及び等価物を、本発明の主旨及び範囲内にあるものとして用いることができる。
【図１】
2011086288.tif 000005
【図２】
2011086288.tif 000006
【図３】
2011086288.tif 000007
【図４】
2011086288.tif 000008
【図５】
2011086288.tif 000009
【図６】
2011086288.tif 000010
【図７】
2011086288.tif 000011
【図８】
2011086288.tif 000012