(57)【特許請求の範囲】
【請求項１】
複合イベント処理（ＣＥＰ）内でパラメータ化されたクエリを設定するためのシステムであって、
メモリと、
前記メモリに結合されたプロセッサと、を備え、
前記メモリは、命令セットを内部に格納させており、前記命令セットは、前記プロセッサによって実行されると、前記プロセッサに、
１つ以上のバインド変数を含むクエリテンプレートを設定させ、
前記１つ以上のバインド変数に対応するパラメータセットを設定させ、
前記１つ以上のバインド変数の位置を判断するために前記クエリテンプレートを解析させ、
設定された前記パラメータセットをスキャンして、どの前記パラメータセットが前記１つ以上のバインド変数にバインドされるのかを判断させ、
前記パラメータセットにバインドされると判断された前記１つ以上のバインド変数をバインドさせ、
前記クエリテンプレートに、タイプを有しない前記１つ以上のバインド変数に基づきユーザの述語を挿入させ、
バインドされた前記１つ以上のバインド変数を対応する前記パラメータセットに置換させ、
イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断させ、
ランタイム時に、判断された前記プレースホルダを、前記パラメータセットに対応するパラメータ値に置換させ、
前記バインド変数の置換と前記プレースホルダの置換に基づき、１以上の変数が異なる複数のクエリを生成させる、システム。
【請求項２】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、前記１つ以上のバインド変数の前記判断された位置のマップを構築させ、
前記１つ以上のバインド変数を対応する前記パラメータセットに置換させることは、前記１つ以上のバインド変数の前記判断された位置のマップを用いて、バインドされた前記パラメータセットを前記クエリテンプレート内に置くことをさらに含み、
前記１つ以上のバインド変数に対応する前記パラメータセットを設定することは、静的または動的に実行される、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項３】
前記１つ以上のバインド変数に対応する前記パラメータセットを設定することは、前記クエリテンプレートの展開時にコンフィグファイルを用いることで静的に実行される、請求項２に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項４】
前記１つ以上のバインド変数に対応する前記パラメータセットを設定することは、モジュールマネージメントソリューションを用いることで動的に実行され、
コンフィグファイルは、アプリケーションアソシエーション、プロセッサアソシエーション、クエリルール、前記クエリテンプレート、前記パラメータセット、または前記バインディングのうち、１つ以上のものを含む、請求項２に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項５】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記１つ以上のバインド変数が置換された前記パラメータセットを含む前記クエリテンプレートに基づいて、新しいクエリのインスタンスを生成させ、
ランタイムシステムのために新しい前記パラメータセットを用いて前記新しいクエリのインスタンスを生成させ、
前記新しいクエリをＣＥＰサーバに注入させ、
前記新しいクエリに基づいて、クエリ実行計画を構築させ、
継続クエリとしてランタイム環境に前記クエリ実行計画を追加させ、
前記継続クエリを実行させる、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項６】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
多数のパラメータセットが同じバインド変数に対応しているということを判断させ、
同じ前記バインド変数に対応している前記多数のパラメータセットの各々について、独立した新しいクエリのインスタンスを生成させる、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項７】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記パラメータセットをストリングに変換させ、
前記パラメータセットの前記ストリングを確認して前記パラメータセットのフォームを判断させ、
前記パラメータセットの判断されたタイプと対応するバインド変数のタイプとを比較させ、
対応する前記バインド変数および前記パラメータセットの前記タイプは、INT、FLOAT、LONG、BIGDECIMAL、DOUBLE、およびSTRINGのうち、１つ以上のものを含み、
前記プロセッサに、さらに、
前記対応するバインド変数の前記タイプにマッチする前記パラメータセットの判断された前記タイプに応じて、前記パラメータセットを検証させる、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項８】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
新しいパラメータセットがバインディングのために指定されていることを判断させ、
新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを特定させ、
新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成された前記クエリを削除させる、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項９】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記クエリを生成させ、
前記イベントストリームを処理させ、
前記システムは、ＣＱＬエンジンを含むＣＥＰサーバをさらに備え、
前記ＣＱＬエンジンは、複数のＣＥＰアプリケーションのインスタンスを生成し、
前記ＣＥＰサーバと通信するビジュアライザをさらに備え、
前記ビジュアライザは、処理された前記イベントストリームからの結果情報を表示するように構成されている、請求項１に記載のＣＥＰ内でパラメータ化されたクエリを設定するためのシステム。
【請求項１０】
コンピュータに、複合イベント処理（ＣＥＰ）内でパラメータ化されたクエリを設定する方法を実行させるためのプログラムであって、
前記方法は、
１つ以上のバインド変数を含むクエリテンプレートを設定し、
前記１つ以上のバインド変数に対応するパラメータセットを設定し、
前記１つ以上のバインド変数の位置を判断するために前記クエリテンプレートを解析し、
設定された前記パラメータセットをスキャンして、どの前記パラメータセットが前記１つ以上のバインド変数にバインドされるのかを判断し、
前記パラメータセットにバインドされると判断された前記１つ以上のバインド変数をバインドし、
前記クエリテンプレートに、タイプを有しない前記１つ以上のバインド変数に基づきユーザの述語を挿入し、
バインドされた前記１つ以上のバインド変数を対応する前記パラメータセットに置換し、
イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断し、
ランタイム時に、判断された前記プレースホルダを、前記パラメータセットに対応するパラメータ値に置換し、
前記バインド変数の置換と前記プレースホルダの置換に基づき、１以上の変数が異なる複数のクエリを生成させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
相互参照
本ＰＣＴ出願は、２０１１年７月２８日に出願された米国特許出願番号第１３／１９３，３７７号の優先権を主張し、この米国特許出願番号第１３／１９３，３７７号は、「複合イベント処理におけるパラメータ化されたクエリ／ビューへのサポート（"SUPPORT FOR PARAMETERIZED QUERY/VIEW IN COMPLEX EVENT PROCESSING"）」と題された、２０１０年９月１７日に出願された同時係属米国仮特許出願番号第６１／３８４，１８２号からの優先権を主張する。同時係属米国仮特許出願番号第６１／３８４，１８２号は、すべての目的のために、あたかも全文において述べられたかのように、引用により本明細書に援用される。
【０００２】
背景
本発明に係る実施形態は、データ処理システムに関し、より特定的には、時間の意味論（temporal semantics）を有するストリーミングデータに関するシステムおよびアプリケーションに関する。
【背景技術】
【０００３】
概して、複合イベント処理（Complex Event Processing:ＣＥＰ）は、分散型メッセージベースのシステム、データベース、およびアプリケーションからリアルタイムに情報を集計するアプローチであり、さもなければ注目されずに終わってしまうであろうパターンおよび傾向を識別するためのルールを動的に適用する。これにより、企業は、非常に複雑な、分散型の、異種ＩＴ環境の全域にわたって、一見関係のないイベントによって表わされる例外および機会を識別し、また予測さえもすることが可能となる。ＣＥＰは、ニアリアルタイムで高速ストリーミングデータにおけるパターンを相互に関連付け、集計し、強化し、そして検知するために利用されてもよい。
【０００４】
さらに、継続的クエリ言語（Continuous Query Language：ＣＱＬ）ステートメントは、イベントを含むイベントストリームを処理するために利用される。イベントストリームは、データ部を参照するタプル（tuple）を含んだ、一連の＜tuple，timestamp＞対と考えられ得る。ストリームは、複数のタプルを有し得るし、タイムスタンプは、イベントストリーム内のタプルについて順序を定義し得る。Oracle（登録商標）Complex Event Processing(ＯＣＥＰ）は、そのようなイベントストリームを処理するために利用される。
【０００５】
さらに、ＣＥＰアプリケーションは、複数のクエリおよびビューを有することができ、そして、これらはプロセッサによって実行される。あらゆる現実世界のアプリケーションは、範囲パラメータのように、ある値が異なるのみである何百ものクエリおよびビューから構成されていてもよい。ベースクエリまたはベースビューにおけるわずかな変化が、何百もの従属クエリおよび従属ビューに影響を及ぼすことになるため、そのようなシナリオにおいては、何百ものクエリおよびビューを維持することは悪夢になり得る。
【０００６】
ある形式のパラメータ化またはワイルドカードプレースホルダ（wildcard placeholder）機能の利用は、アプリケーション開発者が、基準が少し異なるだけで類似するクエリおよびビューを書く際の手助けとなる。一実施形態では、ユーザは、ランタイム時の値でバインドされ得るワイルドカードプレースホルダを置くことができる。パラメータ化されたクエリまたはビューは、異なる値で利用され得るテンプレートとして見なされ得る。これにより、ユーザは、バインディング（binding）において設定される異なる値についてマルチプルＣＱＬステートメントを内部で生成可能なシングルＣＱＬステートメントを書くことができる。たとえば、
【０００７】
【数１】
0005864583.tif 000002
【０００８】
上述したクエリは、プロジェクトリストの一定値またはＷＨＥＲＥ条件の一定値のいずれが異なるということに留意すべきである。そのようなクエリが何百も存在する場合には、どんなビジネスユーザであってもそのような何百ものクエリおよびビューを書かなくてはならないかもしれない。したがって、これらおよび他の理由で、技術の向上が必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００９】
概要
本発明に係る実施形態は、あらゆる種類の型（type）検査などもせずに、ＣＥＰストリング置換を利用して、バインド変数について設定されるパラメータセットにバインド変数を置き換えることを含む。これは、バインド変数でも型検査などを通過する必要があるという点で標準データベースとは異なる。結果として、ＣＥＰコンテキスト内でのバインド変数は、より柔軟で、より強力な解決手段を提供し、当該バインド変数によりユーザは任意の述語を挿入することができる。したがって、ＣＥＰ環境内でのバインド変数は型がなくてもよい。
【００１０】
本発明は、複合イベント処理（ＣＥＰ）内でパラメータ化されたクエリを設定する方法を含む。方法は、１つ以上のバインド変数を含むクエリテンプレートを設定するステップと、１つ以上のバインド変数に対応するパラメータセットを設定するステップと、１つ以上のバインド変数の位置を判断するためにクエリテンプレートを解析するステップとを含む。方法は、さらに、設定されたパラメータセットをスキャンして、どのパラメータセットが１つ以上のバインド変数にバインドされるのかを判断するステップと、パラメータセットにバインドされると判断された１つ以上のバインド変数をバインドするステップと、バインドされた１つ以上のバインド変数を対応するパラメータセットに置換するステップとを含む。
【００１１】
方法は、さらに、１つ以上のバインド変数の当該判断された位置のマップを構築するステップを含む。１つ以上のバインド変数を対応するパラメータセットに置換するステップは、１つ以上のバインド変数の当該判断された位置のマップを用いて、バインドされたパラメータセットをクエリテンプレート内に置くステップを含む。１つ以上のバインド変数に対応するパラメータセットを設定するステップは、静的または動的に実行される。
【００１２】
さらに他の実施形態では、１つ以上のバインド変数に対応するパラメータセットを設定するステップは、クエリテンプレートの展開時にコンフィグファイルを用いることで静的に実行され、１つ以上のバインド変数に対応するパラメータセットを設定するステップは、モジュールマネージメントソリューションを用いることで動的に実行される。コンフィグファイルは、アプリケーションアソシエーション（application association）、プロセッサアソシエーション（processor association）、クエリルール、クエリテンプレート、パラメータセット、またはバインディングのうち、１つ以上のものを含む。
【００１３】
方法は、さらに、１つ以上のバインド変数が置換されたパラメータセットを含むクエリテンプレートに基づいて新しいクエリのインスタンスを生成するステップと、新しいクエリのインスタンスを生成するステップと、新しいクエリをＣＥＰサーバに注入するステップとを含む。方法は、さらに、新しいクエリに基づいてクエリ実行計画を構築するステップと、継続クエリとしてランタイム環境にクエリ実行計画を追加するステップと、継続クエリを実行するステップとを含む。
【００１４】
方法は、さらに、多数のパラメータセットが同じバインド変数に対応しているということを判断するステップと、同じバインド変数に対応している多数のパラメータセットの各々について、独立した新しいクエリのインスタンスを生成するステップとを含む。
【００１５】
他の実施形態では、複合イベント処理（ＣＥＰ）内でパラメータ化されたクエリを設定するためのシステムが説明される。システムは、メモリと、メモリに結合されたプロセッサとを含む。メモリは、命令セットを内部に格納させており、命令セットは、プロセッサによって実行されると、プロセッサに、イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断させ、プレースホルダのためのパラメータを判断させ、プレースホルダをパラメータに置き換えることでパラメータ化されたクエリからクエリを生成させ、当該クエリを生成させ、イベントストリームを処理させる。
【００１６】
システムは、さらに、ＣＱＬエンジンを含むＣＥＰサーバを含む。ＣＱＬエンジンは、ＣＥＰアプリケーションのインスタンスを生成する。システムは、ＣＥＰサーバと通信するビジュアライザ（visualizer）をも含む。ビジュアライザは、処理されたイベントストリームからの結果情報を表示するように構成されている。
【００１７】
さらに他の実施形態では、コンピュータ可読媒体が説明される。コンピュータ可読媒体は、１つ以上のバインド変数を含むクエリテンプレートを設定するための命令と、１つ以上のバインド変数に対応するパラメータセットを設定するための命令と、１つ以上のバインド変数の位置を判断するためにクエリテンプレートを解析するための命令とを含む。コンピュータ可読媒体は、さらに、設定されたパラメータセットをスキャンしてどのパラメータセットが１つ以上のバインド変数にバインドされるのかを判断するための命令と、パラメータセットにバインドされると判断された１つ以上のバインド変数をバインドするための命令と、バインドされた１つ以上のバインド変数を対応するパラメータセットに置換するための命令とを含む。
【００１８】
コンピュータ可読媒体は、さらに、新しいパラメータセットがバインディングのために指定されていることを判断するための命令と、新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを特定するための命令と、新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを削除するための命令と、ランタイムシステムのために新しいパラメータセットを用いてクエリのインスタンスを生成するための命令とを含む。
【００１９】
コンピュータ可読媒体は、さらに、パラメータセットをストリングに変換するための命令と、パラメータセットのストリングを確認してパラメータセットのフォームを判断するための命令と、パラメータセットの判断されたタイプと対応するバインド変数のタイプとを比較するための命令と、対応するバインド変数のタイプにマッチするパラメータセットの判断されたタイプに応じて、パラメータセットを検証するための命令とを含む。対応するバインド変数およびパラメータセットのタイプは、INT，FLOAT，LONG，BIGDECIMAL，DOUBLE，およびSTRINGのうち、１つ以上のものを含んでもよい。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に従うイベント処理サーバのブロック図である。
【図２Ａ】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのフロー図である。
【図２Ｂ】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのフロー図である。
【図２Ｃ】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのフロー図である。
【図３】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのフロー図である。
【図４Ａ】本発明の実施形態に従うＣＥＰにおけるパラメータ化されたクエリのブロック図である。
【図４Ｂ】本発明の実施形態に従うＣＥＰにおけるパラメータ化されたクエリのブロック図である。
【図４Ｃ】本発明の実施形態に従うＣＥＰにおけるパラメータ化されたクエリのブロック図である。
【図４Ｄ】本発明の実施形態に従うＣＥＰにおけるパラメータ化されたクエリのブロック図である。
【図５Ａ】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのブロック図である。
【図５Ｂ】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのブロック図である。
【図６】本発明の実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのユーザインターフェイスである。
【図７】本発明の実施形態に従って利用され得るシステム環境の簡略ブロック図である。
【図８】本発明の実施形態に従って利用され得るコンピュータシステムの簡略ブロック図である。
【発明を実施するための形態】
【００２１】
詳細な説明
以下の記載では、説明を目的として、本発明のさまざまな実施形態の理解のために多くの詳細が説明される。しかしながら、ある実施形態が、これらの詳細の一部なしに実行され得るということは当業者にとっては明らかであろう。
【００２２】
本発明のある局面は、いくつかの特定の値が異なるＣＥＰにおいてクエリおよび／またはビューを書くための簡易な方法をユーザに提供するパラメータ化アプローチを含む。たとえば、上述したクエリは、テンプレートとして機能することができ、後に、バインディングのための可能値を設定することができる単一のパラメータ化されたクエリを有することができる。当該バインディングは、内部で多数のクエリおよびビューを生成してもよい。
【００２３】
以下のクエリ：
【００２４】
【数２】
0005864583.tif 000003
【００２５】
では、：１と：２とはプレースホルダとして機能する。異なる値が展開時またはランタイム時にこれらのプレースホルダにバインドされ得る。さらに、そのようなクエリを処理するように構成されたプロセッサ構成要素に関連付けられたコンフィグファイルは、次のように記載されてもよい：
【００２６】
【数３】
0005864583.tif 000004
【００２７】
上記の例では、MarketQuery CQLクエリは、２つのプレースホルダを含む。１つは、SELECT節の中に、もう１つはWHERE節の中に含まれる。この実施形態では、これらのプレースホルダのための値は、コンフィグファイル自体にも含まれる（または、これらのプレースホルダのための値はランタイム中に設定されてもよい）。<binding id="MarketQuery">要素は、ランタイム時にMarketQueryに引き継がれるパラメータセットのリストを指定している。各々のパラメータセットは、単一の<params>要素で指定される。パラメータ化されたクエリ内には２つのプレースホルダが存在しているので、各々の<params>要素が、コンマで分離された２つの値を指定する。
【００２８】
ランタイム時に、プレースホルダが対応するパラメータ値に置き換えられた後、前にパラメータ化されたクエリが事実上次の３つのクエリに分解される：
【００２９】
【数４】
0005864583.tif 000005
【００３０】
さらに、本発明に係るある局面は、パラメータセットを操作するためにJava（登録商標）MBean API'sを利用することを含む。一実施形態では、パラメータ化されたクエリおよびビューは、展開時またはランタイム時にクライアントから追加され得る。さらに、Java（登録商標）Management Extensions（ＪＭＸ）アーキテクチャベースのMBean APIsが、パラメータ化されたクエリまたはビューに対応するバインディングにアクセスするために、または当該バインディングを修正するために設定されてもよい。クライアントは、同じことをするためにMBean APIsを呼び出すこともできる。一実施形態では、次のMBean APIsがそのようなバインディングをサポートするために設定されてもよい：
【００３１】
【数５】
0005864583.tif 000006
【００３２】
したがって、本発明に係る実施形態によると、ユーザは、展開時またはランタイム時に異なるバインディングにバインドされ得る単一のパラメータ化されたクエリテンプレートまたはビューテンプレートを書くことができる。ユーザは、内部で新しいクエリを生成し、それを実行する新しいバインディングを設定することができる。このクエリおよびビューのテンプレートバージョンは、いくつかの定数だけが異なるクエリを追加および／または削除するための効果的な方法を提供する。さらに、クエリおよびビューのそのようなパラメータ化またはテンプレートスタイルは、何百ものクエリを動的に修正／追加／削除するための非常にユーザフレンドリな方法を提供する。それは、ＣＱＬクエリを書くためのユーザフレンドリな方法を提供し、同様の多くのルールを作る際の使いやすさを提供し、そのようなルールの簡易な管理方法を提供する。
【００３３】
本発明のさらに他の局面では、イベントストリームを処理するためのパラメータ化されたクエリ内に存在するプレースホルダを判断するための技術を提供する。次に、プレースホルダのためのパラメータが判断されてもよい。これは、展開時（たとえば、上述したようにコンフィグファイル内で指定される）またはランタイム中に提供されてもよい。次に、プレースホルダをパラメータに置換することによって、クエリが、パラメータ化されたクエリから生成されてもよい。プレースホルダのためのパラメータセットが多数存在する場合には、多数のクエリが単一のパラメータ化されたクエリから生成されてもよい。次に、置換から生成されたクエリは、クエリに関する実行可能な命令を生成するように構成されているＣＱＬエンジンに設定されてもよい。次に、実行可能な命令が、イベントストリームを処理するために実行されてもよい。
【００３４】
次に図１を参照すると、本発明に係る実施形態を具体化し得るシステム１００の簡略ブロック図が示されている。図１に示されているように、システム１００は、イベント処理サーバ１０２を含み、イベント処理サーバ１０２は、１つ以上の入力データまたはイベントストリーム１０４，１０６，および１０８を処理するように構成されている。ストリーム１０４，１０６，および１０８は、各種ソースから受信されてもよく、その各種ソースは、データベース、ファイル、メッセージサービス、さまざまなアプリケーション、さまざまな種類のセンサのような装置（たとえば、ＲＦＩＤセンサ、温度センサなど）、ティッカー（ticker）などを含む。サーバ１０２は、プッシュ型機構、またはプル型機構または他の機構を介してストリームを受信してもよい。
【００３５】
データまたはイベントストリームは、リアルタイムな一連のイベントである。多数のイベントがストリーム内で受信されてもよい。したがって、データストリームはバインドされていないデータセットのストリームとして考えることができる。一実施形態では、データストリームは、一連の＜tuple, timestamp＞対である。タプルとはストリームのデータ部のことを言う。タプルは、テーブルのロー（row）と同様なものとして考えられてもよい。ストリーム内のタプルは、スキーマを有する。ストリームは、多数のタプルを含み得る。タイムスタンプは、データストリーム内のタプルについて順序を定義する。データストリーム内のタイムスタンプは、アプリケーションの時間の概念を反映し得る。たとえば、タイムスタンプは、イベントストリームを受信するシステム上のアプリケーションによってセットされ得る。受信システムは、たとえば、イベントストリームの構成と、タイムスタンプとしてアプリケーション時間またはシステム時間を利用するために用いられる機構とを定義するために用いられるCREATE STREAM DDLにおいて指定された場合には、アプリケーションによって構成されるように受信時にイベントをタイムスタンプしてもよい。他の実施形態では、タプルと関連付けられたタイムスタンプは、データイベントを送るアプリケーションの時間に対応していてもよい。タイムスタンプは、ストリームのスキーマの一部である。ストリーム内には１または多数のタプルが同じタイムスタンプで存在し得る。ストリーム内のタプルは、一連のイベントとして見ることができ、したがって、データストリームは、イベントストリームとも呼ばれる。そのため、イベントストリームは、各々が関連付けられたタイムスタンプに一連のイベントを含むと考えることができる。たとえば、イベントストリームは、センサから読み取られた１０度、１５度、２０度などのような一連の温度と、関連付けられたタイムスタンプとを含んでいてもよい。このアプリケーションの目的のために、“タプル”および“イベント”という用語は互換的に使用されている。
【００３６】
システム１００は、イベントストリームを処理するように構成されたイベント処理サーバ１０２を含む。イベント処理サーバ１０２は、１つ以上のイベントストリームを受信してもよい。図１に示すように、イベント処理サーバ１０２は、ストリーム１０４、１０６、および１０８を受信する。各々のイベントストリームは、１つ以上のイベントを含む。ストリーム内のイベントは、特定の時点で順にサーバ１０２によって受信される。サーバ１０２は、入力ストリーム上でさまざまな種類の処理を実行するように構成されている。本発明に係る実施形態に従うと、サーバ１０２は、サーバ１０２によって受信されたイベントストリーム内のイベントに基づいて、入力イベントストリーム内のパターンを検知するように構成されている。一実施形態では、サーバ１０２は、サーバ１０２がイベントを受信するときに分析されているストリームのイベント上でバックトラッキング処理を実行せずに、パターンマッチングを実行する。パターンマッチングは、入力ストリームに適用されるある種類の継続クエリを利用して実行されてもよい。サーバ１０２は、また、入力イベントストリーム上および他の操作上で他の継続クエリを実行するなど、入力ストリーム上で他の種類の処理を実行してもよい。イベント処理サーバの例としては、Oracle（登録商標）社のOracle Complex Event Processorがある。あるいは、MATCH_RECOGNIZEも、パターンマッチングを実行するために用いられてもよい。
【００３７】
図１に示された実施形態では、サーバ１０２は、パターンマッチングモジュール１１０を含み、パターンマッチングモジュール１１０は、１つ以上のイベントストリームのためのパターンマッチングに関連する処理を実行するように構成されている。図１に示すように、パターンマッチングモジュール１１０は、パターン入力インターフェイス１１２、クラステクニックデタミネータ（class-technique determinator）１１３、オートマトンジェネレータ（automaton generator）１１４、およびマッチャー（matcher）１１６を含む。パターン入力インターフェイス１１２は、イベントストリーム内でマッチさせる対象のパターンを指定する情報を受信するためのインターフェイスを提供する。パターン入力インターフェイス１１２は、マッチさせる対象の１つ以上のパターンを指定する情報を入力可能にするグラフィカル・ユーザ・インターフェイス、マッチさせる対象のパターンを指定するためのコマンドラインインターフェイス、または他のインターフェイスを提供してもよい。マッチさせる対象のパターンは、サーバ１０２のユーザによって指定されてもよい。マッチさせる対象のパターンを特定する情報は、他のソースから受信されてもよく、たとえば、他の構成要素もしくはイベント処理サーバ１０２のモジュール、または、他のシステムもしくはアプリケーションから受信されてもよい。
【００３８】
一実施形態では、マッチさせる対象のパターンは、正規表現を用いて指定される。正規表現は、マッチさせる対象のパターンを表す記号のストリング（相関名または相関変数とも称される）である。正規表現は、１つ以上の記号を用いて構築され、１つ以上の演算子を利用してもよい。演算子の例としては、連結（concatenation）演算子（たとえば、正規表現における記号間での“ＡＮＤ”演算子は、記号間のＡＮＤ関係を示すために用いられてもよい）、代替演算子（たとえば、縦棒'|'は、記号に関するＯＲ条件を示す正規表現において記号を分離してもよい）、１つ以上の限定記号、グループ化演算子（たとえば、丸括弧で示される）などを含むがこれらに限定されない。限定記号の例としては、限定記号が関連付けられる記号の０以上のオカレンス（occurrence）を意味するアスタリスク'*'、限定記号が関連付けられる記号の１以上のオカレンスを意味するプラス記号'+'、限定記号が関連付けられる記号の０または１のオカレンスを意味するクエスチョンマーク'?'、リラクタント（reluctant）限定記号などを含む。正規表現のための関連付けられたシンタックスを含む、利用され得る演算子および限定記号の例は、Fred Zemkeらによる“Pattern Matching in Sequence of Rows (12)”、ISO/IEC JTCi/SC32 WG3:URC-nnn、２００７年７月３１日付けANSI NCITS H2-2006-nnnにおいて提供および記載されている。その全内容は、すべての目的のために、引用により本明細書に援用される。
【００３９】
従来、正規表現は、主に、ストリング内のパターンを見つけるために利用されてきた。本発明に係る実施形態では、正規表現力は、イベント処理サーバ１０２で受信されるイベントストリーム内のパターンにマッチさせるために利用される。正規表現は、マッチさせる対象のパターンを特定するための単純、かつ簡潔、かつ柔軟性のある方法を提供する。図１に示される実施形態では、イベント処理サーバ１０２は、１以上のイベントストリーム内でマッチさせる対象の正規表現を指定するパターン情報１１８を受信してもよい。一実施形態では、パターンは、パターンマッチングモジュール１１０のパターン入力インターフェイス１１２を用いて指定されてもよい。
【００４０】
パターン情報１１８は、異なる言語を用いて設定されてもよい。一実施形態では、データベースをクエリするために一般に用いられるＳＱＬのようなプログラミング言語が利用されてもよい。イベントストリームに関して、マッチさせる対象のパターンを表現するためのＳＱＬが拡張されてもよい。たとえば、パターン情報１１８は、ＳＱＬクエリを指定してもよく、当該ＳＱＬクエリは、イベント処理サーバ１０２によって受信された１以上のイベントストリーム内においてマッチさせる対象のパターンを指定する正規表現を含む。
【００４１】
Oracleは、複合イベント処理（CEP）製品においてＣＱＬ言語（継続クエリ言語）をサポートする。ＣＱＬは、ストリーム処理のために拡張したＳＱＬと極めて類似している。パターンマッチング構成は、イベントストリームに関してのパターンマッチング要件を特定する目的のために、ＣＱＬを拡張するためＣＱＬにおいて採用されてきた正規表現（たとえば、Fred Zemkeらによる“Pattern Matching in Sequence of Rows (12)”、 ISO/IEC JTCi/SC32 WG3:URC-nnn、２００７年７月３１日付けANSI NCITS H2-2006-nnnに記載された構成であり、その全内容は、すべての目的のために、引用により本明細書に援用される）を介してパターンマッチングを指定するためにＳＱＬを拡張するよう提案している。
【００４２】
典型的には、クエリパターンに関するパターンマッチングは、単一の入力ストリーム上でのみ行なわれる。また、パターンマッチングは、たとえば、ＣＱＬを用いて、多数のイベントストリーム上で実行されてもよい。一実施形態では、これは、まず関連するすべての入力ストリームのＵＮＩＯＮを実行することでなされてもよい。当該入力ストリーム上では、パターンマッチングは、中間ストリームに対応しているビューを定義する結果に伴ってなされるようになっており、マッチさせる対象のパターンがこの単一の中継ストリーム上で指定され得る。次に、そのパターンをビューに含まれているすべてのストリームにマッチさせる。
【００４３】
次に、図２Ａを参照して、本発明に係る実施形態に従う、ＣＥＰにおいてパラメータ化されたクエリを実行する方法２００を説明する。ブロック２０５のプロセスでは、１つ以上のバインド変数を含むクエリテンプレートが設定される。バインド変数に対応するパラメータセット（すなわち、バインド変数がバインドされたもの）が設定される（ブロック２１０のプロセス）。一実施形態では、パラメータセットが静的に（たとえば、コンフィグファイルを介して典型的には展開時になされる）またはランタイム時に動的に（たとえば、ＪＭＸもしくは他の機構を用いて）設定されてもよい。その結果、ＪＭＸを用いる動的プロビジョニングはランタイム中に利用され、また、それは、パラメータセットの削除のため、新しいパラメータセットの設定のためなどに利用され得る。
【００４４】
ブロック２１５のプロセスでは、クエリテンプレートがバインド変数の位置を判断するために解析される。一実施形態では、バインド変数は、たとえば、：１、：２、：３などで識別されてもよい。クエリ内のバインド変数の順序は、１、２、３などの順序でなくてもよい。その結果、バインド変数の当該判断された位置のマップが構築されてもよい（ブロック２２０のプロセス）。
【００４５】
ブロック２２５のプロセスでは、設定されたパラメータリストセットをスキャンして、対応するバインド変数にバインドされたパラメータセットを判断してもよく、それから、バインディングが起こってもよい（ブロック２３０のプロセス）。ブロック２３５のプロセスでは、バインド変数がパラメータセットに置換されてもよい。
【００４６】
図２Ａの‘Ａ’点から図２Ｂの‘Ａ’点に移動して、本発明に係る実施形態に従うと、ＣＥＰにおいてパラメータ化されたクエリを実行する方法２０１が説明される。ブロック２４０の決定では、同じバインド変数セットに関する多数のパラメータセットが存在するかどうかを判断する。たとえば：
【００４７】
【数６】
0005864583.tif 000007
【００４８】
さらに、多数組のパラメータセットが同じバインド変数に対応していないと判断された場合、単一の新しいクエリが複数組のパラメータセットで生成される（ブロック２４５のプロセス）。多数のパラメータセットが同じバインド変数に対して設定されていると判断された場合、各々のパラメータのために、独立した新しいクエリのインスタンスが生成される（ブロック２５０のプロセス）。
【００４９】
したがって、ブロック２５５のプロセスで、インスタンスが生成されたクエリは、ＣＥＰサーバ内に注入される（クエリはＣＱＬエンジンに送られる）。次に、ＣＱＬエンジンは、クエリ実行計画を構築し（ブロック２６０のプロセス）、ランタイム環境にクエリを継続クエリとして追加する（ブロック２６５のプロセス）。最後に、ブロック２７０のプロセスで、インスタンスが生成された１または複数のクエリが実行される。
【００５０】
次に図２Ｃを参照して、本発明に係る実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行する方法２０２が説明される。ブロック２７５のプロセスで、新しいパラメータ（古いパラメータの代わりに）がバインドパラメータに対して指定されてもよい。そのような場合には、古いパラメータでインスタンスが生成されたクエリが特定される（ブロック２８０のプロセス）。
【００５１】
したがって、古いパラメータを用いて特定されたクエリは、ランタイム環境から削除される（ブロック２８５のプロセス）。ブロック２９０のプロセスで、ランタイムシステムに対して新しいパラメータセットを用いるクエリのインスタンスが生成される。上述したような処理は、隣接したパラメータセットを用いてされてもよい。たとえば、バインド変数の位置マップがすでに作成されている場合には、これまでのステップを繰り返す必要はなく、新しいパラメータセットがスキャンされ、置換が実行される処理が継続できる。要するに、終了するクエリは、新しいパラメータセットを有する、インスタンスが生成された新しいクエリに置換される。
【００５２】
さらに、パラメータセットは、クエリテンプレートを含むルールに拘束されてもよい。一実施形態では、ビュー定義（たとえば、ＣＱＬを用いてされる）は、バインド変数を用いてもよい。継続クエリ、“パラメータ化されたクエリ”、または“クエリテンプレート”のコンテキスト内でのパラメータ化は、少なくとも１つのバインド変数を有するクエリを含む。
【００５３】
次に、図３を参照して、本発明に係る実施形態に従うＣＱＬおよびビジネスクエリのライフサイクルを表わすための方法３００が説明される。ブロック３０５ａでＩＴロール（role）が作り出され、それは、プロジェクトリスト、パラメータセット、および条件３０５ｂを含む。さらに、ブロック３０５ｃで、ＩＴユーザ／ビジネスユーザアナリストの共同ルールが作り出される。
【００５４】
ブロック３１０で、クエリおよびビューがパラメータ化される。たとえば、自然言語＋０．．．１パラメータ化されたクエリ＋０．．．ｎパラメータ化されたビュー、および自動ビュー／クエリ、従属トラッキング３１０ａが、生成されてもよい。ブロック３１５で、ビジネステンプレートが、ビジネスアナリストロール３１５ａのために作り出される。ブロック３１５ｂで、ハイパーリンクなどを介して新しいクエリのインスタンスが生成される。
【００５５】
したがって、ブロック３２０で、ビジネスクエリが作り出される。次に、ビジネスユーザロールは、クエリを単一の論理演算子としてみなし３２０ａ、ＣＱＬクエリおよびビューを修正でき３２０ｂ、ＣＱＬクエリおよびビュー３０５に戻ることができる。
【００５６】
図４Ａは、ハードコードされた（hard-coded）値に永続的にバインドされたクエリ４０５の例を含む。図４Ｂは、パラメータ化されたクエリ４１０、バインディング４１５、およびビジネスルール４２０を含み、図４Ｃは、テンプレート４２５、パラメータ化されたビュー４３０、およびパラメータ化されたクエリ４３５を含む。さらに、図４Ｄは、パラメータ化されたビューおよびクエリ４４０、テンプレート４４５、ならびにビジネスクエリ４５０を含む。
【００５７】
図４Ａ〜図４Ｄでの情報を用いた一例は以下の通りである。
【００５８】
【数７】
0005864583.tif 000008
【００５９】
したがって、これらのクエリは、特定された統計値の合計と、イベント名E1、パスP1、および統計値countValueに対して、３０分以内に２回以上、当該特定された統計値の合計が１０００未満である時間とを返す。
【００６０】
次に、図５Ａを参照して、本発明に係る実施形態に従うＣＥＰにおいてパラメータ化されたクエリを実行するためのシステム５００が説明される。一実施形態では、システム５００は、ＣＱＬエンジン５１０およびコンフィグファイル５２０を有するＣＥＰサーバ５０５を含んでもよい。さらに、ＣＥＰサーバ５０５は、ビジュアライザ５２５と通信する。
【００６１】
一実施形態では、ＣＱＬエンジン５１０は、すべてのクエリを同時に実行する。ＣＱＬエンジン５１０に対する実行計画は、結び付けられたノードセットを含み、すべてのクエリは、実行計画の一部であり、そのため、独立していない。したがって、ＣＥＰストリング置換は、あらゆる種類の型（タイプ）検査などを行なうことなく、バインド変数に対して設定されるパラメータセットにバインド変数を置き換えるために利用される。これは、バインド変数でも型検査などを通過する必要がある標準データベースとは異なる。結果として、ＣＥＰコンテキスト内のバインド変数は、より柔軟でより強力な解決手段を提供する。そして、当該バインド変数によりユーザは任意の述語を挿入することができる。したがって、ＣＥＰ環境内でのバインド変数は、型がなくてもよい。
【００６２】
ＣＱＬエンジン５１０は、多数のＣＥＰアプリケーション５１５ａ、５１５ｂ〜５１５ｎを実行するように構成されている。たとえば、多数のＣＥＰアプリケーションは書き込み可能であり、その各々は異なる処理を実行し、それらはすべて同じＣＥＰサーバ５０５上に展開可能である。また、ＣＥＰサーバ５０５は、ＣＱＬエンジン５１０を含み、多数の展開されたＣＥＰアプリケーション（５１５ａ、５１５ｂ〜５１５ｎ）を有することができる。
【００６３】
ビジュアライザ５２５は、ビジネスユーザがパラメータセットを設定できるインターフェイスである。さらに、コンフィグファイル５２０は、アプリケーション内のプロセッサに関連付けられている。コンフィグファイル５２０は、展開時、展開前、または展開後のいつであっても作り出すことができる。そして、ＣＥＰアプリケーション（５１５ａ、５１５ｂまたは５１５ｎ）がランタイム環境内に存在する場合には、それは関連付けられたコンフィグファイル５２０を有していてもよい。当該コンフィグファイル５２０は、クエリテンプレート（すなわち、バインド変数を有するクエリ）、およびバインド変数が置換されたパラメータセットを特定する。
【００６４】
図５Ｂは、コンフィグファイル５２０の一実施形態を示している。コンフィグファイル５２０は、ファイルが関連付けられたアプリケーション５２０ａの識別（identification）、プロセッサ５２０ｂの識別、ルール５２０ｃの識別、クエリテンプレート５２０ｄ、パラメータセット５２０ｅの識別、およびバインディング５２０ｆを含んでもよい。コンフィグファイルの他の実施形態が用いられてもよい。
【００６５】
次に、図６を参照して、ＣＥＰ内においてパラメータ化されたクエリのためのユーザインターフェイスの実施形態６００が示されている。そのようなユーザインターフェイスの利点は、使いやすさを提供するというニーズを改善するための支援を含む。大抵のビジネスユーザは、クエリを書きたくない。たとえば、ＣＱＬはプログラマーではない人にとっては理解するのが難しいので、ＣＥＰの場合、ビジネスユーザのニーズを理解した上でＩＴ部門の人がクエリを設計する。クエリはバインド変数を含んでいてもよい。クエリは、読みやすいフォーマット（たとえば、ビジネスユーザが理解しやすい英語版のクエリ）でビジネスユーザの目の触れるところとなる。英語版は、ランタイム時に実値をバインドするパラメータバインドセット（これは、ＵＲＬリンクを介して示されてもよい）を含んでいてもよい。ランタイム時には、バインド変数が置換されるように設定されたパラメータ値で新しいクエリのインスタンスが生成され、インスタンスが生成されたクエリは、ＣＥＰシステム内に注入されて、実行される。これは、ユーザに対して使い易さを提供する。ビジネスユーザは、低水準言語のＣＱＬを気にする必要はない。
【００６６】
図７は、本発明に係る実施形態に従って利用され得るシステム環境７００の構成要素を示す簡略ブロック図である。図に示すように、システム環境７００は、１以上のクライアントコンピューティング装置７０２、７０４、７０６、７０８を含み、これらは、ウェブブラウザ、または専用のクライアント（たとえば、Oracle Forms）などのクライアントアプリケーションを操作するように構成されている。さまざまな実施形態では、クライアントコンピューティング装置７０２、７０４、７０６、および７０８は、イベント処理システム７１２と情報をやり取りしてもよい。
【００６７】
クライアントコンピューティング装置７０２、７０４、７０６、７０８は、汎用のパーソナルコンピュータ（例として、Microsoft Windows（登録商標）および／またはApple Macintoshオペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む）、携帯電話もしくはＰＤＡ（Microsoft Windows Mobileなどのソフトウェアを実行し、インターネット、電子メール、ＳＭＳ、ブラックベリー（Blackberry）、またはその他の通信プロトコルを有効にする）、および／またはさまざまな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸのようなオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘ（登録商標）オペレーティングシステムを含むがこれに限定されない）のいずれかを実行するワークステーションコンピュータであってもよい。あるいは、クライアントコンピューティング装置７０２、７０４、７０６、および７０８は、ネットワーク（たとえば、以下に示すネットワーク７１０）を介して通信可能なシンクライアント（thin-client）コンピュータ、インターネットを使用可能なゲーム機、および／またはパーソナルメッセージ（personal messaging）デバイスなどのその他の電子デバイスであってもよい。典型的なシステム環境７００は、４つのクライアントコンピューティング装置を有することが示されているが、クライアントコンピューティング装置はいくつであってもよい。センサなどを有する装置のような他の装置が、システム７１２と情報をやり取りしてもよい。
【００６８】
システム環境７００は、ネットワーク７１０を含んでいてもよい。ネットワーク７１０は、当業者によく知られており、さまざまな市販のプロトコル（TCP/IP、SNA、IPX、AppleTalkなどを含むがこれらに限定されない）のいずれかを用いたデータ通信をサポートできるネットワークであれば、どのような種類のネットワークであってもよい。単なる例として、ネットワーク７１０は、イーサネット（Ethernet）（登録商標）ネットワーク、トークンリング（Token-Ring）ネットワークなどのローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク、バーチャルネットワーク（バーチャルプライベートネットワーク（VPN）を含むがこれに限定されない）、インターネット、イントラネット、エクストラネット、公衆電話交換回線網（PSTN）、赤外線ネットワーク、ワイヤレスネットワーク（たとえば、IEEE 802.11プロトコル群のいずれかの下で動作するネットワーク、当該技術分野において公知のBluetooth（登録商標）プロトコル、および／またはその他のワイヤレスプロトコル）、および／またはこれらの任意の組み合わせ、および／または他のネットワークであってもよい。
【００６９】
システム７１２は、１以上のサーバコンピュータを含んでいてもよく、当該１以上のサーバコンピュータは、汎用コンピュータ、専用のサーバコンピュータ（例として、ＰＣサーバ、ＵＮＩＸサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式（rack-mounted）のサーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な配置および／または組み合わせであってもよい。さまざまな実施形態では、システム７１２は、本願に記載されている１以上のサービスまたはソフトウェアアプリケーションを実行するように適合されていてもよい。
【００７０】
システム７１２は、上述したオペレーティングシステムのいずれかおよび任意の市販のサーバオペレーティングシステムを含むオペレーティングシステムを実行してもよい。また、システム７１２は、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、Ｊａｖａサーバ、およびデータベースサーバなどを含むさまざまな追加的なサーバアプリケーション、および／またはミッドティア（mid-tier）アプリケーションのいずれかを実行してもよい。典型的なデータベースサーバは、Oracle、Microsoft、Sybase、IBMなどから市販されているものを含むがこれらに限定されない。
【００７１】
また、システム環境７００は、１以上のデータベース７１４および７１６を含んでいてもよい。データベース７１４および７１６は、さまざまな場所に存在していてもよい。例として、１以上のデータベース７１４および７１６は、システム７１２にローカルな（および／またはシステム７１２内に常駐している）記憶媒体に存在していてもよい。あるいは、データベース７１４および７１６は、システム７１２から離れており、ネットワークベースまたは専用回線を介してシステム７１２と通信してもよい。一連の実施形態では、データベース７１４および７１６は、当業者によく知られているストレージエリアネットワーク（ＳＡＮ）に存在してもよい。同様に、システム７１２による機能を実行するために必要なあらゆるファイルは、必要に応じて、システム７１２にローカルにおよび／またはリモートで記憶されてもよい。一連の実施形態では、データベース７１４および７１６は、ＳＱＬフォーマットのコマンドに応答してデータを記憶し、更新し、読み出すように適合されているOracle lOgおよび1lgのようなリレーショナルデータベースを含んでもよい。
【００７２】
図８は、本発明に係る実施形態に従って利用され得るコンピュータシステム８００の簡略ブロック図である。たとえば、システム８００は、図１のイベント処理サーバ１０２を実行するために利用されてもよい。コンピュータシステム８００は、バス８２４を介して電気的に接続され得たハードウェア構成要素を含んでいることが示されている。ハードウェア構成は、１以上の中央処理部（ＣＰＵ）８０２、１以上の入力装置８０４（たとえば、マウス、キーボードなど）、および１以上の出力装置８０６（たとえば、ディスプレイ装置、プリンタなど）を含んでいてもよい。また、コンピュータシステム８００は、１以上の記憶装置８０８を含んでいてもよい。例として、記憶装置８０８は、ディスクドライブ、光学式記憶装置などの装置を含み、さらに、プログラム可能で、一瞬で更新可能で（flash-updateable）、および／またはそれと同じようなことが可能であるランダムアクセスメモリ（ＲＡＭ）および／またはリードオンリーメモリ（ＲＯＭ）などのソリッドステート（solid-state）記憶装置を含んでいてもよい。
【００７３】
コンピュータシステム８００は、さらに、コンピュータ可読記憶媒体リーダ８１２、通信サブシステム８１４（たとえば、モデム、ネットワークカード（無線もしくは有線）、赤外線通信装置など）、ワーキングメモリ８１８を含んでいてもよく、ワーキングメモリ８１８は、上述したようなＲＡＭおよびＲＯＭ装置を含んでいてもよい。いくつかの実施形態では、コンピュータシステム８００は、デジタルシグナルプロセッサ（ＤＳＰ）、専用のプロセッサ、および／またはそれと同様のものを含み得る処理加速部８１６を含んでいてもよい。
【００７４】
コンピュータ可読記憶媒体リーダ８１２は、さらに、コンピュータ可読記憶媒体８１０に接続され得る。コンピュータ可読記憶媒体８１０は、（任意に、記憶装置８０８と組み合わせて）リモート式、ローカル式、固定式および／または着脱交換式の記憶装置、および、一時的および／またはより永続的にコンピュータ可読情報を収容するための記憶媒体を総合的に意味している。通信サブシステム８１４は、ネットワーク７１０および／またはシステム環境７００に関する上述したその他のコンピュータと、データをやり取りすることが可能であってもよい。
【００７５】
また、コンピュータシステム８００は、ワーキングメモリ８１８内に現在位置しているように示されているソフトウェア構成要素を含んでいてもよい。ワーキングメモリ８１８は、オペレーティングシステム８２０、および／または、アプリケーションプログラム（クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、ＲＤＢＭＳなどであってもよい）などのその他のコード８２２を含む。典型的な実施形態では、ワーキングメモリ８１８は、実行可能なコードと、イベントを処理し上述したようなデータカートリッジに関連する処理を実行するために利用される関連データ構造（キャッシュなど）とを含んでいてもよい。代替の実施形態に係るコンピュータシステム８００は、上述したものからの多くの変形例を有し得るということが理解されよう。
【００７６】
たとえば、カスタマイズされたハードウェアが用いられてもよく、および／または特定の構成要素は、ハードウェア内、ソフトウェア内（アプレットなどのポータブルソフトウェアを含む）またはそれら両方で実行されてもよい。さらに、ネットワーク入力／出力装置などの他のコンピューティング装置への接続が利用されてもよい。
【００７７】
コードまたはコードの一部を収容するための記憶媒体およびコンピュータ可読媒体は、当該技術分野において公知のは利用されているあらゆる適切な媒体を含み得る。適切な媒体は記憶媒体および通信媒体を含み、その記憶媒体および通信媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤもしくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶装置、または、所望の情報を格納もしくは送信するために利用可能でありコンピュータによってアクセス可能なその他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、もしくはその他のデータなどの情報を格納しおよび／もしくは送信するための方法もしくは技術において実行される揮発的および不揮発的、着脱可能および着脱不可能な媒体などであるが、それらに限定されない。
【００７８】
本発明に係る具体的な実施形態が説明されてきたが、さまざまな修正、変更、代替構成、および均等物もまた本発明の範囲内に包含される。本発明に係る実施形態は、ある特定のデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で動作可能である。さらに、本発明に係る実施形態は、特定の一連のトランザクションおよびステップを用いて説明されてきたが、本発明の範囲が、記載された一連のトランザクションおよびステップに限定されないということは当業者にとって明らかであろう。
【００７９】
さらに、本発明に係る実施形態は、特定のハードウェアおよびソフトウェアの組み合わせを用いて説明されてきたが、他のハードウェアおよびソフトウェアの組み合わせも、本発明の範囲内であるということが認識されるであろう。本発明に係る実施形態は、ハードウェアのみで実行されてもよいし、ソフトウェアのみで実行されてもよいし、それらの組み合わせを用いて実行されてもよい。
【００８０】
したがって、明細書および図面は、限定的意味ではなく例示のためであると見なされるべきである。しかしながら、特許請求の範囲に記載のより広い精神および範囲から逸脱することなく追加、置換、削除、その他の修正および変更が可能であることは明らかであろう。
【図６】
0005864583.tif 000009
【図１】
0005864583.tif 000010
【図２Ａ】
0005864583.tif 000011
【図２Ｂ】
0005864583.tif 000012
【図２Ｃ】
0005864583.tif 000013
【図３】
0005864583.tif 000014
【図４Ａ】
0005864583.tif 000015
【図４Ｂ】
0005864583.tif 000016
【図４Ｃ】
0005864583.tif 000017
【図４Ｄ】
0005864583.tif 000018
【図５Ａ】
0005864583.tif 000019
【図５Ｂ】
0005864583.tif 000020
【図７】
0005864583.tif 000021
【図８】
0005864583.tif 000022