7 Oracle Stream Analyticsでのイベント処理のサンプル
この章では、Oracle Stream Analyticsのインストールによって提供されるサンプル・コードを紹介し、コードの設定方法および使用方法を説明します。Oracle Stream Analyticsは、サンプル・チェック・ボックスを選択してインストールする必要があります。
この章の構成は、次のとおりです。
7.1 サンプルについて
サンプルを含めたインストールを選択すると、Oracle Stream Analyticsは次のサンプルとともにインストールされます。
-
HelloWorld: Oracle Stream Analyticsアプリケーションの基本的なスケルトンを提供します。
-
Oracle CQL: Oracle Stream Analytics Visualizerの問合せウィザードを使用してイベント・ストリームを処理するOracle CQL問合せを構築する方法を示します。
-
Oracle Spatial: Oracle SpatialをOracle CQL問合せとともに使用してGlobal Positioning System (GPS)イベントのストリームを処理する方法を示します。GPSイベントはバスの位置を追跡し、バスがバス停の位置に到着するとアラートを生成します。
-
外国為替(FX): 複数のコンポーネントが含まれています。
-
シグナル生成: 市場取引およびトレンド検出をシミュレートします。
-
イベントの記録および再生: 永続イベント・ストアを使用したイベントの記録および再生の構成方法を示します。
これらのサンプルは、次の2つの形式で提供されます。
サンプルは開発ツールとしてAntを使用します。Antの詳細およびコンピュータへのインストールについては、http://ant.apache.org/
を参照してください。
Oracle Stream Analyticsのインストール・ディレクトリは、/Oracle/Middleware/my_oep/とします。
7.1.1 すぐに実行できるサンプル
すぐに実行できるサンプルには、アセンブルしたアプリケーションをデプロイするために事前構成されたドメインがあります。各ドメインはスタンドアロン・サーバー・ドメインで、サーバー・ファイルはドメイン・ディレクトリの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
にあります。詳細は、「イベントの記録/再生サンプルの実行」を参照してください。
7.1.2 サンプル・ソース
各サンプルの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
にあります。詳細は、「記録および再生サンプルの実装」を参照してください。
7.2 環境設定
サンプルを実行するには、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}
7.3 サンプルでのOracle Stream Analytics Visualizerの使用
Oracle Stream Analytics Visualizerは、Oracle Stream Analyticsのデータを使用するWeb 2.0アプリケーションで、そのデータを便利で直観的な形でシステム管理者やオペレータに表示し、特定のタスクでは、受け取ったデータは構成を変更するためにOracle Stream Analyticsに戻されます。
Visualizer自身はOracle Stream Analyticsアプリケーションで、各サーバー・インスタンスに自動的にデプロイされます。サンプルでそれを使用するには、次の各サンプルに示されている手順に従ってサーバーを起動済であることを確認し、ブラウザで次のURLを起動します。
http://host:9002/wlevs
ここで、host
はOracle Stream Analyticsをホストしているコンピュータの名前です。ブラウザが同じコンピュータで実行されている場合、localhost
を使用できます。
HelloWorldアプリケーションではセキュリティは無効になっているため、ログイン画面でユーザー名およびパスワードを入力せずに「ログオン」をクリックできます。FXおよびシグナル生成サンプルでは、セキュリティが有効になっているため、ログインに次のユーザー名およびパスワードを使用します。
Username: oepadmin Password: welcome1
7.4 サンプルのパフォーマンスの向上
Oracle Stream Analyticsを大量のメモリーがあるコンピュータで実行する場合は、ロード・ジェネレータおよびサーバー・ヒープ・サイズをコンピュータのサイズに応じて適切に設定します。
十分なメモリがあるコンピュータでは、サーバー用に1GB、ロード・ジェネレータ用に512MBから1GBのヒープ・サイズを推奨します。
7.5 HelloWorldサンプル
HelloWorldサンプルでは、一般的なOracle Stream Analyticsアプリケーションの作成方法を示します。
図7-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プロセッサからの一連のイベントについてのレポートの実行、適切な電子メールやアラートの送信などのアプリケーションのビジネス・ロジックを含みます。
7.5.1 helloworldドメインからのHelloWorldサンプルの実行
HelloWorldアプリケーションはhelloworld
ドメインにあらかじめデプロイされています。アプリケーションを実行するには、Oracle Stream Analyticsサーバーのインスタンスを起動します。
HelloWorldサンプルのhelloworldドメインからの実行:
-
コマンド・ウィンドウを開き、インストールの/Oracle/Middleware/my_oep/oep/examples/domains/helloworld_domain/defaultserverにあるhelloworldドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。
-
正しいコマンドライン引数で適切なサーバー起動スクリプトを実行し、Oracle Stream Analyticsを起動します。
-
Windowsの場合:
prompt> startwlevs.cmd
-
UNIXの場合:
prompt> ./startwlevs.sh
サーバーの起動後、毎秒出力に次のメッセージが表示されます。
Message: HelloWorld - the current time is: 3:56:57 PM
このメッセージは、HelloWorldのサンプルが正しく実行されていることを示しています。
-
7.5.2 ソース・ディレクトリからの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のサンプルが再デプロイされ、正しく実行されていることを示しています。
7.5.3 Hello WorldをビルドするAntターゲットの説明
HelloWorldソース・ディレクトリの最上位レベルにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットは、クリーン、コンパイルを行い、アプリケーションをcom.bea.wlevs.example.helloworld_12.1.3.0_0.jar
という名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.5.4 HelloWorldのサンプルの実装
HelloWorldサンプルは比較的単純なため、Oracle Stream Analyticsアプリケーションの通常の作成手順で説明されているすべてのコンポーネントおよび構成ファイルは使用しません。
すべてのサンプル・ファイルは、/Oracle/Middleware/my_oep/examples/source/applications/helloworldディレクトリに対する相対位置にあります。
HelloWorldのサンプルで使用するファイルは次のとおりです。
-
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。EPNアセンブリ・ファイルは標準のSpringコンテキスト・ファイルを拡張します。また、このファイルはアプリケーションで使用されるイベント・タイプを登録します。Oracle Stream Analyticsアプリケーションには、この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サンプルのビルドおよびデプロイ」を参照してください。
7.6 Oracle Continuous Query Languageのサンプル
Oracle Continuous Query Language (Oracle CQL)のサンプルでは、Oracle Stream Analytics Visualizerの問合せウィザードを使用して様々なタイプのOracle CQL問合せを構築する方法を示します。
図7-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
、BeanBean
で構成されます。キャッシュstockCache
もあり、Oracle CQLプロセッサcacheProcessor
に接続しています。また、BeanLoader
もあります。このイベント・パスは、Oracle CQL問合せのキャッシュの情報にアクセスするために使用されます。
注意:
EPNの様々なコンポーネントの詳細は、このマニュアルの他のサンプルを参照してください。
7.6.1 CQLサンプルの実行
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
CQLアプリケーションはcql_domain
ドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Stream Analyticsのインスタンスを起動します。
CQLのサンプルを実行するには:
-
コマンド・ウィンドウを開き、
/Oracle/Middleware/my_oep/oep/examples/domains/cql_domain/defaultserver
にあるCQLドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。 -
適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。
-
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 Stream Analytics Visualizerの問合せ計画の統計をオンにすることによって、そのデータが流れることを検証できます。
7.6.2 CQLサンプルのビルドおよびデプロイ
CQLサンプルのソース・ディレクトリには、Javaソースと、CQLアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。「Hello WorldをビルドするAntターゲットの説明」で説明されているように、build.xml
Antファイルには、アプリケーションのビルドおよびcql_domain
ドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからCQLのサンプルをビルドしてデプロイするには:
7.6.3 CQLサンプルをビルドするAntターゲットの説明
CQLソースの最上位レベル・ディレクトリにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.cql_12.1.2.0_0.jar
という名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.6.4 CQLのサンプルの実装
ここでは、CQLのサンプルで使用される問合せの作成方法を説明します。
7.6.4.1 不足イベントの問合せの作成
この項では、不足イベントを検出するためにcqlProc
が実行するOracle CQLパターン・マッチング問合せをOracle Event Processingビジュアライザの問合せウィザードを使用して作成する方法について説明します。
顧客注文ワークフロー・イベントがOracle Event Processingシステムに流れる顧客注文ワークフローについて考えてみます。
有効なシナリオでは、表7-1にリストされた順番でイベントが発生します。
表7-1 有効な注文ワークフロー
イベント・タイプ | 説明 |
---|---|
|
顧客注文 |
|
承認 |
|
Shipment |
ただし、表7-2に示すように、承認イベントなしに注文が出荷されるとエラーとなります。
表7-2 無効な注文ワークフロー
イベント・タイプ | 説明 |
---|---|
|
顧客注文 |
|
Shipment |
承認イベントの欠落を検出してアラート・イベントを生成する問合せを作成してテストします。
不足イベントの問合せの作成:
-
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
このパターンは、表7-3にリストされているOracle CQLパターン数量子を使用します。パターン量指定子を使用して、パターン一致が許可される範囲を指定します。1文字パターン数量子は最大限、すなわち「グリーディ」です。これは、まず最大限にマッチングを行います。2文字パターン数量子は最小限、すなわち「リラクタント」です。これは、まず最小限のマッチングを行います。
表7-3 MATCH_RECOGNIZEパターン数量子
最大 最小 説明 *
*?
0回以上
+
+?
1回以上。
?
??
0回または1回。
-
「パーティション基準」プルダウン・メニューからorderidを選択し、プラス記号ボタンをクリックしてこのプロパティを
PARTITION BY
句に追加します。これで、Oracle Event Processingが各注文について欠落イベントの問合せを検証するようになります。
-
別名フィールドにOrdersと入力します。
これで、パターンの別名(
Orders
)が割り当てられ、後から問合せで使用するときに便利です。 -
「定義」タブをクリックします。
「定義」タブが表示されます。
これで、パターン句で名前が付けられた各条件を表7-4に示されているように定義できます。
表7-4 条件定義
条件名 定義 CustOrder
orderChannel.eventType = 'C'
NoApproval
NOT(orderChannel.eventType = 'A')
Shipment
orderChannel.eventType = 'C'
-
「オブジェクト名」フィールドに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
が表示されます。
7.6.4.2 移動平均の問合せの作成
ここでは、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のアイコンをダブルクリックします。
図7-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によって「受信メッセージ」領域が更新され、生成されたイベントが表示されます。
7.7 Oracle Spatialのサンプル
このサンプルは、Oracle Spatialの使用方法を示すもので、Oracle CQL問合せで全地球測位システム(GPS)のイベント・ストリームを処理してバスのGPS位置を追跡し、バスが事前に定義されたバス停の位置に到着するとアラートを生成します。
図7-4にOracle Spatialサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
このサンプルには次のコンポーネントが含まれています。
-
BusPositionGen
: バスの位置に関するGPSイベントの入力ストリームをシミュレートするコンポーネントです。Oracle Stream Analytics 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 Oracle Stream Analytics CQL言語リファレンスを参照してください。
7.7.1 Oracle Spatialサンプルの実行
Oracle Spatialアプリケーションはspatial_domain
ドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Stream Analyticsのインスタンスを起動します。
Oracle Spatialサンプルのspatial_domainドメインからの実行:
-
コマンド・ウィンドウを開き、
/Oracle/Middleware/my_oep/oep/examples/domains/spatial_domain/defaultserver
にあるOracle Spatialサンプル・ドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。 -
適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。
-
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 Stream Analyticsの制限ではありません。
Oracle SpatialサンプルのWebページが表示されます。
バス停への到着タブをクリックすると、次のようなバス停への到着を参照できます。
-
Oracle Stream Analyticsロード・ジェネレータを実行し、サンプル・データを生成します。
-
コマンド・プロンプトを開き、/Oracle/Middleware/my_oep/utils/load-generatorに移動します。
-
Windowsでは次のように入力します。
-
runloadgen.cmd bus_positions.prop
-
-
UNIXでは次のように入力します。
-
./runloadgen.sh bus_positions.prop
-
-
-
次のようにバスが移動し、ブラウザにアラートが表示されることを確認します。
7.7.2 Oracle Spatialサンプルのビルドおよびデプロイ
Oracle Spatialサンプルのソース・ディレクトリには、Javaソースと、Oracle Spatialアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml
Antファイルには、アプリケーションをビルドしてspatial_domain
ドメインにデプロイするためのターゲットが含まれています。
詳細は、「Hello WorldをビルドするAntターゲットの説明」を参照してください。
Oracle Spatialサンプルのソース・ディレクトリからのビルドおよびデプロイ:
7.7.3 Oracle SpatialサンプルをビルドするAntターゲットの説明
Oracle Spatialのソース・ディレクトリの最上位レベルにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.spatial_12.1.2.0_0.jar
という名前のJARファイルに出力し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.7.4 Oracle Spatialサンプルの実装
すべてのOracle Spatialサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/spatial
ディレクトリに対する相対位置にあります。
Oracle Spatialサンプルで使用されるファイルは次のとおりです。
-
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。Oracle Stream Analyticsアプリケーションには、この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 Stream Analytics APIの追加情報は、Oracle Stream Analytics Java APIリファレンスを参照してください。
-
-
Oracle Stream AnalyticsにデプロイされるOSGiバンドルの内容を記述した
MANIFEST.MF
ファイル。サンプルでは、
MANIFEST.MF
ファイルがMETA-INF
ディレクトリにあります。Oracle Spatialサンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイに
build.xml
Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xml
ファイルの説明は「Oracle Spatialサンプルのビルドおよびデプロイ」を参照してください。
7.8 外国為替取引(FX)のサンプル
外国為替サンプル(省略してFX)は、複数のデータ・フィードからの情報を処理する複数のOracle CQLプロセッサが含まれているため、HelloWorldサンプルよりも複雑なサンプルとなっています。サンプルでは、Oracle Stream Analyticsロード・ジェネレータ・ユーティリティを使用してデータ・フィードをシミュレートします。
図7-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 Stream Analyticsモニターは、直前のステップのイベント待機時間が特定のしきい値を超えていないか(たとえば、30秒という時間内に更新されたレートがないか)、また同じ通貨のペアで2つの連続的なレート間の偏差が大きすぎないかを監視するように構成されています。最後に、通貨の各ペアの直前のレートがOracle Stream Analytics httpパブリッシュ/サブスクライブ・サーバーに転送されます。
7.8.1 外国為替サンプルの実行
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
外国為替取引(FX)アプリケーションはfx_domain
ドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Stream Analyticsのインスタンスを起動します。
外国為替サンプルの実行:
-
コマンド・ウィンドウを開き、
/Oracle/Middleware/my_oep/oep/examples/domains/fx_domain/defaultserver
にあるFXドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。 -
適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。
-
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>
これらのメッセージは、外国為替取引のサンプルが正しく実行されていることを示しています。出力では、米ドル対日本円および米ドル対英国ポンドのクロス・レートが示されています。
-
7.8.2 ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ
外国為替取引(FX)サンプルのソース・ディレクトリには、Javaソースと、FXアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。「Hello WorldをビルドするAntターゲットの説明」で説明されているように、build.xml
Antファイルには、アプリケーションのビルドおよびfx_domainドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ:
7.8.3 FXをビルドするAntターゲットの説明
FXソースの最上位レベル・ディレクトリにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.fx_12.1.3.0_0.jar
という名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.8.4 FXのサンプルの実装
すべてのFXサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/fx
ディレクトリに対する相対位置にあります。
FXのサンプルで使用するファイルは次のとおりです。
-
アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。Oracle Stream Analyticsアプリケーションには、この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 Stream Analytics APIの追加情報は、Oracle Stream Analytics Java APIリファレンスを参照してください。
-
Oracle Stream AnalyticsにデプロイされるOSGiバンドルの内容を記述した
MANIFEST.MF
ファイル。サンプルでは、
MANIFEST.MF
ファイルがMETA-INF
ディレクトリにあります。FXサンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイに
build.xml
Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xml
ファイルの説明は「ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ」を参照してください。
7.9 シグナル生成サンプル
シグナル生成のサンプル・アプリケーションは、シミュレートされたマーケット・データを受信し、証券の価格変動が2%を超えたかどうかを検証します。このアプリケーションは、特定の銘柄の連続的な株価を追跡することにより、パターンの発生も検出します。以前を上回る価格が連続3回を超えた場合に、パターンと見なします。
図7-6にシグナル生成サンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。
アプリケーションは、Oracle Stream Analyticsロード・ジェネレータ・ユーティリティを使用してマーケットのデータ・フィードをシミュレートし、このサンプルでは、ロード・ジェネレータは毎秒最大10,000個までのメッセージを生成します。サンプルには、照合したイベントとレイテンシを表示するHTMLダッシュボードが含まれています。イベントは、銘柄記号、タイム・スタンプ、および価格で構成されます。
このサンプルは非常に短い待機時間を示し、スループットが高い状況では待機時間のジッタは最小限になります。アプリケーションの実行が開始されると、プロセッサは毎秒平均800個のメッセージを照合します。最小限の構成をしたシステムでアプリケーションを実行した場合、このサンプルは非常に短い平均待機時間(平均30 - 300マイクロ秒)と最小待機時間スパイク(数ミリ秒単位)を示します。
サンプルは、ロード・ジェネレータで生成されたタイムスタンプとOracle Stream Analyticsのタイムスタンプの差に基づいて待機時間値を計算し、表示します。有効な待機時間の計算には、ロード・ジェネレータを実行しているコンピュータとOracle Stream Analyticsを実行しているコンピュータとの間で、たとえば1ミリ秒といった非常に厳密なクロック同期が要求されます。そのため、ロード・ジェネレータおよびOracle Stream Analyticsの両方が共通のクロックを使用するように、単一のマルチCPUコンピュータで両方を実行することをお薦めします。
また、このサンプルはOracle Stream Analyticsのイベントのキャッシュ機能の使用方法も示しています。具体的には、EPNの単一のプロセッサからイベントBeanとキャッシュの両方にイベントが送信されます。
このサンプルはOracle CQL問合せの使用方法も示します。
7.9.1 シグナル生成サンプルの実行
最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。
signalgeneration_domain
ドメインには、単一のアプリケーションであるシグナル生成サンプル・アプリケーションが含まれています。シグナル生成アプリケーションを実行するには、単にそのドメインのOracle Stream Analyticsのインスタンスを起動します。
シグナル生成サンプルの実行:
-
コマンド・ウィンドウを開き、
/Oracle/Middleware/my_oep/oep/examples/domains/signalgeneration_domain/defaultserver
にあるsignalgeneration_domain
ドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。 -
適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。
-
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.htmlhost
は、Oracle Stream Analyticsを実行しているコンピュータの名前に置き換え、ブラウザと同じコンピュータである場合は、localhost
とすることができます。 -
ブラウザで、HTMLページの開始をクリックします。
次のように、このサンプル用に構成されたOracle CQLルールに一致するイベントの表示が開始されます。
7.9.2 ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ
シグナル生成サンプルのソース・ディレクトリには、Javaソースと、シグナル生成アプリケーションを構成する他の必須のリソース(構成XMLファイル、EPNアセンブリ・ファイル、DOJOクライアントJavaScriptライブラリなど)が含まれます。「シグナル生成をビルドするAntターゲットの説明」で説明されているように、build.xml
Antファイルには、アプリケーションのビルドおよびsignalgeneration_domain
ドメインへデプロイを行うターゲットが含まれています。
ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ:
7.9.3 シグナル生成をビルドするAntターゲットの説明
シグナル生成サンプル・ソースの最上位レベル・ディレクトリにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.signalgen_12.1.2.0_0.jar
という名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.9.4 シグナル生成のサンプルの実装
すべてのシグナル生成のファイルは、/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 Stream Analyticsアプリケーションの開発』の「ソースおよびシンクでのイベントの処理」を参照してください。
-
Oracle Stream AnalyticsにデプロイされるOSGiバンドルの内容を記述した
MANIFEST.MF
ファイル。サンプルでは、
MANIFEST.MF
ファイルがMETA-INF
ディレクトリにあります。このファイルの作成およびOracle Stream AnalyticsにデプロイするOSGiバンドルの作成についての説明は、『Oracle Fusion Middleware Oracle Stream Analyticsによるイベント処理用アプリケーションの開発』の「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。
-
メインのサンプル・ディレクトリにある
dashboard.html
ファイル。このHTMLファイルは、実行中のシグナル生成アプリケーションのイベントと待機時間を表示するサンプル・ダッシュボードです。このHTMLファイルは、http://dojotoolkit.org/
のdojo
ディレクトリにあるDojo JavaScriptライブラリを使用します。
ForeignExchangeBuilderFactory
で参照されるOracle Stream Analytics APIの追加情報は、Oracle Stream Analytics Java APIリファレンスを参照してください。
シグナル生成サンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml
Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xml
ファイルの説明は「ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ」を参照してください。
7.10 イベントの記録と再生のサンプル
記録と再生のサンプルは、1つのコンポーネントを構成してイベントをイベント・ストアに記録し、ネットワークの別のコンポーネントを構成してストアにあるイベントを再生する方法を示します。サンプルは、イベントの格納にOracle Stream Analyticsが提供するデフォルトのBerkeleyデータベースを使用します。また、このサンプルで、イベント処理ネットワークで公開中のHTTPパブリッシュ/サブスクライブ・アダプタをステージとして構成する方法も示します。
図7-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 Stream Analytics HTTPパブリッシュ/サブスクライブ・サーバーの/playbackchannel
というチャネルにパブリッシュします。
7.10.1 イベントの記録/再生サンプルの実行
recplay_domain
ドメインには、記録と再生のサンプル・アプリケーションという単一のアプリケーションが含まれています。このアプリケーションを実行するには、次の手順の説明に従って、ドメインのOracle Stream Analyticsのインスタンスを最初に起動します。
次に、Oracle Stream Analytics Visualizerを使用してsimpleEventSource
およびeventStream
のそれぞれのコンポーネントでイベントの記録および再生を開始する方法を示します。最後に、Oracle Stream Analytics Visualizerを使用して、playbackHttpPublisher
アダプタがチャネルにパブリッシュするイベントのストリームを参照する方法を示します。
イベントの記録/再生サンプルの実行:
-
コマンド・ウィンドウを開き、
/Oracle/Middleware/my_oep/oep/ examples/domains/recplay_domain/defaultserver
にあるrecplay_domain
ドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。 -
適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。
-
Windowsの場合:
prompt> startwlevs.cmd
-
UNIXの場合:
prompt> ./startwlevs.sh
サーバーの起動後、出力に次のメッセージが表示されます。
SimpleEvent created at: 14:33:40.441
このメッセージは、Oracle Stream Analyticsサーバーが正しく起動し、
simpleEventSource
コンポーネントがイベントを作成していることを示しています。 -
-
ブラウザで以下のURLを起動します。
http://host:port/wlevs
hostは、Oracle Stream Analyticsが実行中のコンピュータ名を指し、portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値
9002
)。「ログオン」画面が表示されます。
-
「ログオン」画面で、「ユーザー名」に
oepadmin
を、「パスワード」にwelcome1
を入力し、「ログイン」をクリックします。Oracle Stream Analytics Visualizerのダッシュボードが表示されます。
-
左パネルで、「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を選択します。
-
次のように、右パネルで「再生」タブを選択します。
-
タブの下の「開始」をクリックします。
図7-8に示すように、「アラート」ダイアログが表示されます。
-
「OK」をクリックします。
現在のステータス・フィールドに再生中と表示されます。
「OK」をクリックするとすぐに、
simpleEventSource
コンポーネントで記録されたイベントがsimpleStream
コンポーネントに再生されます。次のメッセージがOracle Stream Analyticsサーバーを起動したコマンド・ウィンドウに表示され、元のイベントおよび再生されたイベントの両方が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
と入力します。 -
「サブスクライブ」をクリックします。
「受信メッセージ」テキスト・ボックスに、再生されたイベントの詳細が表示されます。再生されたイベントは、イベントの作成時刻と再生時刻を示します。
-
7.10.2 イベントの記録/再生サンプルのビルドおよびデプロイ
記録と再生のサンプルのソース・ディレクトリには、Javaソースと、アプリケーションを構成する他の必須リソース(構成XMLファイル、EPNアセンブリ・ファイルなど)が含まれます。「記録および再生サンプルをビルドするAntターゲットの説明」で説明されているように、build.xml
Antファイルには、アプリケーションのビルドおよびsignalgeneration_domainドメインへデプロイを行うターゲットが含まれています。
イベントの記録/再生サンプルのソース・ディレクトリからのビルドおよびデプロイ:
7.10.3 記録と再生のサンプルをビルドするAntターゲットの説明
記録/再生のソースの最上位レベル・ディレクトリにあるbuild.xml
ファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。
-
clean
: このターゲットは、現在のディレクトリの下にあるdist
およびoutput
作業ディレクトリを削除します。 -
all
: このターゲットはクリーンおよびコンパイルを行い、アプリケーションをcom.bea.wlevs.example.recplay_12.1.2.0_0.jar
という名前のJARファイルに格納し、生成されたJARファイルを現在のディレクトリの下のdist
ディレクトリに配置します。 -
deploy
: このターゲットは、デプロイヤ・ユーティリティを使用してOracle Stream AnalyticsにJARファイルをデプロイします。
7.10.4 記録と再生のサンプルの実装
すべてのサンプルのファイルは、/Oracle/Middleware/my_oep/examples/source/applications/recplay
ディレクトリに対する相対位置にあります。
記録と再生のサンプルで使用するファイルは次のとおりです。
-
アプリケーション内の各コンポーネントとすべてのコンポーネントの図7-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 Stream Analyticsによるイベント処理用アプリケーションの開発』の「カスタム・アダプタの概要」を参照してください。 -
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 Stream AnalyticsにデプロイされるOSGiバンドルの内容を記述した
MANIFEST.MF
ファイル。サンプルでは、
MANIFEST.MF
ファイルがMETA-INF
ディレクトリにあります。このファイルの作成およびOracle Stream AnalyticsにデプロイするOSGiバンドルの作成についての説明は、「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。
記録/再生サンプルは、OSGiバンドルのコンパイル、アセンブルおよびデプロイにbuild.xml
Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xml
ファイルの説明は「イベントの記録/再生サンプルのビルドおよびデプロイ」を参照してください。