この章では、Oracle Event Processingのインストールによって提供されるサンプル・コードを紹介し、コードの設定方法および使用方法を説明します。Oracle Event Processingは、サンプル・チェック・ボックスをチェックしてインストールする必要があります。
この章の構成は、次のとおりです。
サンプルを含めたインストールを選択すると、Oracle Event Processingは次のサンプルとともにインストールされます。
HelloWorld: Oracle Event Processingアプリケーションの基本的なスケルトンを提供します。
Oracle CQL: Oracle Event Processingビジュアライザの問合せウィザードを使用してイベント・ストリームを処理するOracle CQL問合せを構築する方法を示します。
Oracle Spatial: Oracle SpatialをOracle CQL問合せとともに使用してGlobal Positioning System (GPS)イベントのストリームを処理する方法を示します。GPSイベントはバスの位置を追跡し、バスがバス停の位置に到着するとアラートを生成します。
外国為替(FX): 複数のコンポーネントが含まれています。
シグナル生成: 市場取引およびトレンド検出をシミュレートします。
イベントの記録および再生: 永続イベント・ストアを使用したイベントの記録および再生の構成方法を示します。
これらのサンプルは、次の2つの形式で提供されます。
サンプルは開発ツールとしてAntを使用します。Antの詳細およびコンピュータへのインストールについては、http://ant.apache.org/を参照してください。
Oracle Event Processingのインストール・ディレクトリは、/Oracle/Middleware/my_oep/とします。
すぐに実行できるサンプルには、アセンブルしたアプリケーションをデプロイするために事前構成されたドメインがあります。各ドメインはスタンドアロン・サーバー・ドメインで、サーバー・ファイルはドメイン・ディレクトリのdefaultserverサブディレクトリにあります。アプリケーションをデプロイするには、ドメインのデフォルト・サーバーを起動します。
サンプルのHelloWorldドメインは、/Oracle/Middleware/my_oep/oep/examples/domains/helloworld_domainにあります。
詳細は、「helloworldドメインからのHelloWorldサンプルの実行」を参照してください。
サンプルCQLドメインは、/Oracle/Middleware/my_oep/oep/examples/domains/cql_domainにあります。
詳細は、「CQLサンプルの実行」を参照してください。
サンプルのOracle Spatialドメインは、/Oracle/Middleware/my_oep/oep/examples/domains/spatial_domainにあります。
詳細は、「Oracle Spatialサンプルの実行」を参照してください。
サンプルの外国為替ドメインは、/Oracle/Middleware/my_oep/oep/examples/domains/fx_domainにあります。
詳細は、「外国為替サンプルの実行」を参照してください。
サンプルのシグナル生成ドメインは、/Oracle/Middleware/my_oep/ oep/examples/domains/signalgeneration_domainにあります。
詳細は、「シグナル生成サンプルの実行」を参照してください。
サンプルの記録および再生ドメインは、/Oracle/Middleware/my_oep/oep/examples/domains/recplay_domainにあります。
詳細は、「イベントの記録/再生サンプルの実行」を参照してください。
各サンプルのJavaソースと構成XMLソースは、サンプルの開発環境を示す個別のソース・ディレクトリで提供されます。
HelloWorldソース・ディレクトリは/Oracle/Middleware/my_oep/oep/examples/source/applications/helloworldにあります。
詳細は、「HelloWorldのサンプルの実装」を参照してください。
CQLソース・ディレクトリは/Oracle/Middleware/my_oep/oep/examples/source/applications/cqlにあります。
詳細は、「CQLのサンプルの実装」を参照してください。
Oracle Spatialソース・ディレクトリは/Oracle/Middleware/my_oep/oep/examples/source/applications/spatialにあります。
詳細は、「Oracle Spatialサンプルの実装」を参照してください。
外国為替ソース・ディレクトリは/Oracle/Middleware/my_oep/oep/examples/source/applications/fxにあります。
詳細は、「外国為替取引のサンプルの実装」を参照してください。
シグナル生成ソース・ディレクトリは/Oracle/Middleware/my_oep/oep/examples/source/applications/signalgenerationにあります。
詳細は、「シグナル生成サンプルの実装」を参照してください。
記録および再生ソース・ディレクトリは/Oracle/Middleware/my_oep/ oep/examples/source/applications/recplayにあります。
詳細は、「記録および再生サンプルの実装」を参照してください。
サンプルを実行するには、JDK7_u55以上の開発環境がインストールされている必要があります。JAVA_HOMEは次のように設定する必要があります。
export JAVA_HOME=< path to installation directory >
export PATH=${JAVA_HOME}/bin:${PATH}
サンプル・ソースをビルドおよび実行するには、開発環境にAntをインストールする必要があります。ANT_HOMEは次のように設定する必要があります。
export ANT_HOME=<path to Ant directory>
export PATH=${ANT_HOME}/bin:${PATH}
Oracle Event Processingビジュアライザは、Oracle Event Processingのデータを使用するWeb 2.0アプリケーションで、そのデータを便利で直観的な形でシステム管理者やオペレータに表示します。また、特定のタスクでは、受け取ったデータは構成を変更するためにOracle Event Processingに戻されます。
ビジュアライザ自体はOracle Event Processingアプリケーションで、各サーバー・インスタンスに自動的にデプロイされます。サンプルでそれを使用するには、次の各サンプルに示されている手順に従ってサーバーを起動済であることを確認し、ブラウザで次のURLを起動します。
http://host:9002/wlevs
ここで、hostはOracle Event Processingをホストしているコンピュータの名前です。ブラウザが同じコンピュータで実行されている場合、localhostを使用できます。
HelloWorldアプリケーションではセキュリティは無効になっているため、ログイン画面でユーザー名およびパスワードを入力せずに「ログオン」をクリックできます。FXおよびシグナル生成サンプルでは、セキュリティが有効になっているため、ログインに次のユーザー名およびパスワードを使用します。
Username: oepadmin Password: welcome1
Oracle Event Processingビジュアライザの詳細は、ビジュアライザを使用したタスクの実行を参照してください。
Oracle Event Processingを大量のメモリーがあるコンピュータで実行する場合は、ロード・ジェネレータおよびサーバー・ヒープ・サイズをコンピュータのサイズに応じて適切に設定します。
十分なメモリがあるコンピュータでは、サーバー用に1GB、ロード・ジェネレータ用に512MBから1GBのヒープ・サイズを推奨します。
HelloWorldサンプルでは、一般的なOracle Event Processingアプリケーションの作成方法を示します。
図6-1に、HelloWorldサンプルのイベント処理ネットワーク(EPN)を示します。EPNにはアプリケーションを構成するコンポーネントが含まれ、その組合せが定義されています。
このサンプルには次のコンポーネントが含まれています。
helloworldAdapter: 毎秒Hello World メッセージを生成するコンポーネントです。実社会のシナリオでは、このコンポーネントは一般的に金融機関からのデータ・フィードなどのデータのストリームをソースから読み取り、それをOracle CQLプロセッサが理解できるイベントのストリームに変換します。HelloWorldアプリケーションには、HelloWorldAdapterのインスタンスを作成するHelloWorldAdapterFactoryも含まれています。
helloworldInputChannel: アダプタによって生成されるイベント(この場合はHello Worldメッセージ)をOracle CQLプロセッサにストリームするコンポーネントです。
helloworldProcessor: helloworldAdapterコンポーネントからのメッセージを、ビジネス・ロジックを含むPlain Old Java Object (POJO)に転送するコンポーネントです。実社会のシナリオでは、一般的にこのコンポーネントは、プロパティ値に基づいたイベントのサブセットの選択、イベントのグループ化など、Oracle CQLを使用したストリームからのイベントの多くの追加される可能性のある処理を実行します。
helloworldOutputChannel: Oracle CQLプロセッサによって処理されるイベントをユーザー定義ビジネス・ロジックが含まれるPOJOにストリームするコンポーネントです。
helloworldBean: 出力チャネルを通してOracle CQLプロセッサからひとまとまりのメッセージを受信するたびにメッセージを表示するPOJOコンポーネントです。実社会のシナリオでは、このコンポーネントは、Oracle CQLプロセッサからの一連のイベントについてのレポートの実行、適切な電子メールやアラートの送信などのアプリケーションのビジネス・ロジックを含みます。
HelloWorldアプリケーションはhelloworldドメインにあらかじめデプロイされています。アプリケーションを実行するには、Oracle Event Processingサーバーのインスタンスを起動します。
HelloWorldサンプルのhelloworldドメインからの実行:
コマンド・ウィンドウを開き、インストールの/Oracle/Middleware/my_oep/oep/examples/domains/helloworld_domain/defaultserverにあるhelloworldドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なサーバー起動スクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
サーバーの起動後、毎秒出力に次のメッセージが表示されます。
Message: HelloWorld - the current time is: 3:56:57 PM
このメッセージは、HelloWorldのサンプルが正しく実行されていることを示しています。
HelloWorldサンプル・ソース・ディレクトリには、JavaソースおよびHelloWorldアプリケーションを構成する構成XMLファイルなどの他の必要なリソースが含まれています。build.xml Antファイルには、アプリケーションをビルドしてhelloworldドメインにデプロイするためのターゲットが含まれています。
「Hello WorldをビルドするAntターゲットの説明」も参照してください。
HelloWorldサンプルのソース・ディレクトリからのビルドおよびデプロイ:
出力先に約1秒ごとに次のメッセージが出力されます。
Message: HelloWorld - the current time is: 3:56:57 PM
このメッセージは、HelloWorldのサンプルが再デプロイされ、正しく実行されていることを示しています。
HelloWorldソース・ディレクトリの最上位レベルにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットは、クリーン、コンパイルを行い、アプリケーションをcom.bea.wlevs.example.helloworld_12.1.3.0_0.jarという名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
HelloWorldサンプルは比較的単純なため、Oracle Event Processingアプリケーションの通常の作成手順で説明されているすべてのコンポーネントおよび構成ファイルは使用しません。
すべてのサンプル・ファイルは、/Oracle/Middleware/my_oep/examples/source/applications/helloworldディレクトリに対する相対位置にあります。
HelloWorldのサンプルで使用するファイルは次のとおりです。
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。EPNアセンブリ・ファイルは標準のSpringコンテキスト・ファイルを拡張します。また、このファイルはアプリケーションで使用されるイベント・タイプを登録します。Oracle Event Processingアプリケーションには、このXMLファイルを含める必要があります。
サンプルでは、このファイルはcom.bea.wlevs.example.helloworld-context.xmlという名前で、~/META-INF/springディレクトリにあります。
helloworldAdapterコンポーネントのJavaソース・ファイル。
サンプルでは、このファイルはHelloWorldAdapter.javaという名前で、~/src/com/bea/wlevs/adapter/examples/helloworldディレクトリにあります。
HelloWorldEventイベント・タイプを記述したJavaソース・ファイル。
サンプルでは、このファイルはHelloWorldEvent.javaという名前で、~/src/com/bea/wlevs/event/examples/helloworldディレクトリにあります。
このファイルの詳しい説明および一般的なイベント・タイプのプログラミングについての情報は、『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』のイベント・タイプの定義および使用に関する項を参照してください。
helloworldProcessorおよびhelloworldOutputChannelコンポーネントを構成するXMLファイル。このファイルの重要な部分は、HelloWorldアプリケーションが処理する一連のイベントを選択する一連のOracle CQLルールです。アダプタおよびチャネル構成はオプションですが、Oracle CQLプロセッサ構成ファイルはOracle Event Processingアプリケーションに含める必要があります。
サンプルでは、このファイルはconfig.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
アプリケーションのhelloworldBeanコンポーネント(ビジネス・ロジックを含むPOJO)を実装するJavaファイル。
サンプルでは、このファイルはHelloWorldBean.javaという名前で、~/src/com/bea/wlevs/examples/helloworldディレクトリにあります。
Oracle Event ProcessingにデプロイするOSGiバンドルの内容を記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。
HelloWorldサンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの説明は「ソース・ディレクトリからのHelloWorldサンプルのビルドおよびデプロイ」を参照してください。
Oracle Continuous Query Language (Oracle CQL)のサンプルでは、Oracle Event Processingビジュアライザの問合せウィザードを使用して様々なタイプのOracle CQL問合せを構築する方法を示します。
図6-2にCQLサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
注意:
このサンプルは、同じデフォルト・マルチキャスト・アドレスおよびポート番号を持つ複数のCoherenceクラスタ構成では起動しない可能性があります。エラー・メッセージには次のようなメッセージが含まれます。 ... has been attempting to join the cluster at address /239.255.0.1:9100 with TTL 4 for 30 seconds without success
この問題を回避するには、一意のアドレスおよびポートを指定して個別にクラスタを作成します。
アプリケーションは、EPNに2つの別のイベント・パスを含んでいます。
欠落イベント: このイベント・パスは、チャネルorderChannelに接続するアダプタorderCVSAdapterで構成されています。orderChannel、orderProcessor、alertChannelチャネル、alertOutputアダプタの順に接続されています。
このイベント・パスは、顧客注文ワークフローの欠落イベントを検出するために使用されます。
cqlProcプロセッサが実行する問合せの構築方法の詳細は、「不足イベントの問合せの作成」を参照してください。
移動平均: このイベント・パスは、stockChannelチャネル、stockProcessorプロセッサ、movingAvgChannelチャネル、およびmovingOutputアダプタで構成され、この順に接続されています。
このイベント・パスは、数が1000を超える在庫の移動平均を計算するために使用されます。
キャッシュ: このイベント・パスは、順に接続されているアダプタadapter、チャネルS1、Oracle CQLプロセッサcacheProcessor、チャネルS2、Bean Beanで構成されます。キャッシュstockCacheもあり、Oracle CQLプロセッサcacheProcessorに接続しています。また、Bean Loaderもあります。
このイベント・パスは、Oracle CQL問合せのキャッシュの情報にアクセスするために使用されます。
注意:
EPNの様々なコンポーネントの詳細は、このマニュアルの他のサンプルを参照してください。
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
CQLアプリケーションはcql_domainドメインにあらかじめデプロイされています。アプリケーションを実行するには、単にOracle Event Processingサーバーのインスタンスを起動します。
CQLのサンプルを実行するには:
コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/cql_domain/defaultserverにあるCQLドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なスクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
これで、CQLアプリケーションでデータ・フィードからデータを受信する準備ができました。
不足イベント問合せ用のデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。
/Oracle/Middleware/my_oep/oep/utils/load-generatorに移動します。
orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。
Windowsの場合:
prompt> runloadgen.cmd orderData.prop
UNIXの場合:
prompt> ./runloadgen.sh orderData.prop
/Oracle/Middleware/my_oep/oep/utils/load-generatorに移動します。
移動平均問合せ用のデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。
StockData.propプロパティ・ファイルを使用して、ロード・ジェネレータを実行します。
Windowsの場合:
prompt> runloadgen.cmd StockData.prop
UNIXの場合:
prompt> ./runloadgen.sh StockData.prop
キャッシュの問合せのデータ・フィードをシミュレートするには、ただサンプルを実行します。
ロード・データがAdaptor.javaによって生成され、キャッシュ・データがLoader.javaによって生成されます。Oracle Event Processingビジュアライザの問合せ計画の統計をオンにすることによって、そのデータが流れることを検証できます。
CQLサンプルのソース・ディレクトリには、Javaソースと、CQLアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。「Hello WorldをビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびcql_domainドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからCQLのサンプルをビルドしてデプロイするには:
CQLソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.cql_12.1.2.0_0.jarという名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
ここでは、CQLのサンプルで使用される問合せの作成方法を説明します。
この項では、不足イベントを検出するためにcqlProcが実行するOracle CQLパターン・マッチング問合せをOracle Event Processing Visualizerの問合せウィザードを使用して作成する方法について説明します。
顧客注文ワークフロー・イベントがOracle Event Processingシステムに流れる顧客注文ワークフローについて考えてみます。
有効なシナリオでは、表6-1にリストされた順番でイベントが発生します。
表6-1 有効な注文ワークフロー
| イベント・タイプ | 説明 |
|---|---|
|
顧客注文 |
|
承認 |
|
出荷 |
ただし、表6-2に示すように、承認イベントなしに注文が出荷されるとエラーとなります。
表6-2 無効な注文ワークフロー
| イベント・タイプ | 説明 |
|---|---|
|
顧客注文 |
|
出荷 |
承認イベントの欠落を検出してアラート・イベントを生成する問合せを作成してテストします。
不足イベントの問合せの作成:
CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。
ブラウザで以下のURLを起動します。
http://host:port/wlevs
hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。
「ログオン」画面が表示されます。
「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。
右パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。
cqlノードを選択します。
CQLアプリケーション画面が表示されます。
「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。
Oracle CQLプロセッサorderProcessorのアイコンをダブルクリックします。
Oracle CQLプロセッサ画面が表示されます。
「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。
Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。
この手順では、テンプレートからOracle CQL問合せを作成します。
「テンプレート」タブを選択します。
「テンプレート」タブが表示されます。
「パターン一致」テンプレートをクリックして「テンプレート」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
SSourceのアイコンをダブルクリックします。
SSource構成画面が表示されます。
問合せのソースは、orderChannelストリームです。
SSourceを次のように構成します。
「タイプ」として「ストリーム」を選択します。
「ソースの選択」プルダウン・メニューでorderChannelを選択します。
「保存」をクリックします。
「問合せの保存」をクリックします。
「パターン」アイコンをダブルクリックします。
「パターン」構成画面が表示されます。
「パターン」タブを使用して、欠落イベントの発生と一致するパターン式を定義します。この式は、後の手順で「定義」タブに指定する名前付き条件を使用して作成します。
「パターン式」フィールドに次の式を入力します。
CustOrder NoApproval*? Shipment
このパターンは、表6-3にリストされているOracle CQLパターン数量子を使用します。パターン量指定子を使用して、パターン一致が許可される範囲を指定します。1文字パターン数量子は最大限、すなわち「グリーディ」です。これは、まず最大限にマッチングを行います。2文字パターン数量子は最小限、すなわち「リラクタント」です。これは、まず最小限のマッチングを行います。
表6-3 MATCH_RECOGNIZEパターン数量子
| 最大 | 最小 | 説明 |
|---|---|---|
|
|
0回以上 |
|
|
1回以上。 |
|
|
0回または1回。 |
「パーティション基準」プルダウン・メニューからorderidを選択し、プラス記号ボタンをクリックしてこのプロパティをPARTITION BY句に追加します。
これで、Oracle Event Processingが各注文について欠落イベントの問合せを検証するようになります。
別名フィールドにOrdersと入力します。
これで、パターンの別名(Orders)が割り当てられ、後から問合せで使用するときに便利です。
「定義」タブをクリックします。
「定義」タブが表示されます。
これで、パターン句で名前が付けられた各条件を表6-4に示されているように定義できます。
表6-4 条件定義
| 条件名 | 定義 |
|---|---|
|
|
|
|
|
|
「オブジェクト名」フィールドにCustOrderと入力します。
「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。
「変数」リストでeventTypeをダブルクリックします。
「オペランド」リストで=をダブルクリックします。
=オペランドの後に値'C'を入力します。
「保存」をクリックします。
プラス記号ボタンをクリックします。
次のように、条件定義がオブジェクト・リストに追加されます。
「オブジェクト名」フィールドにNoApprovalと入力します。
「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。
「変数」リストでeventTypeをダブルクリックします。
「オペランド」リストで=をダブルクリックします。
=オペランドの後に値'A'を入力します。
式をカッコで囲みます。
式の先頭のカッコの外側にカーソルを置きます。
「オペランド」リストでNOTをダブルクリックします。
「保存」をクリックします。
プラス記号ボタンをクリックします。
条件定義がオブジェクト・リストに追加されます。
「オブジェクト名」フィールドにShipmentと入力します。
「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。
「変数」リストでeventTypeをダブルクリックします。
「オペランド」リストで=をダブルクリックします。
=オペランドの後に値'S'を入力します。
「保存」をクリックします。
プラス記号ボタンをクリックします。
「定義」タブが表示されます。
「メジャー」タブをクリックします。
「メジャー」タブが表示されます。
「メジャー」タブを使用して、MATCH_RECOGNIZE条件に式を定義し、DEFINE句の条件と一致するストリーム要素を問合せのselect文に指定する引数にバインドします。
「メジャー」タブを使用して次のように指定します。
CustOrder.orderid AS orderid
CustOrder.amount AS amount
「オブジェクト名」フィールドにorderidと入力します。
「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。
「変数」リストでCustOrder.orderidをダブルクリックします。
「保存」をクリックします。
プラス記号ボタンをクリックします。
「オブジェクト名」フィールドにamountと入力します。
「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。
「変数」リストでCustOrder.amountをダブルクリックします。
「保存」をクリックします。
プラス記号ボタンをクリックします。
「メジャー」タブが表示されます。
「保存」をクリックします。
選択アイコンをダブルクリックします。
次のように、「SELECT」構成画面が表示されます。
「プロジェクト」タブを次のように構成します。
イベント・タイプの選択または入力プルダウン・メニューからAlertEventを選択します。
「ソースの選択」プルダウン・メニューでOrdersを選択します。
「プロパティ」リストのorderidをダブルクリックし、別名の選択または入力プルダウン・メニューからorderidを選択します。
プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。
「プロパティ」リストのamountをダブルクリックし、別名の選択または入力プルダウン・メニューからamountを選択します。
プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。
「プロジェクト式」フィールドをクリックして値"Error - Missing Approval"を入力し、別名の選択または入力プルダウン・メニューからalertTypeを選択します。
プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。
「プロジェクト」タブが表示されます。
「保存」をクリックします。
「問合せの保存」をクリックします。
「出力」アイコンをダブルクリックします。
「出力」構成画面が表示されます。
出力を次のように構成します。
「問合せ」を選択します。
「問合せ名」としてTrackingと入力します。
「ルールのインジェクト」をクリックします。
「ルールのインジェクト」の「確認」ダイアログが表示されます。
「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。
「保存」をクリックします。
「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。
「問合せ」ラジオ・ボタンをクリックします。
Tracking問合せが存在していることを確認します。
不足イベントの問合せのテスト:
データ・フィードをシミュレートするために、/Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。
orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。
Windowsの場合:
prompt> runloadgen.cmd orderData.prop
UNIXの場合:
prompt> ./runloadgen.sh orderData.prop
Oracle Event Processing Visualizerの上部パネルで、ViewStreamボタンをクリックします。
「ストリーム・ビジュアライザ」画面が表示されます。
「クライアントの初期化」をクリックします。
「登録」タブをクリックします。
オーダー警告ラジオ・ボタンを選択します。
「サブスクライブ」をクリックします。
欠落イベントが検出されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたAlertEventsが表示されます。
ここでは、Oracle Event Processing Visualizer問合せウィザードを使用して、stockProcプロセッサが実行するOracle CQLの移動平均問合せを作成する方法を説明します。
これは2段階で行います。
まず、移動平均問合せのソースとして使用するビュー(Oracle CQLにおける副問合せ)を作成します。
移動平均の問合せのビュー・ソースの作成を参照してください。
次に、ソース・ビューを使用する移動平均問合せを作成します。
ビュー・ソースを使用した移動平均の問合せの作成を参照してください。
最後に、移動平均問合せをテストします。
移動平均の問合せのテストを参照してください。
移動平均の問合せのビュー・ソースの作成:
CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。
ブラウザで以下のURLを起動します。
http://host:port/wlevs
hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。
「ログオン」画面が表示されます。
「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。
右パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。
cqlノードを選択します。
CQLアプリケーション画面が表示されます。
「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。
Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
図6-3のOracle CQLプロセッサ画面が表示されます。
「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。
Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。
この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。
SSourceアイコン(ストリーム・ソース)をクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。
ビューのソースはstockChannelストリームになります。このストリームから、数が1000を超える在庫イベントを選択します。これが移動平均問合せのソースになります。
SSourceを次のように構成します。
「タイプ」として「ストリーム」を選択します。
ビューのソースはstockChannelストリームになります。
「ソースの選択」プルダウン・メニューでstockChannelを選択します。
別名StockVolGt1000を「AS」フィールドに入力します。
「保存」をクリックします。
「問合せの保存」をクリックします。
プロンプトが表示されたら、「問合せID」フィールドにStockVolGt1000と入力します。
「保存」をクリックします。
次は、Oracle CQLフィルタを追加します。
次のように、「フィルタ」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
次のように、SSourceアイコンをクリックして「ウィンドウ」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
「フィルタ」アイコンをダブルクリックします。
「フィルタ」構成画面が表示されます。
「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。
次のように式ビルダーを構成します。
「イベント・タイプの選択」プルダウン・メニューからStockVolGt100を選択し、この式で使用できる変数を定義します。
volume変数をダブルクリックして、「式ビルダー」フィールドに追加します。
「オペランド」リストの>をダブルクリックして、「式ビルダー」フィールドに追加します。
>オペランドの後に値1000を入力します。
「保存」をクリックします。
「フィルタの追加」をクリックします。
次のように、問合せウィザードによって式が「生成されたCQL文」に追加されます。
「保存」をクリックします。
「問合せの保存」をクリックします。
次は、select文を追加します。
次のように、「SELECT」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
「フィルタ」アイコンをクリックして「SELECT」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
選択アイコンをダブルクリックします。
選択の構成画面が表示されます。
price、symbolおよびvolumeをStockVolGt1000ストリームから選択します。
選択を次のように構成します。
「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。
priceプロパティを選択し、プラス記号ボタンをクリックします。
問合せウィザードによって、プロパティが「生成されたCQL文」に追加されます。
symbolプロパティとvolumeプロパティについても繰り返します。
「SELECT」構成ダイアログが表示されます。
「保存」をクリックします。
「問合せの保存」をクリックします。
最後に出力を追加します。
次のように、「出力」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
「SELECT」アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。
出力を次のように構成します。
「ビュー」を選択します。
「ビュー名」にStockVolGt1000を構成します。
「スキーマの表示」フィールドの内容を削除します。
Oracle Event Processingサーバーによってビュー・スキーマが定義されます。
「ルールのインジェクト」をクリックします。
次のように、「ルールのインジェクト」の「確認」ダイアログが表示されます。
「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。
「保存」をクリックします。
「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。
「ビュー」ラジオ・ボタンをクリックします。
StockVolGt1000ビューが存在していることを確認します。
ビュー・ソースを使用した移動平均の問合せの作成:
CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。
ブラウザで以下のURLを起動します。
http://host:port/wlevs
hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。
「ログオン」画面が表示されます。
「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。
左パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。
cqlステージを選択します。
CQLアプリケーション画面が表示されます。
「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。
Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
Oracle CQLプロセッサ画面が表示されます。
「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。このOracle CQLプロセッサ用の問合せを,最近作成または編集している場合、その問合せが問合せウィザードのキャンバスに表示されている場合があります。それ以外の場合、キャンバスは空白になります。
Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。
この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。
次のように、SSourceアイコン(ストリーム・ソース)をクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。
SSourceのダイアログを次のように構成します。
「タイプ」として「ビュー」を選択します。
「ソースの選択」プルダウン・メニューでStockVolGt1000ビューを選択します。
「保存」をクリックします。
「問合せの保存」をクリックします。
次のように、「ウィンドウ」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
SSourceアイコンをクリックして「ウィンドウ」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
ウィンドウアイコンをダブルクリックします。
SSourceの構成画面が表示されます。
symbolをパーティションとして、最後の2つのイベントに対するスライディング・ウィンドウを作成します。
枠のダイアログを次のように構成します。
「ソース・プロパティ・リスト」でsymbolを選択して、パーティション・リストに追加します。
「タイプ」として「パーティション」を選択します。
「行ベース」を選択し、「行ベース」フィールドに2を入力します。
「ウィンドウの追加」をクリックします。
次のように、問合せウィザードによってスライディング・ウィンドウが「生成されたCQL文」に追加されます。
「保存」をクリックします。
「問合せの保存」をクリックします。
次のように、「SELECT」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
「ウィンドウ」アイコンをクリックして「SELECT」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
選択アイコンをダブルクリックします。
選択の構成画面が表示されます。
「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。
以前作成したこのビューが移動平均の問合せのソースとなります(「移動平均の問合せのビュー・ソースの作成」を参照してください)。
ターゲット・イベント・タイププルダウン・メニューからMovingAvgEventを選択します。
これは、移動平均問合せによって生成される出力イベントです。ソース・イベントからこの出力イベントにプロパティをマップします。
「ソースのプロパティ」リストからsymbolを選択します。
次のように、選択したソース・プロパティが「プロジェクト式」に追加されます。
このケースでは、ソース・プロパティsymbolを出力イベント・プロパティsymbolにそのままマップします。
「AS」フィールドの隣のプルダウン・メニューをクリックし、symbolを選択します。
プラス記号ボタンをクリックします。
次のように、ソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。
「ソースのプロパティ」リストからpriceを選択します。
次のように、選択したソース・プロパティが「プロジェクト式」に追加されます。
このケースでは、ソース・プロパティpriceを処理した後で出力イベントにマップします。
「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。
「関数タイプの選択」プルダウン・メニューで「集計関数」を選択します。
Oracle CQLで提供される集計関数のリストが表示されます。AVG関数を使用します。
「式ビルダー」フィールドでStockVolGt1000.priceを選択します。
AVG関数をダブルクリックします。
次のように、「式ビルダー」フィールドで選択した内容がAVG()関数で囲まれます。
「保存」をクリックします。
次のように、式が「プロジェクト式」フィールドに追加されます。
「AS」フィールドの隣のプルダウン・メニューをクリックし、movingAvgPriceを選択します。
プラス記号ボタンをクリックします。
次のように、ソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。
「検証」をクリックします。
次のように、検証エラーダイアログが表示されます。
パーティションを使用しているため、GROUP BY句を指定する必要があります。
「グループ」タブを選択します。
「グループ」タブが表示されます。
「グループ」タブを次のように構成します。
「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。
「プロパティ」リストからsymbolを選択します。
プラス記号ボタンをクリックします。
次のように、symbolプロパティがGROUP BY句に追加されます。
「保存」をクリックします。
「問合せの保存」をクリックします。
次は、問合せを出力に結び付けます。
次のように、「出力」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。
「SELECT」アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。
「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。
出力を次のように構成します。
「問合せ」を選択します。
「問合せ名」としてMovingAverageと入力します。
「ルールのインジェクト」をクリックします。
「ルールのインジェクト」の「確認」ダイアログが表示されます。
「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。
「保存」をクリックします。
「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。
「問合せ」ラジオ・ボタンをクリックします。
MovingAverage問合せが存在していることを確認します。
移動平均の問合せのテスト:
移動平均の問合せのデータ・フィードをシミュレートするために、/Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。
stockData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。
Windowsの場合:
prompt> runloadgen.cmd stockData.prop
UNIXの場合:
prompt> ./runloadgen.sh stockData.prop
Oracle Event Processing Visualizerの上部パネルで、ViewStreamボタンをクリックします。
「ストリーム・ビジュアライザ」画面が表示されます。
「クライアントの初期化」をクリックします。
「クライアントの初期化」フィールドに/stockmovingと入力します。
「サブスクライブ」をクリックします。
移動平均問合せによってイベントが出力されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたイベントが表示されます。
このサンプルは、Oracle Spatialの使用方法を示すもので、Oracle CQL問合せで全地球測位システム(GPS)のイベント・ストリームを処理してバスのGPS位置を追跡し、バスが事前に定義されたバス停の位置に到着するとアラートを生成します。
図6-4にOracle Spatialサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
このサンプルには次のコンポーネントが含まれています。
BusPositionGen: バスの位置に関するGPSイベントの入力ストリームをシミュレートするコンポーネントです。Oracle Event Processing loadgenユーティリティおよびcsvgenアダプタ・プロバイダを使用してカンマ区切り値(CSV)を読み取り、それをBusPosイベントとしてEPNに配信します。
BusStopAdapter: /Oracle/Middleware/my_oep/examples/domains/spatial_domain/defaultserver/applications/spatial_sample/bus_stops.csvに基づいてバス停の位置を生成するカスタム・アダプタ・コンポーネントです。
BusPosStream: BusPosイベントをストリームとしてProcessorに転送するコンポーネントです。
BusStopRelation: BusPosイベントをリレーションとしてProcessorに転送するコンポーネントです。
Processor: 着信するBusPosイベントに対してOracle CQL問合せを実行するコンポーネントです。
BusStopChannel、BusPosChannelおよびBusStopArrivalChannel: Processorコンポーネントからの様々な問合せの結果を適切なアウトバウンド・アダプタまたは出力Beanに転送する様々なセレクタを指定するコンポーネントです。
BusStopPub、BusPosPubおよびBusStopArrivalPub: Processorコンポーネントの問合せの結果をパブリッシュするコンポーネントです。
BusStopArrivalOutputBean: 挿入、削除および更新の各イベントに対するメッセージをログに記録するPOJOイベントBeanコンポーネントで、BusStopArrivalChannelが提供するリレーションの視覚化を補助します。
データ・カートリッジの詳細は、『Oracle Fusion Middleware Oracle Event Processing Oracle CQL言語リファレンス』を参照してください。
Oracle Spatialアプリケーションはspatial_domainドメインにあらかじめデプロイされています。アプリケーションを実行するには、単にOracle Event Processingサーバーのインスタンスを起動します。
Oracle Spatialサンプルのspatial_domainドメインからの実行:
コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/spatial_domain/defaultserverにあるOracle Spatialサンプル・ドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なスクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
コンソール・ログに次のように表示されるまで待機します。
<Mar 4, 2010 2:13:15 PM EST> <Notice> <Spring> <BEA-2047000> <The application context for "spatial_sample" was started successfully> <Mar 4, 2010 2:13:15 PM EST> <Notice> <Server> <BEA-2046000> <Server STARTED>
このメッセージは、Oracle Spatialサンプルが正しく実行されていることを示しています。
Oracle Spatialサンプルを実行しているホストでブラウザを起動し、http://localhost:9002/bus/web/main.htmlに移動します。
注意:
あるホストでこのサンプルを実行し、別のホストからブラウズすることはできません。これはサンプルが使用するGoogle API Keyの制限で、Oracle Event Processingの制限ではありません。
Oracle SpatialサンプルのWebページが表示されます。
バス停への到着タブをクリックすると、次のようなバス停への到着を参照できます。
次の手順に従ってOracle Event Processingロード・ジェネレータを実行し、サンプル・データを生成します。
コマンド・プロンプトを開き、/Oracle/Middleware/my_oep/utils/load-generatorに移動します。
Windowsでは次のように入力します。
runloadgen.cmd bus_positions.prop
UNIXでは次のように入力します。
./runloadgen.sh bus_positions.prop
次のようにバスが移動し、ブラウザにアラートが表示されることを確認します。
Oracle Spatialサンプルのソース・ディレクトリには、Javaソースと、Oracle Spatialアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてspatial_domainドメインにデプロイするためのターゲットが含まれています。
詳細は、「Hello WorldをビルドするAntターゲットの説明」を参照してください。
Oracle Spatialサンプルのソース・ディレクトリからのビルドおよびデプロイ:
Oracle Spatialのソース・ディレクトリの最上位レベルにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.spatial_12.1.2.0_0.jarという名前のJARファイルに出力し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
すべてのOracle Spatialサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/spatialディレクトリに対する相対位置にあります。
Oracle Spatialサンプルで使用されるファイルは次のとおりです。
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。Oracle Event Processingアプリケーションには、このXMLファイルを含める必要があります。
サンプルでは、このファイルはcontext.xmlという名前で、~/META-INF/springディレクトリにあります。
アプリケーションのプロセッサ・コンポーネントなど、EPNの様々なコンポーネントを構成するコンポーネント構成ファイル。
サンプルでは、このファイルはconfig.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
次のコンポーネントを実装するJavaファイル
BusStopAdapter: /Oracle/Middleware/my_oep/examples/domains/spatial_domain/defaultserver/applications/spatial_sample/bus_stops.csvに基づいてバス停の位置を生成するカスタム・アダプタ・コンポーネントです。
OutputBean:挿入、削除および更新の各イベントのメッセージを記録するPOJOイベントBeanコンポーネント。BusStopArrivalChannelで提供されるリレーションの視覚化に役立ちます。
OrdsHelper: JGeometryからDouble値のListとして縦座標を返すメソッドgetOrdsを提供するヘルパー・クラス。
これらのJavaファイルは、~/source/applications/spatial/src/com/oracle/cep/sample/spatialディレクトリにあります。
このPOJOが参照するOracle Event Processing APIの追加情報は、Oracle Event Processing Java APIリファレンスを参照してください。
Oracle Event ProcessingにデプロイするOSGiバンドルの内容を記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。
Oracle Spatialサンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの説明は「Oracle Spatialサンプルのビルドおよびデプロイ」を参照してください。
外国為替サンプル(省略してFX)は、複数のデータ・フィードからの情報を処理する複数のOracle CQLプロセッサが含まれているため、HelloWorldサンプルよりも複雑なサンプルとなっています。サンプルでは、Oracle Event Processingロード・ジェネレータ・ユーティリティを使用してデータ・フィードをシミュレートします。
図6-5にFXサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
このシナリオでは、ロード・ジェネレータを使用してシミュレートした3つのデータ・フィードにより、世界各地から定数の値のペアが送信されます。値のペアは通貨を組み合せたもので、たとえばUSDEURは米ドルと欧州ユーロの組合せを表します。値のペアと共に2つの通貨間の為替レートも送信されます。fxMarketAmer、fxMarketAsiaおよびfxMarketEuroの各アダプタはフィードからデータを受信し、受信したデータをイベントに変換して、対応するFilterAmer、FilterAsiaおよびFilterEuroの各プロセッサに渡します。各Oracle CQLプロセッサは初期失効チェックを実行して1秒前より昔のイベントがないことを確認し、次の境界チェックを実行して2つの通貨の為替レートが現在の境界内であることを確認します。また、Oracle CQLプロセッサは特定のチャネルからの特定の通貨ペアのみを選択します。たとえば、サーバーはシミュレートされたアメリカのデータ・フィードからのUSDEURを選択しますが、USDAUD (オーストラリア・ドル)などの他のペアはすべて拒否します。
各データ・フィード・プロバイダからのデータがこの初期準備フェーズを通過すると、FindCrossRatesという別のOracle CQLプロセッサがすべてのプロバイダについてのすべてのイベントを結合し、最大および最小レートの中間値を計算した後、トレーダーが指定するスプレッドを適用します。最後に、Oracle CQLプロセッサは、レートをビジネス・コードが含まれるPOJOに転送します。この例では、POJOは単にレートをクライアントにパブリッシュします。
Oracle Event Processingモニターは、30秒の期間内に更新されたレートがないなどといった最終ステップのイベントの待機時間があるしきい値を超えた場合や、ある通貨ペアで2つの連続するレートの分散が大きすぎる場合を監視するために構成されています。最後に、各通貨ペアの直近のレートがOracle Event Processing httpパブリッシュ/サブスクライブ・サーバーに転送されます。
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
外国為替取引(FX)アプリケーションはfx_domainドメインにあらかじめデプロイされています。アプリケーションを実行するには、単にOracle Event Processingサーバーのインスタンスを起動します。
外国為替サンプルの実行:
コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/fx_domain/defaultserverにあるFXドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なスクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
要求されたら、「ユーザー名」および「パスワード」にwlevsと入力します。
これで、FXアプリケーションでデータ・フィードからデータを受信する準備ができました。
アメリカのデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。
/Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。
fxAmer.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。
Windowsの場合:
prompt> runloadgen.cmd fxAmer.prop
UNIXの場合:
prompt> ./runloadgen.sh fxAmer.prop
fxAsia.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、アジアのデータ・フィードをシミュレートします。
Windowsの場合:
prompt> runloadgen.cmd fxAsia.prop
UNIXの場合:
prompt> ./runloadgen.sh fxAsia.prop
fxEuro.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、ヨーロッパのデータ・フィードをシミュレートします。
Windowsの場合:
prompt> runloadgen.cmd fxEuro.prop
UNIXの場合:
prompt> ./runloadgen.sh fxEuro.prop
サーバーを起動したコマンド・ウィンドウでサーバー・ステータス・メッセージがスクロールされ、3つのロード・ジェネレータが起動した後、サーバーのコマンド・ウィンドウに次のようなメッセージが出力されます(おそらくメッセージは1行で表示されます)。
OutputBean:onEvent() + <TupleValue> <EventType>SpreaderOuputEvent</EventType> <ObjectName>FindCrossRatesRule</ObjectName> <Timestamp>1843704855846</Timestamp> <TupleKind>null</TupleKind> <DoubleAttribute> <Value>90.08350000074516</Value> </DoubleAttribute> <CharAttribute> <Value>USD</Value> <Length>3</Length> </CharAttribute> <CharAttribute> <Value>JPY</Value> <Length>3</Length> </CharAttribute> <IsTotalOrderGuarantee>false</IsTotalOrderGuarantee> </TupleValue>
これらのメッセージは、外国為替取引のサンプルが正しく実行されていることを示しています。出力では、米ドル対日本円および米ドル対英国ポンドのクロス・レートが示されています。
外国為替取引(FX)サンプルのソース・ディレクトリには、Javaソースと、FXアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。「Hello WorldをビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびfx_domainドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ:
FXソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.fx_12.1.3.0_0.jarという名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
すべてのFXサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/fxディレクトリに対する相対位置にあります。
FXのサンプルで使用するファイルは次のとおりです。
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。Oracle Event Processingアプリケーションには、このXMLファイルを含める必要があります。
サンプルでは、このファイルはcom.oracle.cep.sample.fx.context.xmlという名前で、~/META-INF/springディレクトリにあります。
アプリケーション用のプロセッサ・コンポーネントを構成するprocessor.xmlファイル。
すべて単一ファイルであるfilterAmer、filterAsia、filterEuroおよびFindCrossRatesプロセッサ。このXMLファイルに含まれるOracle CQLルールは、シミュレートされた特定のマーケット・フィードから特定の通貨ペアを選択し、プリプロセッサで選択されたすべてのイベントを結合し、特定の通貨ペアの内部価格を計算し、さらにクロス・レートを計算します。サンプルでは、このファイルはspreader.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
FindCrossRatesプロセッサの結果を要約するOracle CQLルールを含むsummarizeResults Oracle CQLプロセッサ。サンプルでは、このファイルはSummarizeResults.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
PublishSummaryResults httpパブリッシュ/サブスクライブ・アダプタを構成するXMLファイル。サンプルでは、このファイルはPubSubAdapterConfiguration.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
アプリケーションのOutputBeanコンポーネント(ビジネス・ロジックを含むPOJO)を実装するJavaファイル。このPOJOは、受信したイベント(onEventメソッドでプログラミングされたもの)を画面に出力します。また、イベント・タイプ・リポジトリにForeignExchangeEventイベント・タイプを登録します。
サンプルでは、このファイルはOutputBean.javaという名前で、~/src/com/oracle/cep/sample/fxディレクトリにあります。
このPOJOが参照するOracle Event Processing APIの追加情報は、Oracle Event Processing Java APIリファレンスを参照してください。
Oracle Event ProcessingにデプロイするOSGiバンドルの内容を記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。
FXサンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの説明は「ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ」を参照してください。
シグナル生成のサンプル・アプリケーションは、シミュレートされたマーケット・データを受信し、証券の価格変動が2%を超えたかどうかを検証します。このアプリケーションは、特定の銘柄の連続的な株価を追跡することにより、パターンの発生も検出します。以前を上回る価格が連続3回を超えた場合に、パターンと見なします。
図6-6にシグナル生成サンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
アプリケーションは、Oracle Event Processingロード・ジェネレータ・ユーティリティを使用してマーケットのデータ・フィードをシミュレートします。このサンプルでは、ロード・ジェネレータは毎秒最大10,000個までのメッセージを生成します。サンプルには、照合したイベントとレイテンシを表示するHTMLダッシュボードが含まれています。イベントは、銘柄記号、タイム・スタンプ、および価格で構成されます。
このサンプルは非常に短い待機時間を示し、スループットが高い状況では待機時間のジッタは最小限になります。アプリケーションの実行が開始されると、プロセッサは毎秒平均800個のメッセージを照合します。最小限の構成をしたシステムでアプリケーションを実行した場合、このサンプルは非常に短い平均待機時間(平均30 - 300マイクロ秒)と最小待機時間スパイク(数ミリ秒単位)を示します。
サンプルは、ロード・ジェネレータで生成されたタイムスタンプとOracle Event Processingのタイムスタンプの差に基づいて待機時間値を計算し、表示します。有効な待機時間の計算には、ロード・ジェネレータを実行しているコンピュータとOracle Event Processingを実行しているコンピュータとの間で、たとえば1ミリ秒といった非常に厳密なクロック同期が要求されます。このため、ロード・ジェネレータとOracle Event Processingの両方を1台のマルチCPUコンピュータで実行し、共通のクロックを共有することをお薦めします。
また、このサンプルはOracle Event Processingのイベントのキャッシュ機能の使用方法も示しています。具体的には、EPNの単一のプロセッサからイベントBeanとキャッシュの両方にイベントが送信されます。
このサンプルはOracle CQL問合せの使用方法も示します。
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
signalgeneration_domainドメインには、単一のアプリケーションであるシグナル生成サンプル・アプリケーションが含まれています。シグナル生成アプリケーションを実行するには、単にそのドメインのOracle Event Processingのインスタンスを起動します。
シグナル生成サンプルの実行:
コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/signalgeneration_domain/defaultserverにあるsignalgeneration_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なスクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
要求されたら、「ユーザー名」および「パスワード」にwlevsと入力します。
次のようなコンソール・メッセージが表示されるまで待機します。
<Apr 24, 2009 11:40:37 AM EDT> <Notice> <Server> <BEA-2046000> <Server STARTED> Throughput (msg per second): 0. Average latency (microseconds): 0 Throughput (msg per second): 0. Average latency (microseconds): 0 Throughput (msg per second): 0. Average latency (microseconds): 0 Throughput (msg per second): 0. Average latency (microseconds): 0 ...
これで、シグナル生成アプリケーションでデータ・フィードからデータを受信する準備ができました。
次は、データ・フィードをシミュレートするために、このサンプル用にプログラミングされたロード・ジェネレータを使用します。
新しいコマンド・ウィンドウを開きます。
/Oracle/Middleware/my_oep/examples/domains/signalgeneration_domain/defaultserver/utilsディレクトリに移動します。
startDataFeedコマンドを実行します。
Windowsの場合:
prompt> startDataFeed.cmd
UNIXの場合:
prompt> ./startDataFeed.sh
ブラウザを起動し、次のHTMLページを開いて、サンプルのダッシュボードを起動します。
http://host:9002/signalgeneration/dashboard.html
hostはOracle Event Processingを実行しているコンピュータ名で置換します。ブラウザと同じコンピュータである場合は、localhostを使用できます。
ブラウザで、HTMLページの開始をクリックします。
次のように、このサンプル用に構成されたOracle CQLルールに一致するイベントの表示が開始されます。
シグナル生成サンプルのソース・ディレクトリには、Javaソースと、シグナル生成アプリケーションを構成する他の必須のリソース(構成XMLファイル、EPNアセンブリ・ファイル、DOJOクライアントJavaScriptライブラリなど)が含まれます。「シグナル生成をビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびsignalgeneration_domainドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ:
シグナル生成サンプル・ソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.signalgen_12.1.2.0_0.jarという名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
すべてのシグナル生成のファイルは、/Oracle/Middleware/my_oep/examples/source/applications/signalgenerationディレクトリに対する相対位置にあります。
シグナル生成のサンプルで使用されるファイルは次のとおりです。
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。
サンプルでは、このファイルはepn_assembly.xmlという名前で、~/META-INF/springディレクトリにあります。
アプリケーションのプロセッサ・コンポーネントを構成するXMLファイル。このファイルはconfig.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
config.xmlファイルはprocessor1というOracle CQLプロセッサを構成します。特に、証券の価格変動が2%を超えたかどうか、また価格においてトレンドが発生したかどうかを確認するOracle CQLルールを構成します。
アプリケーションのSignalgenOutputBeanコンポーネントすなわちビジネス・ロジックを含むPOJOを実装するJavaファイル。このPOJOは、HttpServletおよびEventSinkです。このonEventメソッドは、PercentTickおよびTrendTickイベント・インスタンスを使用して、待機時間を計算し、ダッシュボードの情報を表示します。
サンプルでは、このファイルはSignalgenOutputBean.javaという名前で、~/src/oracle/cep/example/signalgenディレクトリにあります。
一般的なイベント・シンクのプログラミングについての情報は、『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』のソースおよびシンクによるイベントのハンドリングに関する項を参照してください。
Oracle Event ProcessingにデプロイするOSGiバンドルの内容を記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。
このファイルの作成およびOracle Event ProcessingにデプロイするOSGiバンドルの作成についての説明は、『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』のアプリケーションのアセンブリおよびデプロイの概要に関する項を参照してください。
メインのサンプル・ディレクトリにあるdashboard.htmlファイル。このHTMLファイルは、実行中のシグナル生成アプリケーションのイベントと待機時間を表示するサンプル・ダッシュボードです。このHTMLファイルは、http://dojotoolkit.org/のdojoディレクトリにあるDojo JavaScriptライブラリを使用します。
ForeignExchangeBuilderFactoryが参照するOracle Event Processing APIの追加情報は、Oracle Event Processing Java APIリファレンスを参照してください。
シグナル生成サンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの説明は「ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ」を参照してください。
記録と再生のサンプルは、1つのコンポーネントを構成してイベントをイベント・ストアに記録し、ネットワークの別のコンポーネントを構成してストアにあるイベントを再生する方法を示します。サンプルは、イベントの格納にOracle Event Processingが提供するデフォルトのBerkeleyデータベースを使用します。また、このサンプルで、イベント処理ネットワークで公開中のHTTPパブリッシュ/サブスクライブ・アダプタをステージとして構成する方法も示します。
図6-7に、イベントの記録と再生のサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
このアプリケーションのイベント処理ネットワークには次の4つのコンポーネントが含まれています。
simpleEventSource: 例を示すだけの目的で単純なイベントを生成するアダプタ。図で示したように、このコンポーネントはイベントを記録するよう構成されています。
このアダプタの構成ソースは次のとおりです。
<adapter> <name>simpleEventSource</name> <record-parameters> ... </record-parameters> </adapter>
eventStream: simpleEventSourceアダプタとrecplayEventSinkイベントBeanを接続するチャネル。このコンポーネントはイベントを再生するように構成されています。
このチャネルの構成ソースは次のとおりです。
<channel> <name>eventStream</name> <playback-parameters> ... </playback-parameters> ... </channel>
recplayEventSink: アダプタで生成されるイベントのシンクとして機能するイベントBean。
playbackHttpPublisher: 公開中のHTTPパブリッシュ/サブスクライブ・アダプタで、recplayEventSinkイベントBeanをリスニングし、Oracle Event Processing HTTPパブリッシュ/サブスクライブ・サーバーの/playbackchannelというチャネルにパブリッシュします。
recplay_domainドメインには、記録と再生のサンプル・アプリケーションという単一のアプリケーションが含まれています。このアプリケーションを実行するには、次の手順の説明に従って、ドメインのOracle Event Processingのインスタンスを最初に起動します。
次に、Oracle Event Processingビジュアライザを使用してsimpleEventSourceおよびeventStreamのそれぞれのコンポーネントでイベントの記録および再生を開始する方法を示します。最後に、Oracle Event Processingビジュアライザを使用して、playbackHttpPublisherアダプタがチャネルにパブリッシュするイベントのストリームを参照する方法を示します。
イベントの記録/再生サンプルの実行:
コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/recplay_domain/defaultserverにあるrecplay_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
正しいコマンドライン引数で適切なスクリプトを実行し、Oracle Event Processingを起動します。
Windowsの場合:
prompt> startwlevs.cmd
UNIXの場合:
prompt> ./startwlevs.sh
サーバーの起動後、出力に次のメッセージが表示されます。
SimpleEvent created at: 14:33:40.441
このメッセージは、Oracle Event Processingサーバーが正しく起動し、simpleEventSourceコンポーネントがイベントを作成していることを示しています。
ブラウザで以下のURLを起動します。
http://host:port/wlevs
hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。
「ログオン」画面が表示されます。
「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。
左パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」→「recplay」→「ステージ」→「simpleEventSource」を選択します。
次のように、右パネルで「記録」タブを選択します。
「データセット名」フィールドには、simpleEventSourceアダプタ・アプリケーション構成ファイル/Oracle/Middleware/my_oep/examples/domains/recplay_domain/defaultserver/applications/recplay/config.xmlのrecord-parameters子要素のdataset-name要素の値が含まれています。
<adapter> <name>simpleEventSource</name> <record-parameters> <dataset-name>recplay_sample</dataset-name> <event-type-list> <event-type>SimpleEvent</event-type> </event-type-list> <batch-size>1</batch-size> <batch-time-out>10</batch-time-out> </record-parameters> </adapter>
「記録」タブの下の「開始」をクリックします。
「アラート」ダイアログが表示されます。
「OK」をクリックします。
現在のステータス・フィールドに記録中と表示されます。
「OK」をクリックするとすぐに、イベントがsimpleEventSourceコンポーネントから出力され始め、構成済のデータベースに格納されます。
「記録の開始」フィールドと「記録の停止」フィールドを使用すると、いつイベントを記録するかを構成できます。
左パネルで、eventStreamを選択します。
次のように、右パネルで「再生」タブを選択します。
タブの下の「開始」をクリックします。
図6-8に示すように、「アラート」ダイアログが表示されます。
「OK」をクリックします。
現在のステータス・フィールドに再生中と表示されます。
「OK」をクリックするとすぐに、simpleEventSourceコンポーネントで記録されたイベントがsimpleStreamコンポーネントに再生されます。
次のメッセージがOracle Event Processingサーバーを起動したコマンド・ウィンドウに表示され、元のイベントおよび再生されたイベントの両方がEPNにストリーミングされていることを示します。
SimpleEvent created at: 14:33:11.501 Played back: Original time=14:15:23.141 Playback time=14:33:11.657
再生されるイベントが記録される期間や再生速度などの再生パラメータをさらに構成できます。そのためには、適切なフィールドを更新し、パラメータの変更をクリックします。再生パラメータを変更した後、再生を再開する必要があります。
playbackHttpPublisher アダプタがチャネルにパブリッシュしているイベントを表示するには、次のステップを実行します:
上パネルで、Viewstreamを選択します。
Viewstreamウィンドウが表示されます。
右パネルで、「クライアントの初期化」をクリックします。
「チャネルのサブスクライブ」テキスト・ボックスに/playbackchannelと入力します。
「サブスクライブ」をクリックします。
「受信メッセージ」テキスト・ボックスに、再生されたイベントの詳細が表示されます。再生されたイベントは、イベントの作成時刻と再生時刻を示します。
記録と再生のサンプルのソース・ディレクトリには、Javaソースと、アプリケーションを構成する他の必須リソース(構成XMLファイル、EPNアセンブリ・ファイルなど)が含まれます。「記録および再生サンプルをビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびsignalgeneration_domainドメインへデプロイを行うターゲットが含まれています。
イベントの記録/再生サンプルのソース・ディレクトリからのビルドおよびデプロイ:
記録/再生のソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
clean: このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。
all: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.recplay_12.1.2.0_0.jarという名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdistディレクトリに配置します。
deploy: このターゲットは、Deployerユーティリティを使用してOracle Event ProcessingにJARファイルをデプロイします。
すべてのサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/recplayディレクトリに対する相対位置にあります。
記録と再生のサンプルで使用するファイルは次のとおりです。
図6-7に示すアプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。
サンプルでは、このファイルはcom.bea.wlevs.example.recplay-context.xmlという名前で、META-INF/springディレクトリにあります。
simpleEventSourceアダプタのJavaソース・ファイル。
サンプルでは、このファイルはSimpleEventSource.javaという名前で、~/src/com/bea/wlevs/adapter/example/recplayディレクトリにあります。詳しい説明および一般的なアダプタJavaファイルのプログラム方法は、『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』のカスタム・アダプタの概要に関する項を参照してください。
PlayedBackEventおよびSimpleEventイベント・タイプを記述するJavaソース・ファイル。SimpleEventイベント・タイプは、最初にアダプタによって生成されたイベントですが、PlayedBackEventイベント・タイプは、記録された後に再生されるイベントに対して使用します。PlayedBackEventsは、SimpleEventとほぼ同じですが、イベントが記録された時刻を示す追加フィールドがあります。
サンプルでは、SimpleEvent.javaおよびPlayedBackEvent.javaという2つのイベントが~/src/com/bea/wlevs/event/example/recplayディレクトリにあります。
アプリケーションのrecplayEventSinkイベントBeanを実装するJavaファイルは、simpleEventSourceアダプタからリアル・タイム・イベントと再生イベントの両方を受け取るイベント・シンクです。
サンプルでは、このファイルはRecplayEventSink.javaという名前で、~/src/com/bea/wlevs/example/recplayディレクトリにあります。
simpleEventSourceアダプタとeventStreamチャネル・コンポーネントを構成するXMLファイル。コンポーネントを指定する<record-parameters>要素を含むアダプタは、イベントをイベント・ストアに記録します。同様に、チャネルには再生イベントを受け取るように指定する<playback-parameters>要素が含まれます。
サンプルでは、このファイルはconfig.xmlという名前で、~/META-INF/wlevsディレクトリにあります。
Oracle Event ProcessingにデプロイするOSGiバンドルの内容を記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。
このファイルの作成およびOracle Event ProcessingにデプロイするOSGiバンドルの作成についての説明は、アプリケーションのアセンブリおよびデプロイの概要に関する項を参照してください。
記録/再生サンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの説明は「イベントの記録/再生サンプルのビルドおよびデプロイ」を参照してください。