この節では、次の項目について説明します。
|
注意: Oracle CQLは、Oracle CEP 11g リリース1 (11.1.1)のEvent Processing Language (EPL)に取って代わるものです。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第9章「CQLプロセッサの構成」を参照してください。 |
Oracle CEPアプリケーションには、1つ以上の複雑なイベント・プロセッサ、もしくはプロセッサが含まれています。各プロセッサは1つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースから連続的なデータ・ストリームを送信するデータ・フィードにリスニングします。金融データ・フィードからOracle CEPロード・ジェネレータまで、任意のソースを使用できます。
EPLプロセッサの主な機能は、受信イベントのサブセットを選択してプロセッサをリスニングしているコンポーネントに渡す、関連付けられたEvent Processing Language (EPL)のルールです。リスニングするコンポーネントには、他のプロセッサまたは通常はイベント処理ネットワークの最後を定義し、クライアント・アプリケーションへのパブリッシュなどイベントでなんらかの処理を実行するビジネス・オブジェクトPOJOを指定できます。EPLの詳細は、Oracle CEP EPL言語リファレンス』を参照してください。
アプリケーションの各EPLプロセッサに対して、コンポーネント構成ファイルにprocessor要素を作成する必要があります。このprocessor要素には、プロセッサのEPLルールの初期セット、および次のような任意のプロセッサ構成を指定します。
Oracle CEPアプリケーションでリレーショナル・データベースへの接続が必要な場合は、JDBCデータ・ソースのリファレンス。
プロセッサのモニターの有効化。
EPLプロセッサEPNアセンブリ・ファイルに、任意の追加EPLプロセッサの機能を構成できます。
コンポーネント構成ファイルprocessor要素のname要素は、EPNアセンブリ・ファイルprocessor要素のid属性と一致している必要があります。たとえば、例10-1に示すEPNアセンブリ・ファイルprocessor要素の場合、例10-2に示す対応するコンポーネント構成ファイルprocessor要素が指定されます。
例10-1 EPNアセンブリ・ファイル EPLプロセッサID: proc
<wlevs:processor id="proc" provider="epl" >
<wlevs:table-source ref="Stock" />
</wlevs:processor>
例10-2 コンポーネント構成ファイル EPLプロセッサ名: proc
<processor>
<name>proc</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>
</procesor>
|
注意: Oracle CEP 11g リリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、例10-1に示すように、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第9章「Oracle CQLプロセッサの構成」を参照してください。 |
processor要素は、次のいずれかの任意のコンポーネント構成ファイルに作成できます。
デフォルトのOracle CEPアプリケーションの構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。
個別の構成ファイル。
アプリケーションに1つ以上のプロセッサが含まれている場合は、デフォルトconfig.xmlファイルでプロセッサごとにprocessor要素を作成できます。また、プロセッサごとにMETA-INF/wlevsに個別のXMLファイルを作成するか、またはすべてのプロセッサの構成のみでなく、アプリケーション内のすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)が含まれる単一のXMLファイルをMETA-INF/wlevsに作成できます。開発環境に最も適した方法を選択します。
デフォルトでは、Oracle CEP IDE for Eclipseは、1つのコンポーネント構成ファイルおよび1つのEPNアセンブリ・ファイルを作成します。Oracle CEP IDE for Eclipseを使用してEPLプロセッサを作成する場合、デフォルトでプロセッサ要素がデフォルト・コンポーネント構成ファイルMETA-INF/wlevs/config.xmlファイルに追加されます。
コンポーネント構成ファイルは、Oracle CEPアプリケーション・バンドルの一部としてデプロイされます。Oracle CEP Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。
詳細は、次を参照してください:
『Oracle CEP Visualizerユーザーズ・ガイド』
『Oracle CEP管理者ガイド』のwlevs.Adminコマンドライン・リファレンス
『Oracle CEP管理者ガイド』のOracle CEP用JMXの構成に関する項
EPLプロセッサ構成の詳細は、次の項を参照してください。
以下の手順では、プロセッサの構成ファイルを作成する主な手順について示します。簡略化のため、この手順ではすべてのプロセッサを1つのXMLファイルに構成することを想定しています。ただし、各プロセッサごとに個別のファイルを作成することもできます。
プロセッサ構成ファイルを記述する完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。
プロセッサ構成ファイルの完全な例は、10.4項「EPLプロセッサ構成ファイルの例」を参照してください。
任意のテキスト・エディタを使用して、手動でEPLプロセッサを構成できます。
EPLプロセッサを構成するには:
プロセッサで実行されるEPLルールのセットを設計します。これらのルールでは、次の2つの例のように、単純にすべての受信イベントを選択し、時間やプロパティの値などに基づいてセットを制限することが可能です。
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ルールの設計と作成に役立つ例およびリファレンス情報は、『Oracle CEP EPL言語リファレンス』を参照してください。
アプリケーションの各プロセッサについて上記の手順で設計されたEPLルールおよびオプションの機能が含まれた、プロセッサ構成XMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。
プロセッサ構成ファイルのルート要素はconfigで、ネームスペース定義は次の手順に示します。
アプリケーションの各プロセッサに対して、configのprocessor子要素を追加します。
各プロセッサをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:processor要素のid属性の値と同じである必要があります。これによって、Oracle CEPは、このプロセッサ構成はEPNアセンブリ・ファイルのどのプロセッサ・コンポーネントに適用されるかを理解します。詳細は、3.3項「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>
この例では、構成ファイルには、firstProcessorおよびsecondProcessorという2つのプロセッサが含まれています。これは、EPNアセンブリ・ファイルには、同じ識別子を持つ少なくとも2つのプロセッサ登録が含まれる必要があることを意味します。
<wlevs:processor id="firstProcessor"provider="epl"...> ... </wlevs:processor> <wlevs:processor id="secondProcessor"provider="epl"...> ... </wlevs:processor>
|
注意: Oracle CEP 11g リリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle CEPは、EPLの下位互換性をサポートします。詳細は、第9章「Oracle CQLプロセッサの構成」を参照してください。 |
|
注意: 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子要素を追加してデフォルトのプロセッサ構成をオーバーライドします。
必要に応じて、processor要素のdatabase子要素を追加してアプリケーションのJDBCデータ・ソースを定義します。EPLルールでイベントのストリームが実際のリレーショナル・データベース表に結合される場合は、これを追加する必要があります。
databaseのname子要素を使用して、データ・ソースを一意に識別します。
databaseのdata-source-name子要素を使用してデータ・ソースの実際の名前を指定します。この名前は、使用するドメインのconfig.xmlファイル内のdata-source構成オブジェクトのname子要素に対応します。
詳細は、『Oracle CEP管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。
例:
<processor>
<name>firstProcessor</name>
<rules>
....
</rules>
<database>
<name>myDataSource</name>
<data-source-name>rdbmsDataSource</data-source-name>
</database>
</processor>
ファイルを保存して閉じます。
必要に応じて、アセンブリ・ファイルに追加のEPLプロセッサ機能を構成します。
この項では、Oracle CQLプロセッサ構成ファイルの例を記載します。次のものが含まれます。
次の例は、10.2項「EPLプロセッサの構成」」に示すmyProcessorEPLプロセッサのサンプルのEPL問合せを構成する方法を示します。
<?xml version="1.0" encoding="UTF-8"?>
<n1:config xmlns:n1="http://www.bea.com/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要素は、単一のEPLルールが構成されているプロセッサはmyProcessorという名前であることを指定しています。これは、アプリケーションを定義するEPNアセンブリ・ファイルには、これらのEPLルールを実際のmyProcessorEPLプロセッサ・インスタンスにリンクするために、対応する<wlevs:processor id="myProcessor" provider="epl" />タグを含む必要があることを示します(10.4.2項「EPLプロセッサEPNアセンブリ・ファイル」を参照してください)。
次の例は、EPLプロセッサのEPNアセンブリ・ファイルを示しています。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs-v11_1_1_3.xsd"> <wlevs:event-type-repository> <wlevs:event-type type-name="HelloWorldEvent"> <wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class> </wlevs:event-type> </wlevs:event-type-repository> <!-- Adapter can be created from a local class, without having to go through a adapter factory --> <wlevs:adapter id="helloworldAdapter" class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" > <wlevs:instance-property name="message" value="HelloWorld - the current time is:"/> </wlevs:adapter> <wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" > <wlevs:listener ref="helloworldProcessor"/> <wlevs:source ref="helloworldAdapter"/> </wlevs:channel> <!-- The default processor for OCEP 11.0.0.0 is CQL --> <wlevs:processor id="helloworldProcessor" provider="epl" /> <wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true"> <wlevs:listener> <bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/> </wlevs:listener> <wlevs:source ref="helloworldProcessor"/> </wlevs:channel></beans>