|
Oracle Complex Event Processing (略称 Oracle CEP) アプリケーションには、1 つまたは複数の複合イベント プロセッサ (プロセッサ) が含まれています。各プロセッサは 1 つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースからの連続的なデータ ストリームが送信されるデータ フィードをリスンします。金融データ フィードから Oracle CEP load generator まで、任意のソースを使用できます。プロセッサの主な機能は、プロセッサをリスンしているコンポーネントに渡される着信イベントのサブセットを選択する、関連付けられたイベント処理言語 (EPL) のルールです。リスンするコンポーネントには、通常はイベント処理ネットワークの最後を定義し、クライアント アプリケーションへのパブリッシュなどイベントで何らかの処理を実行する、他のプロセッサまたはビジネス オブジェクト POJO を指定できます。
アプリケーションの各プロセッサには、初期コンフィグレーションを定義する関連付けられた XML ファイルが必要です。この XML ファイルは Oracle CEP アプリケーション バンドルの一部としてデプロイされます。後から wlevs.Admin ユーティリティを使用するか、または適切な JMX Mbean を直接操作して、実行時にこのコンフィグレーションを更新できます。
プロセッサの初期の EPL ルール セットをコンフィグレーションするほかに、プロセッサ XML ファイルでは以下のコンフィグレーションが可能です。
アプリケーションの各プロセッサについてコンフィグレーション XML ファイルを作成する必要があります。アプリケーションに複数のプロセッサが含まれている場合は、各プロセッサごとに個別の XML ファイルを作成するか、すべてのプロセッサのコンフィグレーションが含まれた単一の XML ファイルを作成できます。開発環境に最も適した方法を選択します。
必要に応じてアプリケーションの他のコンポーネント (アダプタとストリーム) のコンフィグレーション ファイルを作成できますが、デフォルトのコンフィグレーションが適切な場合は変更する必要はありません。これらのコンポーネントのコンフィグレーション ファイルを作成する場合は、個別のファイルを作成するか、またはプロセッサ コンフィグレーション ファイルと結合できます。
以下の手順では、プロセッサのコンフィグレーション ファイルを作成する主な手順について示します。簡略化のため、この手順ではすべてのプロセッサを 1 つの XML ファイルにコンフィグレーションすることを想定しています。ただし、各プロセッサごとに個別のファイルを作成することもできます。
プロセッサ コンフィグレーション ファイルの完全な例については、「プロセッサ コンフィグレーション ファイルの例」を参照してください。
プロセッサ コンフィグレーション ファイルを記述する完全な XSD スキーマについては、コンポーネント コンフィグレーション ファイルの XSD スキーマ リファレンスを参照してください。
SELECT * from Withdrawal RETAIN ALL
SELECT symbol, AVG(price)
FROM (SELECT * FROM MarketTrade WHERE blockSize > 10)
RETAIN 100 EVENTS PARTITION BY symbol WITH LARGEST price
GROUP BY symbol
HAVING AVG(price) >= 100
ORDER BY symbol
EPL にはリレーショナル データベース テーブルのクエリに使用される Structure Query Language (SQL) との多くの共通点がありますが、これらの構文は多くの点で異なります。その他の大きな相違点として、EPL クエリではもう 1 つの面 (時間) が考慮されます。静的な SQL クエリとは異なり、プロセッサでは EPL が継続的に実行されます。
EPL に関するその他の概念情報と、独自の EPL ルールの設計と作成に役立つサンプルおよびリファレンス情報については、「EPL リファレンス ガイド」を参照してください。
この XML ファイルには、.xml 拡張子を使用するのであれば任意の名前を付けてかまいません。
プロセッサ コンフィグレーション ファイルのルート要素は <config> であり、次の手順に示すネームスペース定義を使用します。
<config> の <processor> 子要素を追加します。<name> 子要素を使用して各プロセッサをユニークに識別します。この名前は、アプリケーションのイベント処理ネットワークを定義する EPN アセンブリ ファイルの <wlevs:processor> タグの id 属性の値と一致している必要があります。このように指定することで、Oracle CEP では、このプロセッサ コンフィグレーションが適用される EPN アセンブリ ファイル内の特定のプロセッサ コンポーネントを認識します。詳細については、「EPN アセンブリ ファイルの作成」を参照してください。
たとえば、アプリケーションに 2 つのプロセッサがある場合、コンフィグレーション ファイルは最初に以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<n1:config xsi:schemaLocation="http://www.bea.com/xml/ns/wlevs/config/application wlevs_application_config.xsd"
xmlns:n1="http://www.bea.com/xml/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<processor>
<name>firstProcessor</name>
...
</processor> <processor>
<name>secondProcessor</name>
...
</processor></n1:config>
この例では、コンフィグレーション ファイルに myFirstProcessor と mySecondProcessor という 2 つのプロセッサが含まれています。このため、EPN アセンブリ ファイルには同じ識別子を持つプロセッサが少なくとも 2 つ登録されている必要があります。
<wlevs:processorid="firstProcessor" ...>
...
</wlevs:processor>
<wlevs:processor id="secondProcessor" ...>
...
</wlevs:processor>
| 警告 : | XML ファイル内の識別子および名前は大文字と小文字が区別されるため、EPN アセンブリ ファイルでコンポーネントの識別子を参照する場合は、必ず同一の大文字と小文字を指定するようにします。 |
<processor> に <rules> 子要素を追加して、このプロセッサに設計されている EPL ルール セットに対応する 1 つまたは複数の <rule> 要素をグループ化します。
<rule> 要素の必須の id 属性を使用して各ルールをユニークに識別します。XML CDATA タイプを使用して実際の EPL ルールを入力します。例を示します。
<processor>
<name>firstProcessor</name>
<rules>
<rule id="myFirstRule"><![CDATA[
SELECT * from Withdrawal RETAIN ALL
]]></rule>
<rule id="mySecondRule"><![CDATA[
SELECT * from Checking RETAIN ALL
]]></rule>
</rules>
</processor>
<processor> 要素の <database> 子要素を追加してアプリケーションの JDBC データ ソースを定義します。EPL ルールでイベントのストリームが実際のリレーショナル データベース テーブルに結合される場合は、これを指定する必要があります。
<database> の <name> 子要素を使用してデータソースをユニークに識別します。
<database> の <data-source-name> 子要素を使用して実際のデータソース名を指定します。この名前は、ドメインの config.xml ファイル内の <data-source> コンフィグレーション オブジェクトの <name> 子要素に対応しています。サーバのコンフィグレーションの詳細については、「リレーショナル データベースへのアクセスのコンフィグレーション」を参照してください。
<processor>
<name>firstProcessor</name>
<rules>
....
</rules><database></processor>
<name>myDataSource</name>
<data-source-name>rdbmsDataSource</data-source-name>
</database>
<processor> 要素の monitoring ブール属性を使用してプロセッサのモニタを有効または無効にします。デフォルトでは、モニタは有効です。モニタが有効な場合、プロセッサでは着信または発信イベント数などの実行時統計が収集され、その情報が Mbean に転送されます。<processormonitoring="true">
<name>firstProcessor</name>
<rules>
....
</rules>
</processor>
モニタを実際に有効にするには、プロセッサの管理容易性も有効にしておく必要があります。そうしないと、monitoring 属性を true に設定しても効果はありません。管理容易性を有効にするには、次の例の太字部分のように、EPN アセンブリ ファイルに登録された対応するコンポーネントの manageable 属性を true に設定します。
<wlevs:processor id="firstProcessor" manageable="true" />
次の例は、「複合イベント プロセッサのコンフィグレーション : 主な手順」で説明している、myProcessor プロセッサのサンプルの EPL クエリをコンフィグレーションする方法を示します。
<?xml version="1.0" encoding="UTF-8"?>
<n1:config xsi:schemaLocation="http://www.bea.com/xml/ns/wlevs/config/application wlevs_application_config.xsd"
xmlns:n1="http://www.bea.com/xml/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<processor>
<name>myProcessor</name>
<rules>
<rule id="myRule"><![CDATA[
SELECT symbol, AVG(price)
FROM (SELECT * FROM MarketTrade WHERE blockSize > 10)
RETAIN 100 EVENTS PARTITION BY symbol WITH LARGEST price
GROUP BY symbol
HAVING AVG(price) >= 100
ORDER BY symbol
]]></rule>
</rules>
</processor>
</n1:config>
この例で、<name> 要素はプロセッサ myProcessor にこの EPL ルールがコンフィグレーションされていることを指定します。これは、アプリケーションを定義する EPN アセンブリ ファイルで、対応する <wlevs:processor id="myProcessor" /> タグを使用してこの EPL ルールと実際の myProcessor プロセッサ インスタンスをリンクする必要があることを暗黙的に示しています。
|