(57)【要約】  データベース対応規則エンジンの使用は、ECA表現式を受取ってデータベーステーブルの列に格納すること含む。ECA表現式は、（１）イベント構造に符合するイベントを定義するイベント構造、（２）イベント構造に符合するイベントの発生に関する評価に対する条件、および（３）１つ以上の条件を満たすイベントに応答した実行のための動作を指定する。１つ以上のイベントに関して規則を評価する間に、指定されたイベント構造とのイベントの適合性に基づいてイベントが検出され、条件は、当該イベントが条件のいずれかを満たすか否かを判断することによって評価される。当該イベントが、対応する動作を有する１つ以上の条件の集合を満たす場合、対応する動作がデータベースによって実行されるか、または、データベースが、データベースの外部で当該動作が実行されるようにする。
2007531161.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムで表現式を管理するための方法であって、前記方法はコンピュータで実行されるステップ、すなわち、
イベント構造、１つ以上の関連する条件、および１つ以上の関連する動作を識別する表現式を受取るステップを含み、前記イベント構造は、前記イベント構造に符合するイベントを定義し、前記方法はさらに、
前記データベース内のテーブルに前記表現式を格納するステップと、
データベースセッション中に、
前記イベント構造に適合するイベントが生じる時を検出することにより、前記イベントの発生を検出するステップと、
前記イベントの前記発生が前記条件のいずれかを満たすか否かを判断するステップと、
前記イベントの前記発生が、前記条件のうち、１つ以上の対応する動作に関連付けられた１つ以上の条件のいずれかの集合を満たす場合に、前記１つ以上の対応する動作の実行を生じるステップとを含む、方法。
【請求項２】
表現式を受取るステップは、対応するイベントの特徴を記述する属性の集合で定義される前記イベント構造を識別する表現式を受取るステップを含み、前記イベント構造は、前記データベースにおいてオブジェクト型として表現される、請求項１に記載の方法。
【請求項３】
表現式を受取るステップは、２つ以上の基本イベントを有する複合イベント構造として前記イベント構造を識別する表現式を受取るステップを含み、前記２つ以上の基本イベントは、前記データベースにおいて、前記複合イベント構造に埋込まれたオブジェクト型として各々が表現される、請求項１に記載の方法。
【請求項４】
検出するステップは、前記複合イベント構造の第１の基本イベント構造に適合するイベントが生じる時を検出することにより、前記基本イベントの第１の基本イベントの発生を検出するステップを含み、
判断するステップは、前記第１の基本イベントの前記発生が前記条件のいずれかを満たすか否かを判断するステップを含み、
前記方法はさらに、前記コンピュータで実行されるステップ、すなわち、
前記判断するステップの結果を前記データベースに永続的に格納するステップと、
前記複合イベント構造の第２の基本イベント構造に符合するイベントが生じる時を検出することにより、前記基本イベントの第２の基本イベントの発生を検出するステップと、
前記第２の基本イベントの前記発生が、前記条件のいずれかを満たすか否かを判断するステップと、
前記条件のいずれかが、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生の両方により満たされるか否かを判断するステップとを含み、
実行を生じるステップは、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生が、１つ以上の対応する動作を有する１つ以上の条件の前記集合のいずれかを満たす場合に、前記１つ以上の対応する動作を実行するステップを含む、請求項３に記載の方法。
【請求項５】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記２つ以上の基本イベントのうちの第２の基本イベントの発生が生じる前に、前記２つ以上の基本イベントのうちの第１の基本イベントの発生が有効な期間を指定する情報を受取るステップを含み、
判断するステップは、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生が、前記条件のいずれかを満たすか否かを前記情報に従って判断するステッ
プを含む、請求項３に記載の方法。
【請求項６】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記基本イベントに関して前記条件を評価するための順序を指定する情報を受取るステップを含み、
判断するステップは、前記情報に従った前記順序において、前記条件が前記基本イベントにより満たされているか否かを判断するステップを含む、請求項３に記載の方法。
【請求項７】
表現式を受取るステップは、前記データベース内のテーブルの構造から導出されたイベント構造を識別する表現式を受取るステップを含み、前記テーブルは、イベントの発生を表現するデータを格納している、請求項１に記載の方法。
【請求項８】
前記イベントの発生を検出するステップは、前記データが変更されたことを検出するステップを含む、請求項７に記載の方法。
【請求項９】
テーブルの列に前記表現式を格納するステップは、前記テーブルのEXPRESSION列にEXPRESSIONデータ型として１つ以上の条件を格納するステップを含む、請求項１に記載の方法。
【請求項１０】
表現式を受取るステップは、前記データベースに対するSQLクエリーとして表現される条件を識別する表現式を受取るステップを含む、請求項１に記載の方法。
【請求項１１】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記表現式の前記１つ以上の条件に対する変更を、SQL演算の形態で受取るステップを含む、請求項１に記載の方法。
【請求項１２】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記条件のいずれかを満たすと判断されたイベント発生のリストと、
イベント発生の前記リスト内のイベント発生により満たされた条件のリストと、
条件の前記リスト内の条件に符合する動作のリストとを含むデータベースビューへのアクセスをデータベースセッション中に提供するステップを含む、請求項１に記載の方法。
【請求項１３】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記データベースシステムのユーザからの要求に応答して、前記ビューに対する演算を実行するステップを含む、請求項１２に記載の方法。
【請求項１４】
演算を実行するステップは、イベント発生の前記リスト内のイベント発生により満たされた２つ以上の条件間の競合を解消するための演算を実行するステップを含む、請求項１３に記載の方法。
【請求項１５】
演算を実行するステップは、前記データベースシステムの外部での実行のための動作をスケジューリングすることを含む演算を実行するステップを含む、請求項１３に記載の方法。
【請求項１６】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記イベントの前記発生が１つ以上の条件の前記集合を満たすと判断したときに、前記判断するステップが停止すべきであることを指定する情報を受取るステップと、
前記イベントの前記発生が１つ以上の条件の前記集合を満たすと判断したときに、前記イベントの前記発生が前記条件のいずれかを満たすか否かを判断することを停止するステップとを含む、請求項１に記載の方法。
【請求項１７】
表現式を受取るステップは、時間的な条件を識別する表現式を受取るステップを含み、
前記時間的な条件は、条件の集合からの第１の条件がイベントの発生により満たされた後の特定の時間内に条件の前記集合からの第２の条件がイベントの発生により満たされる場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、前記時間的な条件に従って、イベントの発生が前記第１および第２の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項１８】
表現式を受取るステップは、否定の条件を識別する表現式を受取るステップを含み、
前記否定の条件は、条件の集合からの第１の条件がイベントの発生により満たされた後の特定の時間内に条件の前記集合からの第２の条件がイベントの発生により満たされない場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、前記否定の条件に従って、イベントの発生が前記第１および第２の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項１９】
表現式を受取るステップは、条件のグループからの特定の数の条件がイベントの１つ以上の発生により満たされたときに前記１つ以上の対応する動作の実行をトリガする条件の前記グループを識別する表現式を受取るステップを含み、
前記特定の数は、条件の前記グループ内の条件の数よりも少なく、
判断するステップは、イベントの１つ以上の発生が、条件の前記グループからの前記特定の数の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項２０】
表現式を受取るステップは、順位付けされた条件のグループを識別する表現式を受取るステップを含み、
順位付けされた条件の前記グループは、順位付けされた条件の前記グループからの前記条件が、イベントの１つ以上の発生により特定のシーケンスで満たされる場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、イベントの１つ以上の発生が、順位付けされた条件の前記グループからの前記条件を前記特定のシーケンスで満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項２１】
１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに対し、請求項１から２０のいずれかに記載の方法を実行させる命令の１つ以上のシーケンスを有する、コンピュータ読取可能な媒体。
【請求項２２】
イベント構造、１つ以上の関連する条件、および１つ以上の関連する動作を識別する表現式を受取るための手段を含み、前記イベント構造は、前記イベント構造に符合するイベントを定義し、さらに、
前記データベース内のテーブルに前記表現式を格納するための手段と、
データベースセッション中に、前記イベント構造に適合するイベントが発生する時を検出することにより前記イベントの発生を検出するための手段と、
前記データベースセッション中に、前記イベントの前記発生が前記条件のいずれかを満たすか否かを判断するための手段と、
前記イベントの前記発生が、前記条件のうち、１つ以上の対応する動作に関連付けられた１つ以上の条件の集合のいずれかを満たす場合に、前記１つ以上の対応する動作の実行を生じるための手段とを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、「データベースシステムにおける表現式の管理（Managing Expressions In A Database System）」と題されて２００２年９月２４日に出願され、ＵＳ−２００３−０２１２６７０−Ａ１として公開された米国特許出願第１０／２５４，３８３号に関連し、「データベースシステムにおけるＸＰＡＴＨ表現式の管理（Managing XPATH Expressions
In A Database System）」と題されて２００３年２月１２日に出願された米国特許出願第１０／３６５，７７１号に関連し、「データベース管理システムにおける拡張可能な規則エンジン（Extensible Rules Engine In A Database Management System）」と題されて２００３年４月１７日に出願され、ＵＳ−２００３−０２１２６５７−Ａとして公開された米国特許出願第１０／４１８，８８２号に関連する。これらのすべては、あらゆる目的のために、ここに完全に明示されているかのように全体が引用により援用される。
【０００２】
発明の分野
この発明は、一般にデータベースシステムに関し、より特定的に、データベースシステムにおいてイベント−条件−動作の表現式を管理するための技術に関する。
【背景技術】
【０００３】
発明の背景
規則エンジン
ビジネスのアプリケーションでは、リアルタイムでビジネス挙動を誘導するか、またはリアルタイムでビジネス挙動に影響を与えるため、一般に規則が用いられる。これらのアプリケーションの大部分は、新規のビジネスオブジェクトの作成またはビジネスプロセスにおけるいくつかの状態変更を監視するために、イベント中心の規則を必要とする。旅行ビジネスの場合における、イベント中心の規則の一例は、以下のようなものである。すなわち、一団がオーランド（Orlando）への航空券を予約して高級車を予約した場合、特定のオーランドのホテルに対する販売促進割引を提供する。したがって、２つのイベントが発生すると、アプリケーションは、一団に対して特典を自動的に提供する。
【０００４】
規則エンジンの場合、規則は大まかに２つのクラス、すなわち、（１）演繹的または推理規則、および（２）反応性またはイベント−条件−動作（Event-Condition Action）（ECA））規則に分類される。演繹的規則は、前向き推論および後向き推論を使用して、既存の知識ベースから事実を推理または演繹する。ECA規則は、イベント中心の問題によく適し、状態変更および当該状態変更をどのように管理するかを扱う。
【０００５】
既存の商用規則エンジンのアプリケーションは、ビジネス規則に対するリポジトリとして働き、アプリケーションロジックからのビジネスロジックの分離を容易にする。規則エンジンは、規則の宣言的仕様を可能にするいくつかの規則言語を定義し、或るものは、アプリケーションを規則エンジンと対話させるためにインターフェイス機能を果たす。しかしながら、このようなエンジンにより管理される規則の種類は、本質的に演繹的なものである。
【０００６】
ECA規則のいくつかの形態は、演繹的規則として構築され得、演繹的規則用に設計された規則エンジンによって管理され得る。しかしながら、演繹的規則の処理とECA規則の処理との間の作業負荷の差により、演繹的規則用に設計された規則エンジンは、以下のような理由から、ECA規則の管理に効果的ではない。殆どの演繹的規則エンジンは、事実の集合に対する規則の集合を処理するために、RETE索引の変形体を使用する。これらの索引は
純粋にメモリベースであり、事実の大きな集合に対して定義される規則の大きな集合に対して十分にスケール変更されない。またこれらの索引は、ECA規則で指定されるイベントの典型である、高度に動的な事実に対して効率が良くない。さらに、多層環境において、メモリベースの規則エンジンはアプリケーション層に存在する。したがって、それに対して規則が定義されるビジネスイベントがデータベース層に存在する場合、これらのイベントは、対応する規則を処理するためにアプリケーション層内に取込まれなければならず、これにより、このような規則エンジンの性能が低下する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は、同じ参照番号が同じ要素を指す添付の図面において、限定ではなく例として示される。
【０００８】
詳細な説明
データベースシステムにおいて表現式を管理するための技術を記載する。より特定的に、データベースシステムにおいて、データベース対応規則エンジンを介してイベント−条件−動作の表現式を管理するための技術を記載する。
【０００９】
以下の説明では、説明の目的のために多数の特定の詳細を明示して、この発明の完全な理解を図る。しかしながら、これらの特定の詳細がなくてもこの発明が実施され得ることが明らかであろう。これ以外の場合では、周知の構造および装置がブロック図の形態で示され、この発明を不必要に分かりにくくすることを回避する。
【００１０】
以下のもの、すなわち、「リレーショナルデータベースシステムにおいて統合されるコンテンツベースの公開および定期購読システム（Content Based Publish-And-Subscribe System Integrated in a Relational Database System）」と題されて２００２年６月１１日に発行された米国特許第６，４０５，１９１号、および「リレーショナルデータベースシステムにおいてデータを公開するための手法（Approach for Publishing Data in a Relational Database System）」と題されて２００２年１２月３１日に発行された米国特許第６，５０２，０９３号は、ここに完全に明示されているかのように、あらゆる目的のために全体が引用により援用される。
【課題を解決するための手段】
【００１１】
概観
データベース対応、またはデータベース中心の規則エンジンの使用は、ECA表現式を受取ってデータベースに格納することを含む。このような表現式は、（１）イベント構造に符合するイベントを定義するイベント構造、（２）イベント構造に符合するイベント、たとえばイベントインスタンスの発生に応答した、および当該発生に関する評価に対する条件、ならびに（３）１つ以上の条件を満たすイベントに応答した実行のための動作を指定する。
【００１２】
このような条件は、EXPRESSIONデータ型列等のデータベーステーブルの列に格納される。したがって、規則のランタイムのデータベースセッション中、すなわち、１つ以上のイベントに関して規則が評価されるデータベースセッション中において、指定されたイベント構造に適合するイベントが生じたときにイベントが検出され、当該イベントが条件のいずれかを満たすか否かを判断することによって条件が評価される。当該イベントが、対応する動作を有する１つ以上の条件の集合を満たす場合、当該対応する動作がデータベースサーバにより実行されるか、または、データベースサーバが、データベースシステムの外部で当該動作が実行されるようにする。
【００１３】
ここに記載する規則エンジンは、リレーショナルデータベースにおいてECA規則を管理することにより、既存の規則エンジンから脱却している。したがって、スケーラビリティ、信頼性、およびセキュリティ等の利点が、ビジネス規則等の規則の処理まで容易に拡張される。加えて、それに対して規則が定義されるイベントは、本質的にリレーショナルなものであり、構造化された標準的なクエリー言語（SQL）の部分集合を使用して、興味の対象となるイベントの発生を識別し、そのイベントの発生に照らして条件を評価することができる。さらに、XMLと組合せた、たとえばリッチSQL言語を使用して、複雑なビジネス規則を表現することができる。
【発明を実施するための最良の形態】
【００１４】
データベースにおけるイベント−条件−動作の規則の格納
一局面において、規則は、データベース内に規則集合として格納される表現式として表現される。ECA規則の場合、規則は、（１）イベント構造に符合するイベントを定義するイベント構造、（２）それに照らして対応するイベントが評価される条件、および（３）イベントにより条件が満たされたことに応答して実行するための動作プリファレンスを含む。
【００１５】
上述のデータベース対応規則エンジンと共に、SQLクエリー言語が、規則言語の基礎として使用され得る。したがって、表現式はSQLクエリーとして表現され得る。単純な規則条件は、FROM句が対応するイベント構造を表現するクエリーのWHERE句に類似する。たとえば、FlightInfoテーブルが旅行会社の全顧客についての予約便の情報に関する情報を格納している場合、以下のクエリーは、ユナイテッドエアライン（United Airlines）によるオーランド行きの航空便の予約を有する全顧客を識別することができる。
【００１６】
【数１】
2007531161.tif 000003
【００１７】
上述のクエリーは、テーブルFlightInfoに格納される、ユナイテッドエアラインによるオーランド行きの既存の全予約を識別する。しかしながら、行なわれている（たとえばリアルタイムの）新規の予約のみを識別する要件が存在する場合、上述のクエリーは、新規のデータ（たとえばイベント）を監視し得る規則にマッピングされるべきである。この場合、FlightInfoテーブルは、規則に対するイベント構造として構成され得、または、イベント構造は、合致する構造を有するオブジェクト型を使用する一時的なアプリケーションデータと連動するように構成され得る。上述のクエリーのWHERE句は、規則条件に対して使用され得、規則動作は、予約がこの規則に合致したときに動作を実行するための何らかのアプリケーションロジックであり得る。たとえば、動作は、レンタカーの特典の提供、割引の提供等であり得る。
【００１８】
SQLが規則言語のための基礎を形成するのに伴い、規則集合における新規の規則の追加および既存の規則の更新または削除は、対応する規則集合のテーブルにおけるINSERT、UPDATE、およびDELETE演算を用いて実行され得る。さらに、規則集合のテーブルにおける単純なSELECT演算は、ユーザが規則集合内の規則を閲覧することを可能にする。
【００１９】
イベント構造
イベント構造は、抽象的なレベルにおいて、その種類のイベントの発生を明瞭に識別する必須要素を記述する。一実施例において、イベント構造は、ビジネスイベント等のイベントの固有の特徴を記述する属性の集合により定義され、イベント構造は、データベース
内のオブジェクト型として表現される。たとえば、ビジネスイベントは、ユーザの旅程に追加される航空便の情報を捕捉することができる。データベースにおいて、対応するイベント構造は、以下に指定されるオブジェクト型として表わされ得る。
【００２０】
【数２】
2007531161.tif 000004
【００２１】
別の実施例において、規則は、データベース内のリレーショナルテーブル内に格納されるデータに対して定義される。この状況において、規則集合に対するイベント構造は、データを格納するテーブルの構造から導出され、イベントは、データの状態の変化として（たとえばINSERTまたはUPDATE演算によって）識別される。
【００２２】
特定のアプリケーションに対して定義された規則の集合は、規則集合と考えられ、当該規則集合を構成する規則は、それらの条件に対する共通のイベント構造を共有する。規則集合は、規則集合に属する規則が規則集合テーブル内の行であるデータベース内のリレーショナルテーブルとして捕捉される。
【００２３】
複合イベント
複合イベントは、データベースにおいて、多数の基本イベントの組合せとして定義され得る。基本イベントとして規定された規則および複合イベントは、データベースにおいて同様の演算上の特徴を有する。一実施例において、複合イベント構造は、埋込型を有するオブジェクト型として表現される。複合イベントにおける各埋込型は、基本イベントを表現する。複合イベントに関連付けられた各基本イベントは、関連付けられた別の基本イベントが発生する別のプロセスから独立したプロセスで発生し得る。
【００２４】
一実施例において、複合イベントに対して定義された規則は、イベント（たとえば１つ以上の基本イベント）のうちのいくつかの部分が発生するのに伴い、インクリメンタルに評価される。関連する基本イベントのインクリメンタルな評価から得られた結果は、データベース内に永続的に格納される。
【００２５】
条件
それに照らしてイベントが評価される規則条件は、対応するイベント構造において定義された変数を用いて表現される。たとえば、単純な規則条件は、FROM句が対応するイベント構造を表現するクエリーのWHERE句に類似する。規則に基づいた典型的なシステムでは、条件の大きな集合の効率的なフィルタリングが、システムのスケーラビリティにとって極めて重要である。いくつかのクエリーがテーブル内の行の大きな集合において実行される典型的なデータベース設計とは異なり、規則ベースのシステムは、それに対してイベントが評価される多数の条件を有し得る。したがって、データベース対応規則エンジンにおいて条件を格納および操作する一意の手法、たとえば、以下に述べるEXPRESSIONデータ型の使用が望ましい。
【００２６】
EXPRESSIONデータ型
一実施例において、規則集合のテーブルの規則条件の列は、この明細書において完全に明示されているかのようにあらゆる目的でその全体が引用により援用される、「データベースシステムにおける表現式の管理」と題されてＵＳ−２００３−０２１２６７０−Ａ１として公開された米国特許出願第１０／２５４，３８３号に記載される表現式のデータ型で構成される。
【００２７】
たとえば、条件は、データベーステーブル内のVARCHAR2またはCLOB列に格納され得る。このような列は、たとえば何らかのメタデータを列に関連付けることにより、EXPRESSIONデータ型の列として構造化され得る。さらに、条件を格納する列は、関連するイベント構造に関連付けられる。イベント構造に関連付けられたVARCHAR2またはCLOB列は、EXPRESSION列を構成する。EXPRESSION列に格納された値はまず、SQL-WHERE句のフォーマットを厳守することが期待される。これらの条件は、ユーザ環境において有効なあらゆるシステム変数およびユーザ定義機能に加え、対応するイベント構造内で定義されたすべての属性を指し得る。
【００２８】
複合イベントに対する条件
２つ以上の基本イベントからなる複合イベントに対して定義された規則は、等価の結合クエリーにマッピングされ得る。たとえば、顧客の予約便の情報およびレンタカーの情報が、それぞれFlightInfoおよびCarInfoという２つのテーブルに格納され、航空便の予約およびレンタカーの予約に関連する条件を有する規則（ホテルにおける特典を提供するための）が、以下に示す等価の例示的なSQLクエリーにマッピングされ得ると想定されたい。
【００２９】
【数３】
2007531161.tif 000005
【００３０】
XML拡張のSQLシンタックス
しかしながら、規則は、各基本イベントに関するデータが利用可能になる時点と、基本イベントの作成時間を規則の定義に含むことについての関連する必要性とに関する一意の要件を有し得る。したがって、一実施例において、等価の結合クエリーのWHERE句は、基本イベントに対する別個の条件に、結合条件を伴って分解される。これらの断片は次に、SQL条件内においていくつかのXMLタグを用いる複雑な規則条件を表現するために使用される。たとえば、上述の規則のWHERE句は、以下の規則条件にマッピングする。
【００３１】
【数４】
2007531161.tif 000006
【００３２】
したがって、等価のクエリーのFROM句内の各テーブルは、基本イベントにマッピングし、これらの基本イベントの組合せは、規則集合に対する複合イベントを表現する。このXML拡張のSQLシンタックスを用いることにより、従来のSQL WHERE句のシンタックスでは不可能な、規則条件における時間的なセマンティクス、否定のセマンティクス、任意のセマンティクス、および順位付けのセマンティクスのサポートを行なうために実施例が実現され得る。これらのセマンティクスは以下に説明する。
【００３３】
時間的なイベント
時間的なイベントを含む規則は、指定された時間フレーム内にイベントが検出されるか、または検出されないときに起動される。時間的なイベントを含む規則の一例は、以下の通りである。すなわち、ゴールド顧客により発注が行われ、発注された品物が発注から１２時間以内に発送される場合、サービス品質の統計量をインクリメントする。このような規則は、各基本イベントに暗示的に含まれるタイムスタンプ変数、たとえばSQLの日付データ型を使用するように指定され得る。
【００３４】
上記の規則を表現するステートメントの一例は、以下のように形成され得る。
【００３５】
【数５】
2007531161.tif 000007
【００３６】
否定
否定を用いる規則条件は、XML拡張のSQLシンタックスを用いて指定され得、ここでは、指定された時間フレーム内にイベントが検出されないときに、否定の構造体を用いる条件と関連付けられた動作が実行される。このような規則はしばしば、イベントベースのアプリケーションにおいて例外を提示するために使用される。否定を含む規則の一例は、以下の通りである。すなわち、ゴールド顧客により発注が行なわれ、発注された品物が発注から２４時間以内に発送されない場合、顧客サービスに通知する。
【００３７】
上記の規則を表現するステートメントの一例は、以下のように形成され得る。
【００３８】
【数６】
2007531161.tif 000008
【００３９】
上記の条件における「not」要素は、他の基本イベント（たとえばゴールド顧客による発注）が検出されたときにのみ起動される。「not」要素内のオブジェクトが、指定された時間フレーム内に検出される場合、動作は実施されない。
【００４０】
任意のｎ個
「任意のｎ個」を使用する規則条件は、XML拡張のSQLシンタックスを用いて指定され得、ここでは、指定されたイベントのうちの任意のｎ個のイベントが検出されたときに、このような構造体を使用する条件と関連付けられた動作が実行される。「任意のｎ個」を含む規則の一例は、以下の通りである。すなわち、顧客が買物カゴに以下の品物、すなわち、１００ドルを上回る価値を有するカムコーダレンズ、レンズフィルタ、およびＩＲライトのうちの２つを追加した場合、当該顧客に三脚を勧める。
【００４１】
上記の規則を表現するステートメントの一例は、以下のように形成され得る。
【００４２】
【数７】
2007531161.tif 000009
【００４３】
順位付け
順位付けの要件を有する規則条件は、XML拡張のSQLシンタックスを用いて指定され得、ここでは、指定されたイベントが指定された順序またはシーケンスで検出されたときに、このような構造体を使用する条件に関連付けられた動作が実行される。順位付けを含む規則の一例は、以下の通りである。すなわち、顧客が以下の品物、すなわち、１００ドルを上回る価値を有するカムコーダレンズ、レンズフィルタ、およびＩＲライトを指定された順序で買物カゴに追加した場合、当該顧客に三脚を勧める。
【００４４】
上記の規則を表現するステートメントの一例は、以下のように形成され得る。
【００４５】
【数８】
2007531161.tif 000010
【００４６】
動作
ECA規則と関連付けられる動作は、データベースサーバにより実行または開始され得るいずれかの演算であり得る。たとえば、この動作は、ｅメールの送信、後の実施のためのジョブのスケジューリング、他のリレーショナルテーブルに格納されたデータの変更、および新規のビジネスイベントの生成を含む。規則の各定義は、適切な動作を決定して実行するために使用される動作プリファレンスの集合を含む。たとえば、動作プリファレンスは、当該動作を保持する固定関数に渡されるスカラ値の集合（たとえばｅメールアドレス）か、または、規則条件が満たされた（たとえば真と評価された）ときに実施されるSQLまたはPL/SQLコマンドの集合（たとえばINSERTステートメント）であり得る。規則集合に対する動作プリファレンスの厳密なリストは、規則集合の生成時に指定される。
【００４７】
図１は、一実施例に従った、データベース内のECA情報の視覚表現と、このような情報間の対話とを示す図である。ここに記載するデータベース対応規則エンジンの機能性は、規則集合の概念の付近に中心が定められ、この規則集合の概念は、規則の定義に対するリポジトリとして働くリレーショナルデータベーステーブルにおいて捕捉される。
【００４８】
図１は、AddFlightイベント構造に対応するイベントインスタンスを定義するオブジェクト型としてAddFlightイベント構造を示す。論じられるように、SQL表現式の集合として一実施例で表現される規則集合が、図１のTravelPromotion規則集合のテーブルとして示されるデータベーステーブルに格納される。ECA規則は、規則集合のテーブル内の行にマッピングする。規則集合が格納されるテーブルは、規則識別子の列、規則条件の列、および規則動作プリファレンスの列を有する。イベント構造と規則条件の列との間の点線で示されるように、イベント構造は、規則集合のテーブルの規則条件の列に関連付けられる。なぜなら、規則条件が、イベント構造内で宣言された変数を用いて指定されるためである。すなわち、イベント構造は、規則条件の列に対するメタデータと考えられ得る。さらに、規則条件は、条件が適用されるイベント構造の属性から導出される。
【００４９】
図１は、データベースに追加されるAddFlightイベント構造と符合するイベントインスタンスAddFlightをさらに示す。このイベントインスタンスは、対応するイベント構造内で定義された属性についての値を有する。イベントインスタンスは、たとえば、関連イベント情報がイベント構造のオブジェクト型のオブジェクトとしてインスタンス化される状態で、ビジネスイベントに応答して作成され得る。データベース内にイベントインスタンスが到着したことに応答して、TravelPromotion規則集合のテーブル内の規則条件が、イベントインスタンスのオブジェクト内に含まれる属性値に関して評価されて、条件のうちのいずれかが満たされたか否かを判断する。
【００５０】
規則動作プリファレンスの列内の対応する動作を有する任意の条件がイベントインスタンスにより満たされた場合、動作コールバック手続き、PromoAction、が実施され、規則動作プリファレンスの列からの適切な値が引数として動作手続きに渡される状態で動作手続き、OfferPromotion、を実行する。上記の規則を表現するステートメントの一例は、以下のように形成され得る。
【００５１】
【数９】
2007531161.tif 000011
【００５２】
イベント構造、規則集合のテーブル、および動作コールバック手続きは、一般にすべてが、規則集合作成プロセスの一部として作成される。
【００５３】
規則集合の評価
規則が規則集合内に一旦読込まれると、これらの規則は、１つ以上のイベントに対して評価され得る。規則のランタイムのセッションは、データベース接続からデータベース切断までのデータベースセッションとして定義され得、このデータベースセッションにおいて、１つ以上のイベントが処理される。セッション指向の規則の処理に加え、満たされた規則に対する動作の即時の実施もまた、コールバックメカニズムを用いて実現され得る。たとえば、コールバックメカニズムは、満たされた各条件に対して呼出されたPL/SQL手続きとして実現され得る。規則動作は、条件および当該条件を満たしたイベントに関連付けられた動作プリファレンスを用いるこのコールバック手続きにより実行され得る。一実施例では、１つのイベントによって満たされる多数の条件間の競合を解消するために、競合の解消基準が使用され、この競合の解消基準は、以下に述べるように、規則集合の順序付けの特性により、規則集合の作成時に宣言的に指定される。
【００５４】
各イベントの発生に対する各規則条件を試験することは一般に、線形な時間の解法である。大きな規則集合が定義されると、この手法は、高容量のデータ項目に対してスケーラブルにならない。規則集合を評価するため、すなわち、１つ以上のイベント発生に関して
１つ以上の条件を評価するために使用されるプロセスは、実現例ごとに異なり得る。イベント発生に関して大きな規則集合からの条件を評価するために使用され得るプロセスの一例は、「データベースシステムにおける表現式の管理」と題されてＵＳ−２００３−０２１２６７０−Ａ１として公開された米国特許出願第１０／２５４，３８３号に記載されている。
【００５５】
参照されたプロセスは、索引付けのメカニズムを用いて、条件の大きな集合を効率よく評価し、結果的に、所定の１つ以上のイベントに対する規則集合の評価の速度を上げる。この索引は、EXPRESSIONデータ型の列において定義され得、したがって、クエリーオプティマイザが、索引の使用にまつわる計算上のコストに基づき、規則集合の評価に対する索引の使用を判断することができる。一実現例では、規則集合に対する索引を維持するために永続的なデータベースオブジェクトが作成され、ここでは、索引の作成時に規則集合を前処理することにより、これらのデータベースオブジェクトが読込まれる。加えて、これらのオブジェクトに格納された情報は、規則を格納するテーブル上でDML演算を用いる規則集合に対するあらゆる変更を反映するために、維持される。
【００５６】
一実施例によると、表現式フィルタは、規則を管理するために、また、SQLまたは他の何らかのクエリー言語のクエリーを用いて、条件内で表現された基準と所定のイベントとを合致させることにより、所定のイベントに対する条件をフィルタリングするために使用されるPL/SQLパッケージおよびAPIの集合である。この表現式フィルタは、２つの構成要素、すなわち、ＵＳ−２００３−０２１２６７０−Ａ１に記載される、EVALUATE演算子および表現式フィルタの索引型を含む。
【００５７】
表現式フィルタの索引型は、型VARCHAR2、CLOB、またはBFILEのデータベース列に格納されたいずれかの条件の集合に対する索引を作成するために使用され得る。しかしながら、データ型として格納された条件に対して使用され得る、上記の型以外の別の索引型の使用が企図されるため、これらの別の索引型の使用は、この発明の実施例の範囲内にある。EVALUATE演算子は、EXPRESSION列に格納された条件を処理するために使用され得る。この演算子は、イベントに対する条件をフィルタリングするために、標準的なSQLステートメントのWHERE句で使用され得る。EVALUATE演算子は、条件を格納する列の名前および所定のデータ項目、たとえばイベントを引数として受入れ、EVALUATE演算子は、表現式の集合のメタデータを内部で使用して、渡されたデータ項目に対する表現式を評価する。
【００５８】
条件が格納されたテーブルに対するクエリーは、マルチテーブル結合、およびGROUP BY句、ORDER BY句、HAVING句等を用いる他のいずれかのデータベースクエリー演算を含むように拡張され得る。加えて、条件が格納されたテーブルと、処理されているイベントデータを格納するテーブルとを結合することにより、イベントのバッチに対する条件の集合をフィルタリングすることが企図される。
【００５９】
さらに、適用可能な場合、規則集合および索引構造オブジェクトがデータベース内に永続的に格納されるため、メインメモリを徹底的に使用する手法で生じる、規則集合のサイズにまつわるメモリの制約が、本実施例には適用されなくなる。これとは対照的に、本実施例に従った演算は、データベースバッファキャッシュ内に、必要時に必要なデータベースブロックを格納することができる。
【００６０】
データベースビュー
規則セッション内において、関連付けされた動作プリファレンスに加え、処理されるイベントのリストおよび合致する条件のリストは、規則集合の結果ビューと呼ばれるデータベースビューを介してアクセス可能となる。一実施例において、規則集合の結果ビューは、規則集合の作成時に作成され、並行する規則セッションが、同じビュー名を用いるそれ
ぞれのセッションに対して適切な結果を表示することを可能にする。
【００６１】
ビューにおいて規則セッションの結果を提示する機能により、ユーザは、当該結果に対し、１つの集合として追加の演算を実行することができ、したがって、動作の実施に対する条件の部分集合を識別することができる。たとえば、規則セッション内で処理されたイベントが、それぞれの動作プリファレンスとして１０％、１５％、および２０％の割引を提案する３つの異なる条件に合致した場合、規則集合の結果ビューに対するクエリーは、最大の割引を提供する条件およびイベントの組合せを識別することができる。したがって、規則集合の結果ビューを用いて、合致する条件間における複雑な競合解消の基準をサポートすることができる。
【００６２】
規則集合の結果ビューからの結果は、データベース外部の動作をスケジューリングするためにさらに使用され得る。たとえば、規則エンジンの処理に、アプリケーションサーバからイベントを注入することができ、規則集合の結果ビューは、合致するすべての条件を見付けるためにクエリー化され得、このビューからの結果を用いて、アプリケーションサーバ内の何らかの動作のスケジューリングを行なうことができる。
【００６３】
規則集合の特性
システムに追加されたイベントを管理および処理する間に、データベース対応規則エンジンは、規則集合ごとに異なるさまざまなイベント管理ポリシーを施行する。このようなポリシーは、規則集合の作成時に宣言的に設定され得、所定の規則集合内のすべての規則に適用可能である。
【００６４】
イベントの消費
設定され得る１つのイベント管理ポリシーは、消費と呼ばれる。消費ポリシーの使用により、イベントが、単一の条件を排他的に満たすために使用され得るか、または、多数の条件を共有する態様で満たすために使用され得るかを指定することが可能になる。単一の条件のみに対する場合、当該イベントは、当該イベントが満たす所定の条件により「消費され」、結果的に、関連付けられたイベント情報は、このような判断が行なわれた後にデータベースから削除される。その一方で、イベントが１つの条件を満たすと消費されるように指定されない場合、イベント情報はデータベースから削除されず、当該イベントに関する条件の評価が継続し得る。
【００６５】
イベントの持続時間
設定され得る１つのイベント管理ポリシーは、持続時間と呼ばれる。持続時間のポリシーを使用することにより、消費されていない基本イベントの生存期間、または持続時間の指定が可能になる。たとえば、所定の基本イベントは、当該イベントが発生したトランザクションが終了するまで継続するか、または、当該イベントが発生したデータベースセッションが終了するまで、かつ満了前まで継続するように指定され得る。イベント情報は、満了になるとデータベースから削除され、したがって、関連する条件に照らしてもはや評価されない。別の例に関し、所定の基本イベントは、特定の期間にわたって継続するように指定され得る。
【００６６】
規則評価の順序付け
設定され得る１つのイベント管理ポリシーは、順序付けと呼ばれる。順序付けポリシーの使用により、規則（したがって所定の規則に対応する条件）が複合イベントを構成する基本イベントに照らして評価される順序の指定が可能になる。所定の基本イベントが、２つ以上の規則を満たし得る２つ以上の複合イベントに対する構成要素になり得るため、順序付けポリシーを使用して競合解消ポリシーを指定し、それぞれの規則の満たされた条件に関連付けられた動作間の競合を回避することができる。一実施例では、順序付けポリシ
ーを指定するために、イベントの属性および動作プリファレンスに基づいたSQL ORDER BY句が使用される。加えて、順序付けポリシーを消費ポリシーと併用して、矛盾する動作を有する多数の条件が満たされることを回避することができる。なぜなら、条件を満たすイベントが、当該イベントによって潜在的に満たされ得るそれ以外の条件に照らして順序付けポリシーに従って評価される前に、消費ポリシーに従って削除されるためである。
【００６７】
データベースシステムにおける表現式の管理
上記の説明を参照して、図２は、一実施例に従った、データベースにおけるイベント−条件−動作の表現式を管理するための方法を示すフロー図である。図２の方法は、たとえば、特定のデータベースへのアクセスと、クライアントによる、データベースにアクセスしてデータベースからデータを操作する要求の処理とを各々が調整して容易にする、１つ以上のデータベースサーバにより実行される。
【００６８】
ブロック２０２では、その各々をこの明細書において上で説明した、イベント構造、１つ以上の関連する条件、および１つ以上の関連する動作を識別する表現式が受取られる。たとえば、規則は、以下のECA（イベント−条件−動作）表記法で表現され得、または、他のいずれかの表記法、たとえば標準的なSQLステートメントで表現され得る。
【００６９】
【数１０】
2007531161.tif 000012
【００７０】
ブロック２０４において、表現式は、図１の例に示すように、データベース内の１つ以上のテーブル内に格納される。したがってブロック２０６では、規則のランタイムデータベースセッションと上で称したデータベースセッション中に、イベント構造と符合するイベントが発生したとき、イベントの発生が検出される。たとえば、図１に示すイベントインスタンスがデータベースに追加されると、このイベントインスタンスに含まれる属性に基づき、このイベントインスタンスが特定のイベント構造に対応することを規則エンジンが検出する。イベントデータを格納するテーブルの構造からイベント構造が導出される場合、イベントの発生は、データの状態の変化として（たとえばINSERTまたはUPDATAステートメントを介して）検出される。
【００７１】
さらに、データベースセッション中に、ブロック２０８において、ブロック２０６で検出されたイベントの発生が、ブロック２０４においてデータベースに格納された表現式に指定されたいずれかの条件を満たすか否かが判断される。規則エンジンが、イベントの発生が対応するイベント構造について既に認識しており、イベント構造が規則条件の列に関連付けられているため、規則エンジンは、このイベントの発生に対してどの条件が評価されるべきかを判断することができる。
【００７２】
ブロック２１０において、イベントの発生が、対応する動作を有する１つ以上の規則条件のいずれかの集合を満たす場合、対応する動作の実行が生じる。この動作は、データベース内でのみ実行もしくは実施されてよく、または、アプリケーションサーバによって等、データベースの外部で実施されてよい。たとえば、動作の実施は、上で説明したように、動作コールバック手続きによってトリガされる。
【００７３】
ブロック２０６〜２１０は、所定のデータベースセッションにおいて所望されるだけのイベントの発生を処理するために繰返され得る。多数のイベントの発生は、１つのセッシ
ョン中にグループ化されて一括処理されてよく、または、多数のイベントの発生は、データベースに当該イベントの発生が追加されるのに伴い、別個のセッション中に個別に処理されてよい。
【００７４】
ブロック２０６および２０８は、複合イベント構造に関連付けられた基本イベントの各発生に対して繰返され得、各基本イベントの結果は、少なくとも、他の兄弟基本イベントのすべてが処理されるまで、または、持続時間のポリシー等の規則集合の特性に従って基本イベントが満了するまで、データベース内に永続的に格納される。複合イベントの場合、ブロック２０６および２０８が、複合イベント構造に関連付けられた各基本イベントに対して一旦完了すると、適用可能な場合にブロック２１０が実行され得る。
【００７５】
イベントに関連するデータおよびこのようなデータに対する規則が同一のリポジトリ内に存在しているため、ここに記載する技術は、クライアントとデータベースとの間の計算層で構成されるミドルウェアアプリケーションにデータを取込むことなく、リレーショナルデータに対する規則を処理するデータベース対応規則エンジンの使用に対応する。したがって、イベント−条件−動作の処理は、ミドルウェア規則エンジンを用いるよりも効率がよい。さらに、データベース対応規則エンジンが、複合イベントと、複合イベントを構成する基本イベントに関する条件のインクリメンタルな評価の永続的な格納とをサポートするため、処理され得るイベントの数または規則集合のサイズに対する制約がない。さらに、規則集合がメモリ内にロードされるたびに初期化および起動を必要とするメモリベースのミドルウェア規則エンジンとは異なり、データベース対応規則エンジンによって使用される規則集合は、データベースが起動している限り常にアクティブになっており、したがって新規の規則およびイベントを受入れる準備が常に整っている。
【００７６】
ハードウェアの外観
図３は、この発明の一実施例が実現され得るコンピュータシステム３００を示すブロック図である。コンピュータシステム３００は、バス３０２または情報を通信するための他の通信機構と、バス３０２に結合されて情報を処理するためのプロセッサ３０４とを含む。コンピュータシステム３００は、バス３０２に結合されてプロセッサ３０４が実施する命令および情報を格納するためのメインメモリ３０６、たとえばランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置も含む。メインメモリ３０６は、プロセッサ３０４が実施する命令の実施中に、一時的数値変数または他の中間情報を格納するためにも使用可能である。コンピュータシステム３００は、バス３０２に結合されてプロセッサ３０４に対する静的情報および命令を格納するための読出専用メモリ（ＲＯＭ）３０８または他の静的記憶装置をさらに含む。磁気ディスク、光学ディスク、または光磁気ディスク等の記憶装置３１０が設けられてバス３０２に結合され、情報および命令を格納する。
【００７７】
コンピュータシステム３００は、コンピュータユーザに情報を表示するためのディスプレイ３１２、たとえば陰極線管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）に、バス３０２を介して結合され得る。英数字キーおよび他のキーを含む入力装置３１４がバス３０２に結合されて、情報および指令選択をプロセッサ３０４に通信する。別の種類のユーザ入力装置が、方向情報および指令選択をプロセッサ３０４に通信してディスプレイ３１２上のカーソルの動作を制御するためのカーソル制御装置３１６、たとえばマウス、トラックボール、またはカーソル方向キーである。この入力装置は一般に、２つの軸、すなわち第１の軸（ｘ等）および第２の軸（ｙ等）において２自由度を有し、これによって入力装置は平面上で位置を指定することができる。
【００７８】
この発明は、この明細書に記載された技術を実現するためにコンピュータシステム３００を用いることに関する。この発明の一実施例によると、これらの技術は、メインメモリ３０６に含まれる１つ以上の命令の１つ以上のシーケンスをプロセッサ３０４が実施する
ことに応じて、コンピュータシステム３００により実行される。このような命令は、別のコンピュータ読取可能な媒体、たとえば記憶装置３１０からメインメモリ３０６内に読出すことができる。メインメモリ３０６に含まれる命令のシーケンスを実施することにより、プロセッサ３０４はこの明細書に記載されたプロセスのステップを実行する。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて結線回路を用いて、この発明を実現することができる。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアのいずれかの特定の組合せに限定されない。
【００７９】
この明細書で用いられる「コンピュータ読取可能な媒体」という用語は、プロセッサ３０４に対して実施のために命令を提供することに携わる、いずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態を取り得るが、これらに限定されない。不揮発性媒体には、たとえば記憶装置３１０等の光学ディスク、磁気ディスク、または光磁気ディスクが含まれる。揮発性媒体には、メインメモリ３０６等の動的メモリが含まれる。伝送媒体には、同軸ケーブル、銅線、および光ファイバが含まれ、バス３０２を有するワイヤが含まれる。伝送媒体は、電波データ通信および赤外線データ通信の際に生成されるもの等の音波または光波の形態も取り得る。
【００８０】
コンピュータ読取可能な媒体の一般的な形態には、たとえばフロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを有する他のいずれかの物理的媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、以下に述べる搬送波、またはコンピュータが読出すことのできる他のいずれかの媒体が含まれる。
【００８１】
プロセッサ３０４に対して実施のために１つ以上の命令の１つ以上のシーケンスを搬送することに対し、コンピュータ読取可能な媒体のさまざまな形態が関与し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクで搬送され得る。遠隔コンピュータはそれらの命令をそれ自体の動的メモリにロードして、それらの命令を、モデムを用いて電話回線経由で送信することができる。コンピュータシステム３００に対してローカルなモデムが電話回線上のデータを受信して、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線信号によって搬送されたデータは赤外線検出器によって受信され得、適切な回路がそのデータをバス３０２上に出力することができる。バス３０２はそのデータをメインメモリ３０６に搬送し、そこからプロセッサ３０４が命令を取り出して実施する。メインメモリ３０６が受信した命令は、プロセッサ３０４による実施前または実施後のいずれかに、記憶装置３１０に任意に格納され得る。
【００８２】
コンピュータシステム３００は、バス３０２に結合された通信インターフェイス３１８も含む。通信インターフェイス３１８は、ローカルネットワーク３２２に接続されたネットワークリンク３２０に対する双方向のデータ通信結合を提供する。たとえば通信インターフェイス３１８は、対応する種類の電話回線に対するデータ通信接続を設けるための統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであり得る。別の例として、通信インターフェイス３１８は、互換性を有するローカルエリアネットワーク（ＬＡＮ）にデータ通信接続を設けるためのＬＡＮカードであり得る。無線リンクもまた実現することができる。このようなどの実現例においても、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
【００８３】
ネットワークリンク３２０は一般に、１つ以上のネットワーク経由で他のデータ装置に対してデータ通信を提供する。たとえば、ネットワークリンク３２０は、ローカルネットワーク３２２経由で、ホストコンピュータ３２４に、またはインターネットサービスプロ
バイダ（Internet Service Provider）（ＩＳＰ）３２６により運営されるデータ装置に、接続を提供することができる。ＩＳＰ３２６は次いで、現在一般に「インターネット（Internet）」３２８と呼ばれるワールドワイドパケットデータ通信網を介してデータ通信サービスを提供する。ローカルネットワーク３２２およびインターネット３２８はともに、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を用いる。さまざまなネットワークを経由する信号と、ネットワークリンク３２０上の、または、通信インターフェイス３１８経由の信号とは、コンピュータシステム３００との間でデジタルデータを搬送し、情報を運ぶ搬送波の例示的形態である。
【００８４】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０、および通信インターフェイス３１８を介してメッセージを送信して、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ３３０は、インターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２、および通信インターフェイス３１８経由で、アプリケーションプログラムに対して要求されたコードを送信することができる。
【００８５】
受信されたコードは、受信時にプロセッサ３０４によって実施され得、および／または、後の実施のために、記憶装置３１０または他の不揮発性記憶装置に格納される。この態様で、コンピュータシステム３００は、搬送波の形態でアプリケーションコードを獲得することができる。
【００８６】
拡張例および代替例
この発明の代替的な実施例が、上記の説明全体にわたり、この実施例の文脈の理解を最も容易にする位置において説明された。さらに、この発明は、その特定の実施例を参照して説明された。しかしながら、この発明のより広い精神および範囲から逸脱することなく、この発明に対してさまざまな変更および変形が可能であることが明らかであろう。たとえば、SQLが使用される実現例が提示されているが、ここに記載する技術は、SQLの使用に限定されない。なぜなら、他のデータクエリー言語が適用可能であり得るためである。したがって、明細書および図面は、限定的な意味ではなく例示と考えられるべきである。
【００８７】
加えて、この説明では、特定のプロセスステップが特定の順序で明示されており、英字および英数字の標識が特定のステップを識別するために使用され得る。説明において特に明記されていない限り、この発明の実施例は、このようなステップを実施するいずれかの特定の順序に必ずしも限定されているわけではない。特に、標識は、ステップを便宜上識別するために単に使用されており、このようなステップを実施する特定の順序を指定または要求することを意図しない。
【図面の簡単な説明】
【００８８】
【図１】一実施例に従った、データベース内のECA情報の視覚表現と、このような情報間の対話とを示す図である。
【図２】一実施例に従った、データベース内におけるイベント−条件−動作の表現式を管理するための方法を示すフロー図である。
【図３】この発明の一実施例が実現され得るコンピュータシステムを示すブロック図である。
【図１】
2007531161.tif 000013
【図２】
2007531161.tif 000014
【図３】
2007531161.tif 000015
【手続補正書】
【提出日】平成18年6月14日(2006.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースシステムで表現式を管理するための方法であって、前記方法はコンピュータで実行されるステップ、すなわち、
イベント構造を指定し、それに照らして前記イベント構造に対応するイベントが評価される１つ以上の条件を指定し、対応する動作プリファレンスを指定する、１つ以上のデータベースクエリー言語ステートメントを受取るステップを含み、前記イベント構造は、前記イベント構造に対応するイベントの固有の特徴を記述する属性の集合で定義され、前記方法はさらに、
前記イベント構造、前記１つ以上の条件、および前記動作プリファレンスを前記データベースシステム内に格納するステップと、
データベースセッション中に、データベースサーバが、
前記イベント構造に適合するイベントの発生を検出するステップと、
前記イベントの前記発生が前記１つ以上の条件のいずれかを満たすか否かを判断するステップとを実行するステップと、
前記イベントの前記発生が、前記１つ以上の条件のうち、前記対応する動作プリファレンスに関連付けられた１つ以上の条件のいずれかの集合を満たす場合に、前記データベースサーバが、前記１つ以上の対応する動作プリファレンスに対応する動作の実行を生じるステップとを含む、方法。
【請求項２】
前記イベント構造は、前記データベースにおいてオブジェクト型として表現される、請求項１に記載の方法。
【請求項３】
データベースクエリー言語ステートメントを受取るステップは、２つ以上の基本イベントを有する複合イベント構造として前記イベント構造を識別するデータベースクエリー言語ステートメントを受取るステップを含み、前記２つ以上の基本イベントは、前記データベースにおいて、前記複合イベント構造に埋込まれたオブジェクト型として各々が表現される、請求項１に記載の方法。
【請求項４】
検出するステップは、前記複合イベント構造の第１の基本イベント構造に符合するイベントが生じる時を検出することにより、前記基本イベントの第１の基本イベントの発生を検出するステップを含み、
判断するステップは、前記第１の基本イベントの前記発生が前記条件のいずれかを満たすか否かを判断するステップを含み、
前記方法はさらに、前記コンピュータで実行されるステップ、すなわち、
前記判断するステップの結果を前記データベースに永続的に格納するステップと、
前記複合イベント構造の第２の基本イベント構造に適合するイベントが生じる時を検出することにより、前記基本イベントの第２の基本イベントの発生を検出するステップと、
前記第２の基本イベントの前記発生が、前記条件のいずれかを満たすか否かを判断するコンピュータ実施ステップと、
前記条件のいずれかが、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生の両方により満たされるか否かを判断するステップとを含み、
実行を生じるステップは、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生が、１つ以上の対応する動作を有する１つ以上の条件の前記集合のいずれかを満たす場合に、前記１つ以上の対応する動作を実行するステップを含む、請求項３に記載の方法。
【請求項５】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記２つ以上の基本イベントのうちの第２の基本イベントの発生が生じる前に、前記２つ以上の基本イベントのうちの第１の基本イベントの発生が有効な期間を指定する情報を受取るステップを含み、
判断するステップは、前記第１の基本イベントの前記発生および前記第２の基本イベントの前記発生が、前記条件のいずれかを満たすか否かを前記情報に従って判断するステップを含む、請求項３に記載の方法。
【請求項６】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記基本イベントに関して前記条件を評価するための順序を指定する情報を受取るステップを含み、
判断するステップは、前記情報に従った前記順序において、前記条件が前記基本イベントにより満たされているか否かを判断するステップを含む、請求項３に記載の方法。
【請求項７】
データベースクエリー言語ステートメントを受取るステップは、前記データベース内のテーブルの構造から導出されたイベント構造を識別するデータベースクエリー言語ステートメントを受取るステップを含み、前記テーブルは、イベントの発生を表現するデータを格納している、請求項１に記載の方法。
【請求項８】
前記イベントの発生を検出するステップは、前記データが変更されたことを検出するステップを含む、請求項７に記載の方法。
【請求項９】
テーブルに前記１つ以上の条件を格納するステップは、前記テーブルのEXPRESSION列にEXPRESSIONデータ型として１つ以上の条件を格納するステップを含む、請求項１に記載の方法。
【請求項１０】
データベースクエリー言語ステートメントを受取るステップは、前記データベースに対するSQLクエリーとして表現される条件を識別する表現式を受取るステップを含む、請求項１に記載の方法。
【請求項１１】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記データベースクエリー言語ステートメントの前記１つ以上の条件に対する変更を、
SQL演算の形態で受取るステップを含む、請求項１に記載の方法。
【請求項１２】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記条件のいずれかを満たすと判断されたイベント発生のリストと、
イベント発生の前記リスト内のイベント発生により満たされた条件のリストと、
条件の前記リスト内の条件に符合する動作のリストとを含むデータベースビューへのアクセスをデータベースセッション中に提供するステップを含む、請求項１に記載の方法。
【請求項１３】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記データベースシステムのユーザからの要求に応答して、前記ビューに対する演算を実行するステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
演算を実行するステップは、イベント発生の前記リスト内のイベント発生により満たされた２つ以上の条件間の競合を解消するための演算を実行するステップを含む、請求項１３に記載の方法。
【請求項１５】
演算を実行するステップは、前記データベースシステムの外部での実行のための動作をスケジューリングすることを含む演算を実行するステップを含む、請求項１３に記載の方法。
【請求項１６】
さらに、前記コンピュータで実行されるステップ、すなわち、
前記イベントの前記発生が１つ以上の条件の前記集合を満たすと判断したときに、前記判断するステップが停止すべきであることを指定する情報を受取るステップと、
前記イベントの前記発生が１つ以上の条件の前記集合を満たすと判断したときに、前記イベントの前記発生が前記条件のいずれかを満たすか否かを判断することを停止するステップとを含む、請求項１に記載の方法。
【請求項１７】
データベースクエリー言語ステートメントを受取るステップは、時間的な条件を識別するデータベースクエリー言語ステートメントを受取るステップを含み、
前記時間的な条件は、条件の集合からの第１の条件がイベントの発生により満たされた後の特定の時間内に条件の前記集合からの第２の条件がイベントの発生により満たされる場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、前記時間的な条件に従って、イベントの発生が前記第１および第２の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項１８】
データベースクエリー言語ステートメントを受取るステップは、否定の条件を識別するデータベースクエリー言語ステートメントを受取るステップを含み、
前記否定の条件は、条件の集合からの第１の条件がイベントの発生により満たされた後の特定の時間内に条件の前記集合からの第２の条件がイベントの発生により満たされない場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、前記否定の条件に従って、イベントの発生が前記第１および第２の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項１９】
データベースクエリー言語ステートメントを受取るステップは、条件のグループからの特定の数の条件がイベントの１つ以上の発生により満たされたときに前記１つ以上の対応する動作の実行をトリガする条件の前記グループを識別するデータベースクエリー言語ステートメントを受取るステップを含み、
前記特定の数は、条件の前記グループ内の条件の数よりも少なく、
判断するステップは、イベントの１つ以上の発生が、条件の前記グループからの前記特定の数の条件を満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項２０】
データベースクエリー言語ステートメントを受取るステップは、順位付けされた条件のグループを識別するデータベースクエリー言語ステートメントを受取るステップを含み、
順位付けされた条件の前記グループは、順位付けされた条件の前記グループからの前記条件が、イベントの１つ以上の発生により特定のシーケンスで満たされる場合に、前記１つ以上の動作のうちの関連付けられた動作が実行されるべきであることを指定し、
判断するステップは、イベントの１つ以上の発生が、順位付けされた条件の前記グループからの前記条件を前記特定のシーケンスで満たすか否かを判断するステップを含む、請求項１に記載の方法。
【請求項２１】
１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに対し、請求項１から２０のいずれかに記載の方法を実行させる命令の１つ以上のシーケンスを有する、コンピュータ読取可能な媒体。
【請求項２２】
イベント構造を指定し、それに照らして前記イベント構造に対応するイベントが評価される１つ以上の条件を指定する、１つ以上のデータベースクエリー言語ステートメントを受取るための手段を含み、前記イベント構造は、前記イベント構造に対応するイベントの固有の特徴を記述する属性の集合で定義され、さらに、
前記データベース内のテーブルに前記１つ以上の条件を格納するための手段と、
データベースセッション中に、前記イベント構造に適合するイベントが発生する時を検出することにより前記イベントの発生をデータベースサーバにより検出するための手段と、
前記データベースセッション中に、前記イベントの前記発生が前記１つ以上の条件のいずれかを満たすか否かをデータベースサーバにより判断するための手段と、
前記イベントの前記発生が、前記１つ以上の条件のうち、１つ以上の対応する動作に関連付けられた１つ以上の条件の集合のいずれかを満たす場合に、前記１つ以上の対応する動作の実行をデータベースサーバにより生じるための手段とを含む、システム。
【国際調査報告】
2007531161.tif 000016
2007531161.tif 000017
2007531161.tif 000018