Oracle® Fusion Middleware

Oracle Stream Analyticsイベント処理スタート・ガイド

12cリリース(12.2.1.2.0)

E82781-01(原本部品番号:E67743-01)

2016年10月

Oracle Stream Analyticsアプリケーションの開発のスタート・ガイドです。

Oracle Fusion Middleware Oracle Stream Analyticsイベント処理スタート・ガイド、12cリリース(12.2.1.2.0)

E82781-01

Copyright © 2007, 2016, Oracle and/or its affiliates All rights reserved.

原本著者:  Oracle® Corporation

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このガイドで説明する新機能

1 Oracle Stream Analyticsでのイベント処理の概要

- 1.1 Oracle Stream Analytics

- 1.2 アプリケーション・プログラミング・モデル

- 1.3 イベント処理ネットワーク内のコンポーネントの役割

- 1.4 Oracle CQL

- 1.5 Oracle Stream Analyticsのテクノロジ

- 1.6 Oracle Stream Analyticsの高度なユースケース

2 Oracle JDeveloperクイック・リファレンス

- 2.1 アクセシビリティ・オプションの設定

- 2.2 Oracle Stream Analyticsのサポート

- 2.3 Oracle JDeveloperウィンドウのオープン

- 2.4 Oracle Stream Analyticsプロジェクトの作成

- 2.5 プロジェクト・テンプレート

- 2.6 アセンブリ・ファイルおよびコンポーネント構成ファイル

- 2.7 プロジェクト・ソース・ファイルへのパスの設定

- 2.8 プロジェクトレベルのアクションの実行

- 2.9 ZipまたはJARファイルのインポート

- 2.10 EPNダイアグラムの機能

- 2.11 コンポーネント・ウィンドウ

- 2.12 コンテキスト・メニュー

3 Oracle JDeveloperの利用手順

- 3.1 EclipseプロジェクトのOracle JDeveloperへのインポート

- 3.2 プロジェクトへのライブラリの追加

- 3.3 アプリケーション・ライブラリの作成

- 3.4 アセンブリ・ファイルおよび構成ファイル

- 3.4.1 アセンブリ・ファイルの作成

- 3.4.2 コンポーネント構成ファイルの作成

- 3.4.3 構成ファイルへのコンポーネントの追加

- 3.4.4 コンポーネントへの構成設定の追加

- 3.5 リレーション・チャネルの構成

- 3.6 アプリケーション・タイムスタンプ・チャネルの構成

- 3.7 JavaBeanイベント・タイプの作成および登録

- 3.8 タプル・イベント・タイプの作成および登録

- 3.9 イベントBeanの作成

- 3.10 Spring Beanの作成

- 3.11 表ソースの構成

- 3.12 表シンクの構成

- 3.13 Oracle CQLパターンの使用

- 3.14 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

- 3.15 ローカル・キャッシュ・システムおよびキャッシュの構成

- 3.16 Javaクラスのデバッグ

- 3.16.1 ローカルOracle Stream Analyticsサーバーでのデバッグ

- 3.16.2 リモートOracle Stream Analyticsサーバー

- 3.16.3 Oracle WebLogic Server

- 3.17 イベント・インスペクタ・サービスによるテスト

- 3.18 Oracle JDeveloperおよびサーバーの起動と停止

4 基本アプリケーションの作成

- 4.1 基本的なアプリケーションについて

- 4.2 前提作業

- 4.3 アプリケーションの作成

- 4.4 TradeReportプロジェクト・ファイル

- 4.5 イベント・データを運ぶイベント・タイプの作成

- 4.6 シミュレートされたイベント・データを受信するcsvgenアダプタの追加

- 4.7 イベントを伝達する出力チャネルの追加

- 4.8 イベントの受信および報告を行うリスナー・イベント・シンクの作成

- 4.9 イベントをフィルタするOracle CQLプロセッサの追加

- 4.10 出力チャネルの追加

- 4.11 デプロイ

- 4.12 ロード・ジェネレータの設定および起動

- 4.13 ロード・ジェネレータおよびサーバーの停止

5 EDNアダプタを使用した不正検出アプリケーションの作成

- 5.1 不正検出のシナリオ

- 5.2 前提作業

- 5.3 イベント配信ネットワークのウォークスルー

- 5.3.1 Oracle WebLogic Serverの起動

- 5.3.2 アーティファクト・フォルダのコピー

- 5.3.3 Oracle Stream Analyticsドメインの作成

- 5.3.4 Javaメッセージ・サービス・トピックの作成

- 5.3.5 Oracle Stream Analyticsサーバーの起動

- 5.3.6 Oracle JDeveloperを使用したOracle Stream Analyticsアプリケーションの作成

- 5.3.7 JDeveloperによるアプリケーションのデプロイ

- 5.3.8 サンプルSOAコンポジットの作成およびデプロイ

- 5.3.9 不正検出アプリケーションのテスト

6 QuickFixアダプタを使用した注文追跡アプリケーションの作成

- 6.1 注文追跡サンプル・アプリケーション

- 6.2 サンプル・アプリケーションのテスト

7 Oracle Stream Analyticsでのイベント処理のサンプル

- 7.1 サンプルについて

- 7.1.1 すぐに実行できるサンプル

- 7.1.2 サンプル・ソース

- 7.2 環境設定

- 7.3 サンプルでのOracle Stream Analytics Visualizerの使用

- 7.4 サンプルのパフォーマンスの向上

- 7.5 HelloWorldサンプル

- 7.5.1 helloworldドメインからのHelloWorldサンプルの実行

- 7.5.2 ソース・ディレクトリからのHelloWorldサンプルのビルドおよびデプロイ

- 7.5.3 Hello WorldをビルドするAntターゲットの説明

- 7.5.4 HelloWorldサンプルの実装

- 7.6 Oracle Continuous Query Languageのサンプル

- 7.6.1 CQLサンプルの実行

- 7.6.2 CQLサンプルのビルドおよびデプロイ

- 7.6.3 CQLサンプルをビルドするAntターゲットの説明

- 7.6.4 CQLサンプルの実装

- 7.6.4.1 不足イベントの問合せの作成

- 7.6.4.2 移動平均の問合せの作成

- 7.7 Oracle Spatialのサンプル

- 7.7.1 Oracle Spatialサンプルの実行

- 7.7.2 Oracle Spatialサンプルのビルドおよびデプロイ

- 7.7.3 Oracle SpatialサンプルをビルドするAntターゲットの説明

- 7.7.4 Oracle Spatialサンプルの実装

- 7.8 外国為替(FX)サンプル

- 7.8.1 外国為替サンプルの実行

- 7.8.2 ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ

- 7.8.3 FXをビルドするAntターゲットの説明

- 7.8.4 FXサンプルの実装

- 7.9 シグナル生成サンプル

- 7.9.1 シグナル生成サンプルの実行

- 7.9.2 ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ

- 7.9.3 シグナル生成をビルドするAntターゲットの説明

- 7.9.4 シグナル生成サンプルの実装

- 7.10 イベントの記録および再生サンプル

- 7.10.1 イベントの記録/再生サンプルの実行

- 7.10.2 イベントの記録/再生サンプルのビルドおよびデプロイ

- 7.10.3 記録および再生サンプルをビルドするAntターゲットの説明

- 7.10.4 記録および再生サンプルの実装

はじめに

このドキュメントでは、Oracle Stream AnalyticsおよびOracle CQLの学習のための一般的な背景情報や詳しいコード・サンプルについて説明します。

対象読者

このドキュメントは、Oracle Stream AnalyticsおよびOracle CQLの習得に関心を持つユーザーを対象としています。読者は、基本的なJava開発に精通している必要があります。SQLに関する知識が役立つ場合があります。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、次を参照してください。

- Oracle SOA製品の既知の問題: http://www.oracle.com//technetwork/middleware/soasuite/documentation/soaknownissues122120-3111966.html。

- Oracle Stream Analyticsの管理

- Oracle Stream Analyticsによるイベント処理用アプリケーションの開発

- Oracle Stream Analyticsスキーマ・リファレンス

- Oracle Stream Analyticsビジュアライザの使用

- Oracle Stream Analyticsのカスタマイズ

- Oracle CQLデータ・カートリッジによるアプリケーションの開発

- Oracle CQL言語リファレンス

- Oracle Stream Analytics Java APIリファレンス

- Oracle Stream Analyticsの使用

- Oracle Stream Analyticsスタート・ガイド

- 『Oracle Database SQL言語リファレンス』: : http://docs.oracle.com/cd/E16655_01/server.121/e17209/toc.htm

- SQL99仕様(ISO/IEC 9075-1:1999、ISO/IEC 9075-2:1999、ISO/IEC 9075-3:1999およびISO/IEC 9075-4:1999)

- Oracle Stream Analyticsフォーラム: http://forums.oracle.com/forums/forum.jspa?forumID=820

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

このガイドで説明する新機能

使用しているスキンによっては、このガイドで示される画面は実装状態と異なる場合があります。相違点は軽微なものです。

QuickFixアダプタのサポートは、このリリースでは非推奨です。

このガイドは、12c 12.2.1.1.0リリースのために改訂されました。次の表に、追加または変更された項を示します。

項

変更内容

ガイド全体

製品のOracle Stream Analyticsへの名称変更。

1 Oracle Stream Analyticsでのイベント処理の概要

Oracle Stream Analyticsは、リアルタイムにストリーミングされるイベントを監視するアプリケーションを開発および管理するための、高スループットで待機時間の少ないプラットフォームです。

このガイドでは、Oracle Stream Analyticsとアプリケーション開発に使用するOracle JDeveloperについて説明します。順を追った説明とサンプル・アプリケーションによって、プラットフォームの各部分の協調方法やOracle Stream Analyticsアプリケーションの作成方法について理解を深める確かな土台を提供します。

この章の構成は、次のとおりです。

- Oracle Stream Analytics

- アプリケーション・プログラミング・モデル

- イベント処理ネットワークのコンポーネント・ロール

- Oracle CQL

- Oracle Stream Analyticsのテクノロジ

- Oracle Stream Analyticsの高度なユースケース。

1.1 Oracle Stream Analytics

Oracle Stream Analyticsは、Oracle Stream Analyticsサーバー、Oracle Stream Analytics Visualizer、コマンドライン管理インタフェースおよびOracle JDeveloper統合開発環境(IDE)で構成されます。

Oracle Stream Analyticsサーバーは、Oracle Stream Analyticsアプリケーションを実行するために、論理的に関連付けられたリソースおよびサービスをホストします。サーバーはドメインにグループ化され、ドメインとして管理されます。1つのドメインは1つのサーバー(スタンドアロンサーバー・ドメイン)または多くのサーバー(マルチサーバー・ドメイン)を持つことができます。Oracle Stream Analytics VisualizerおよびOracle Stream Analytics管理コマンドライン・インタフェースを介して、Oracle Stream Analyticsドメインおよびサーバーを管理します。

Webベースのユーザー・インタフェースであるOracle Stream Analytics Visualizerで、Oracle Stream Analyticsサーバー上で実行されるOracle Stream Analyticsアプリケーションのデプロイ、構成、テストおよび監視を行うことができます。

Oracle Stream Analytics管理コマンドライン・インタフェースを使用すると、コマンドラインと構成ファイルを使用してサーバーを管理できます。たとえば、ドメインの起動および停止や、アプリケーションのデプロイ、一時停止、再開およびアンインストールが可能です。

12cリリース用のOracle JDeveloperには、Oracle Stream Analyticsアプリケーションの設計、開発、テストおよびデプロイをサポートする統合フレームワークが含まれています。

Oracle Stream Analyticsは、複雑なイベント処理操作を簡略化し、技術的バックグラウンドのないユーザーでも使用できるようにするために開発されました。

1.2 アプリケーション・プログラミング・モデル

Oracle Stream Analyticsアプリケーションは、イベント・ソースからのデータ・ストリーミングを受信および処理します。そのデータは、監視装置、金融サービス企業、自動車などの様々な場所の1つから来ている可能性があります。アプリケーションはデータの監視中に、パターンの検出と応答、指定された条件を満たすイベントの検索と他のアプリケーションへの警告、急速に変化するデータに基づいた即時にアクションが必要なその他の動作の実行などを行うことができます。

Oracle Stream AnalyticsはSEDAと呼ばれるイベント駆動アーキテクチャを使用し、アプリケーションはキューによって接続された複数のステージ(ノード)に分解されます。Oracle Stream Analyticsでは、チャネル・コンポーネントはキューを表し、その他すべてのコンポーネントはステージを表します。EPN内のすべてのコンポーネントは、データの処理中における役割を持ちます。

イベント処理ネットワーク(EPN)は、データをイベントに変換するアダプタ経由でEPNに入るデータに対して直線的になっています。変換後、イベントは片方の端からもう片方の端までステージを通過します。EPN内の様々なステージで、コンポーネントは必要に応じてロジックの実行や外部コンポーネントとの接続の作成を行うことができます。

図1-1 Oracle Stream Analyticsアプリケーション

Oracle Stream Analyticsアプリケーションには、次の特長があります。

- データベース・プログラミング・モデルを活用したアプリケーション: 一部のOracle Stream Analyticsアプリケーションのプログラミング・モデルは、データベース・プログラミングにおける概念を拡張したものです。Oracle Continuous Query Language(Oracle CQL)で問合せを実行できるタプルであるという点において、イベントはデータベースの行と同じです。Oracle CQLはSQLを拡張したものですが、ストリーミング・データに対して動作するように設計されています。

- 固有の機能の役割を示すステージ: EPNの構造が、ネットワークを流れるイベントに対してロジックを実行することを可能にしています。さらに、ステージによって、コードが検出するイベント・パターンに基づいて複数の下流方向に分岐するネットワークを持つ複数の処理パスを取得することが可能になっています。

- イベント・シンクおよびイベント・ソースとして動作することによってEPN経由でイベントを転送するステージ: EPN内のステージは、イベント・シンクとしてイベントを受信でき、イベント・ソースとしてイベントを送信できます。イベント・シンクとは、特定のイベントをリスニングして処理するロジックを実装するJavaクラスです。

- ストリームまたはリレーションとして処理されるイベント: チャネルはイベントをEPNのあるステージから別のステージに伝達します。チャネルは、ストリームまたはリレーション内のイベントを伝達します。ストリーム・チャネルおよびリレーション・チャネルは、どちらもイベントをコレクションに挿入し、ストリームを次のEPNステージに送信します。ストリーム内のイベントをこのストリームから削除することはできません。リレーション内のイベントは、リレーションに挿入、リレーションから削除、およびリレーションで更新することができます。挿入、削除および更新の各操作では、リレーション内のイベントは常に特定の時点に関連付けられている必要があります。

1.3 イベント処理ネットワーク内のコンポーネントの役割

Oracle Stream Analyticsアプリケーションの中核はEPNです。EPNの構築は、ネットワークを通過する処理イベント内で役割を持つコンポーネントに接続することによって行います。Oracle Stream Analyticsアプリケーションを開発する場合は、目的の機能を達成するためにどの種類のコンポーネントが必要かを指定します。

EPNを作成する最善の方法は、Oracle JDeveloperを使用してコンポーネントの追加、構成および接続を行うことです。EPNは概ね直線形で、イベントは左から入って右に向かってEPNを通過してゆき、右端で終了します。

EPNコンポーネントは、次の方法を提供しています。

- 外部ソースとのイベント・データの交換: イベント・データを含むデータをEPNに渡したりEPNから出す方法を追加するために、アプリケーションのEPNを外部データベース、キャッシュ、HTTPメッセージ、Java Message Service (JMS)メッセージ、ファイルおよびビッグ・データ・ストレージに接続できます。

- アプリケーション・コードで処理できるイベント・タイプとしてのモデル・イベント・データ: アプリケーション・コードからアクセスして操作できるように、イベント・データをモデリングするイベント・タイプを実装または定義できます。

- イベントの問合せおよびフィルタ: Oracle CQLを使用すると、データベースのデータを問い合せるようにイベントを問い合せることができます。Oracle CQLには、特にストリーミング・データを問い合せる機能が含まれます。プロセッサ・コンポーネントを追加することによって、Oracle CQLコードをEPNに追加できます。すべてのEPNプロセッサはOracle CQLプロセッサです。

- イベント処理用のJavaロジックの実行: 他のEPNステージと同じ方法で、イベントの送信および受信を行うJavaクラスを追加できます。これらのクラスのロジックでは、イベントから値を取得したり、新しいイベントを作成したりできます。

1.4 Oracle CQL

Oracle CQLはStructured Query Language (SQL)の拡張で、同じキーワードおよび構文を持ちますが、ストリーミング・データ独自の側面をサポートする機能を持っています。

イベントは、概念的にデータベース表の行に対応しています。ただし、イベントと表の行の重要な違いは、イベントでは1つのイベントは必ず時間的に別のイベントの前または後にあり、ストリームは無限に続き変化し続ける可能性がある点です。

リレーショナル・データベースでは、データは相対的に静的で、ユーザーが追加、削除および変更操作などのトランザクションを開始したときに変更されます。一方、イベント・データ・ストリームは、イベントが到着した際に問合せが調べる場所であるEPNに常に流れ込んできます。

連続した時系列的な性質を持つストリーミング・データを最大限に活用するために、Oracle CQLを使用して次のことができます。

- イベントの問合せ対象となる特定の期間または範囲のウィンドウの指定。たとえば、5秒間のすべてのイベントなどです。

- 問合せ対象となる行と呼ばれる特定のイベント数のウィンドウの指定。すべての連続した10イベントなどです。

- ストリームに対して問合せを実行する頻度の指定。たとえば、問合せはすべての5秒間を5秒後のイベントのウィンドウにスライドできます。

- 特定のイベントの特性に基づいた受信ストリームの複数のストリームへの分割(パーティション化)。受信する取引イベント内の特定の銘柄記号ごとに、問合せに新しいストリームを作成させることができます。

さらにOracle CQLは、ビューや結合など、おなじみのSQLの一般的な機能もサポートしています。たとえば、ストリーミング・イベント・データとリレーショナル・データベース表またはキャッシュ内のデータの結合を含むOracle CQLコードを記述できます。

Oracle CQLにはJavaクラス内で機能を組み合せる問合せをサポートするデータ・カートリッジが含まれ、データ・カートリッジを通して拡張可能です。たとえば、空間計算およびJDBC問合せをサポートするデータ・カートリッジがあります。空間データ・カートリッジは、複雑な多角形や円、3D位置および空間クラスタリングなどの多数の移動オブジェクトをサポートしています。

1.5 Oracle Stream Analyticsのテクノロジ

Oracle Stream Analyticsは、アプリケーション・ロジックの開発機能およびアプリケーションのデプロイおよび構成機能を提供する次の標準テクノロジによって作成されています。

- Javaプログラミング言語: Oracle Stream Analyticsサーバー機能の多くがJavaプログラミング言語で記述されています。Javaは、イベントBeanおよびSpring Bean用のロジックの記述に使用する言語です。

- Oracle Stream AnalyticsはSpring構成モデルを大きく活用しています。Springは、開発者がJavaアプリケーションの部品の接続および構成に使用するテクノロジの集合です。Oracle Stream Analyticsアプリケーションは、Spring Frameworkの機能をサポートするJavaコンポーネントであるSpring Beanとしてのロジックの追加もサポートします。
Springの詳細は、プロジェクトのWebサイトを参照してください。 http://www.springsource.org/get-started

- OSGi: Oracle Stream Analyticsアプリケーション・コンポーネントは、OSGiバンドルとしてアセンブルおよびデプロイされます。OSGiの詳細は、次を参照してください。http://en.wikipedia.org/wiki/OSGi

- XML: Oracle Stream Analyticsアプリケーション構成ファイルは、XMLで記述されています。これらのファイルには、EPNステージとその他の設計時の構成との関係を定義するアセンブリ・ファイルが含まれています。Oracle CQL問合せなどのアプリケーションがデプロイされた後に変更できる設定を含む個別の構成XMLファイルです。

- SQL: Oracle CQLは、ストリーミング・データを使用するアプリケーションの必要性に対処するために設計された機能でSQLを拡張します。

- Hadoop: Oracle CQLの開発者は、問合せのコードからビッグ・データHadoopデータ・ソースにアクセスできます。Hadoopはオープンソース・テクノロジであり、これを使用してクラスタにまたがって分散された膨大なデータ・セットにアクセスできます。Hadoopソフトウェアの特徴の1つに、リレーショナル・データベースに保存されていない膨大な量のデータへのアクセスを可能にするということが挙げられます。
Hadoopの詳細は、HadoopプロジェクトのWebサイトhttp://hadoop.apache.org/を参照してください。

- NoSQL: Oracle CQLの開発者は、問合せのコードからビッグ・データNoSQLデータ・ソースにアクセスできます。Oracle NoSQLデータベースは、分散型のキー値データベースです。Oracle NoSQLでは、データは特定のストレージ・ステージで記述されるキー-値ペアで格納されます。ストレージ・ステージは、高可用性、ステージ失敗のイベントにおける高速フェイルオーバー、および問合せの最適なロード・バランシングを確実にするためにレプリケートされます。
Oracle NoSQLの詳細は、Oracle Technology Networkページhttp://www.oracle.com/technetwork/products/nosqldb/を参照してください。

- RESTインバウンド・アダプタおよびRESTアウトバウンド・アダプタ: RESTインバウンド・アダプタおよびRESTアウトバウンド・アダプタでは、HTTP Postリクエストからのイベントの使用と、EPNで処理されるイベントの受信が可能です。

- MBean API (JMXテクノロジ): 管理操作および動的なEPN変更が可能です。

- Oracle Business Rules: 独自のビジネス・ロジックの定義およびアプリケーションの構築が可能です。

1.6 Oracle Stream Analyticsの高度なユースケース

この項のユースケースでは、Oracle Stream Analyticsアプリケーションに固有の用途を説明します。

ファイナンシャル: 即応的なカスタマ・リレーションシップ

顧客と関係の強化を目的としたイニシアチブの一環として、あるリテール銀行は、個々の顧客の購入パターンと位置情報に応じたクーポンを発行する企画を立てました。

銀行は、顧客が最もよく使用するATM活動地域の地理データを含む現金自動預け払い機(ATM)データを収集します。銀行は、また、クレジット・カード取引の情報を取得しました。このデータを使用すれば、銀行は、顧客がどこにいて何を買う可能性が高いかという情報に基づき、購入インセンティブ(クーポンなど)をリアルタイムで顧客に送付できます。

Oracle Stream Analyticsアプリケーションは、ATMやクレジット・カードの取引という形でイベント・データを受信します。Oracle CQL問合せは、GPS座標および近くで購買意欲がありそうなものを使用して、顧客の位置を抜き出すパターンへと受信イベントをフィルタします。この一時データが、銀行で保存されている顧客のプロファイル・データと照合されます。一致するものが見つかると、購入インセンティブがモバイル・デバイスなどを介して顧客にリアルタイムで送信されます。

通信事業: リアルタイム課金

モバイル・データ使用の著しい増加に伴い、広い携帯電話顧客基盤を抱える電話通信会社が、その課金モデルを定額モデルからリアルタイムでの使用量に応じた利用回数制課金モデルへ変えようとしています。

この会社はモバイル・デバイスに割り当てられたIPアドレスを追跡し、これを保存されたユーザー・アカウント・データと関連付けています。(より詳細なデータ・プラン使用状況を得るため)ディープ・パケット・インスペクション(DPI)装置およびIPサーバーから追加データを収集し、Hadoopベースのビッグ・データ・ウェアハウスに挿入します。

Oracle Stream Analyticsアプリケーションは、リアルタイムのイベント・データとして使用状況情報を受信します。Oracle CQL問合せの発行と、一時使用状況データと保存されている顧客アカウント・データとの関連付けにより、アプリケーション側で請求要件が決定されます。

エネルギー: ビッグ・データの分析による効率改善

データ管理デバイスおよびサービスを提供するある企業は、総所有コストを削減するため、データ・センターのコーディネーションとエネルギー管理を改善する必要があります。この企業にとって必要なのは、より詳細なセンサーおよびデータ・センターのレポートです。

この企業は現在、異種リソースからエネルギー使用状況に関するセンサー・データを受信しています。各センサーからのデータを個別に分析し、その妥当性を確認した上で、他のセンサーからのデータと集約し、エネルギーをより効率的に使用できるパターンを特定する必要があります。

個別のOracle Stream Analyticsアプリケーションは、2層のアプローチを提供します。

あるアプリケーションは、数千のデータ・センターの1つ1つにデプロイされており、イベント・データとしてセンサー・データを受信します。このアプリケーションは、センサー・データを表すイベントに対して問合せを行い、そのセンターのローカルな使用状況を分析し、障害や問題のあるイベントをフィルタリングし、必要に応じてアラートを送信します。

複数のセンター管理サイトにデプロイされた別のアプリケーションが下層アプリケーションからのイベント・データを受信します。このアプリケーションはシステム全体からのデータを集約し、整合性に関する問題を特定し、パターンについてのレポートに使用するデータを生成します。

2 Oracle JDeveloperクイック・リファレンス

Oracle Stream Analyticsアプリケーション開発タスクは、12cリリース用のSOA製品コンポーネントを使用したOracle JDeveloperの多くの方法で実行できます。Oracle JDeveloperを初めて使用する場合、それに精通するにつれて、同じタスクを行う別の方法を見つけることになるでしょう。

詳細は、http://www.oracle.com/technetwork/middleware/complex-event-processing/downloads/index.htmlを参照してください。

次の各項で、各タスクを見つける方法の1つを説明します。この章の構成は、次のとおりです。

- アクセシビリティ・オプションの設定

- Oracle Stream Analyticsのサポート

- Oracle JDeveloperウィンドウのオープン

- Oracle Stream Analyticsプロジェクトの作成

- プロジェクト・テンプレート

- アセンブリ・ファイルおよびコンポーネント構成ファイル

- プロジェクト・ソース・ファイルへのパスの設定

- プロジェクトレベルのアクションの実行

- ZipまたはJARファイルのインポート

- EPNダイアグラムの機能

- コンポーネント・ウィンドウ。

- コンテキスト・メニュー。

2.1 アクセシビリティ・オプションの設定

JDeveloperには、スクリーン・リーダー、スクリーン拡大鏡、キーボード・ナビゲーション用の標準ショートカット・キーのサポートなどのアクセシビリティ・オプションが用意されています。フォントのサイズや色、オブジェクトの色や形などを変えて、判読性を高めるためにJDeveloperをカスタマイズすることもできます。JDeveloperのアクセシビリティを構成する方法の詳細および手順は、『Oracle JDeveloperによるアプリケーションの開発』のOracle JDeveloperのアクセシビリティについての情報に関する項を参照してください。

2.2 Oracle Stream Analyticsのサポート

Oracle JDeveloperをStudio開発者(すべての機能)ロールで起動すると、Oracle Stream Analyticsアプリケーションを作成するためのフル機能セットが提供されます。図2-1に、Oracle JDeveloperで開いたOracle Stream Analyticsアプリケーションを示します。

図2-1 Oracle JDeveloperでのOracle Stream Analyticsアプリケーション

2.3 Oracle JDeveloperウィンドウのオープン

「ウィンドウ」メニューを使用して、「コンポーネント」ウィンドウなどの必要なOracle JDeveloperウィンドウを表示します。「コンポーネント・ウィンドウ」を参照してください。

2.4 Oracle Stream Analyticsプロジェクトの作成

「ファイル」メニューを使用して、次のプロジェクト・ファイルを作成します。

新しいOracle Event Processingアプリケーションの作成

「ファイル」→「新規」→「アプリケーション」→「OEPアプリケーション」の順に選択します。

アプリケーションは、プロジェクトのコンテナです。

新しいOracle Event Processingプロジェクトの作成

「ファイル」→「新規」→「プロジェクト」→「OEPプロジェクト」の順に選択します。

プロジェクトをアプリケーションに追加します。

Oracle Event Processingバンドルのインポート

「ファイル」→「インポート」→「新規プロジェクトへのOEPバンドル」の順に選択します。

既存のプロジェクトをアプリケーションに追加できます。「EclipseプロジェクトのOracle JDeveloperへのインポート」に説明があるように、Eclipseプロジェクトをインポートする場合はこのオプションを使用します。

新しいプロジェクト・ライブラリの作成

「ファイル」→「新規」→「プロジェクト」→「OEPライブラリ・プロジェクト」の順に選択します。

ライブラリをプロジェクトに追加して、プロジェクト間で共有できるユーティリティや通常Javaクラスなどの追加機能を提供します。

2.5 プロジェクト・テンプレート

プロジェクトを作成する際、プロジェクトのベースとなるOracle Stream Analyticsアプリケーション・テンプレートを選択できます。テンプレートによって、EPNや次のタイプのプロジェクトのアセンブリ・ファイルおよび構成ファイルを含む基本機能が提供されます。

空のOracle Stream Analyticsアプリケーション用の基本構造を提供する空のOEPプロジェクト・テンプレート。他のテンプレートにニーズを満たすものがない場合、このアプリケーション・テンプレートを使用します。

外国為替アプリケーションをシミュレートするFXテンプレート。

Hello Worldメッセージをサーバー・コンソールに送信する単純なアプリケーションを提供するHello Worldテンプレート。

株式市場イベントの受信をシミュレートし、価格や量の変更シグナルを生成するシグナル生成テンプレート。

2.6 アセンブリ・ファイルおよびコンポーネント構成ファイル

アセンブリ・ファイルは、EPNダイアグラム・ステージおよび構造を記述するコンテキスト・ファイルです。コンポーネント構成ファイルには、EPNステージのコンポーネント構成および動的パラメータを記述します。アプリケーションには、1つ以上のアセンブリ・ファイルおよび1つ以上の構成ファイルがあります。

Oracle JDeveloperは、コンポーネントをEPNに追加し、接続を作成した際に作成されるデフォルトのアセンブリ・ファイルおよび構成ファイルを提供しています。デフォルトで、アセンブリ・ファイルの名前は<Project_Name>.context.xmlで、構成ファイルの名前はprocessor.xmlです。

コンポーネントをEPNに追加する際に、デフォルトの構成ファイル名を別のファイルに変更できます。別のファイルがすでに存在する場合、Oracle JDeveloperはそのファイルの構成を保存します。ファイルが存在しない場合、Oracle JDeveloperはファイルを作成します。たとえば、すべてのアダプタ構成情報をadapter.xml構成ファイルに保存することができます。

アセンブリ・ファイルおよび構成ファイルを明示的に作成することもできます。「アセンブリ・ファイルおよび構成ファイル」を参照してください。

2.7 プロジェクト・ソース・ファイルへのパスの設定

Oracle Stream Analyticsソース・ファイルへのパスを設定するには、プロジェクトを選択して「編集」→「プロパティ」→「プロジェクトのソース・パス」を選択します。

2.8 プロジェクトレベルのアクションの実行

次のオプションがあるコンテキスト・メニューを表示するには、「アプリケーション」ウィンドウでOracle Stream Analyticsプロジェクトを選択して右クリックします。

「EPNダイアグラムを開く」: Oracle Stream Analytics EPNダイアグラムを表示します。「EPNダイアグラムの機能」を参照してください。

「JDBCコンテキストの構成」: このオプションを使用してJDBCコンテキストを構成します。JDBCコンテキストは、Oracle JDBCデータ・カートリッジのインスタンス用のアプリケーション・コンテキストを定義します。Oracle以外のJDBCドライバを使用する場合のみこのオプションを使用します。

「空間コンテキストの構成」: このオプションを使用して空間コンテキストを構成し、複雑な多角形や円、3D位置、空間クラスタリングなどの多数の移動オブジェクトを管理します。

「デプロイ」→oepプロファイル: このオプションを使用して、Oracle Stream Analyticsデプロイメント・バンドルを選択または新しいデプロイメント・バンドルをアセンブルします。

「デプロイ」→「新規デプロイメント・プロファイル」: アプリケーション用にデプロイメント・プロファイルを作成します。アプリケーションは任意の数のデプロイメント・プロファイルを持つことができます。

暗号化マネージャ: このオプションを使用して、アプリケーションを暗号化します。

2.9 ZipまたはJARファイルのインポート

「インポート」→「新規プロジェクトへのOEPバンドル」を使用して、zipまたはJARファイルをOracle JDeveloperにインポートします。コマンドラインからのzipまたはJARファイルのインポートはできません。

2.10 EPNダイアグラムの機能

EPNダイアグラムには、EPNの作成および編集の際に使用できる様々な機能があります。EPNダイアグラムはデフォルトで最適なレイアウトを使用します。EPNダイアグラムでコンポーネントの追加、移動および削除を行うと、ダイアグラムはレイアウトの更新と調整を行います。

EPNダイアグラムのオープン

1. [プロジェクト名]→「OEPコンテンツ」の順に展開します。

2. 「EPNダイアグラム」をダブルクリックします。
中央ペインのEPNタイプタブでEPNダイアグラムが開きます。EPNタブの隣には、「イベント・タイプ」タブがあります。「イベント・タイプ」タブでイベント・タイプを作成できます。EPNタブの左ペインの下部には、「EPNダイアグラム」 - 「構造」および「サムネイル」も表示されます。「構造」ビューは、EPNダイアグラムのコンポーネント・ツリーを表示します。

イベント・タイプの作成

1. 「EPNダイアグラム」を開きます。
中央ペインのEPNタブでEPNダイアグラムが開きます。

2. EPNタブの隣にある「イベント・タイプ」タブを選択します。

3. イベント・タイプ情報を入力します。
イベントの作成方法の詳細は、「イベント・データを運ぶイベント・タイプの作成」を参照してください。

コンポーネントの追加

「コンポーネント」ウィンドウからEPNの空白領域にコンポーネントをドラッグして、EPNダイアグラムを構築します。「コンポーネント・ウィンドウ」を参照してください。

コンポーネントの削除

コンポーネントを右クリックしてコンテキスト・メニューから「削除」を選択するか、コンポーネントを選択して[Delete]キーを押します。

コンポーネント名の変更

1. EPNダイアグラムでコンポーネントを選択します。
Oracle JDeveloperで、コンポーネントがハイライトされます。

2. コンポーネント名をクリックします。
インライン名前エディタが表示されます。

3. 名前を変更します。

4. EPNダイアグラムの空白領域をクリックします。
インライン名前エディタが閉じます。

エディタ

EPNは、XMLソース・コード、プロパティ・シート、EPNダイアグラム、マニフェスト・エディタなどの様々なOracle JDeveloperエディタで編集できます。エラーを示す検証の注釈は、すべてのエディタで表示されます。Oracle CQL文を作成する際に、エディタは次の機能を提供します。

- 構文の強調表示

- コード補完

- 構文の検証

- 動的セマンティク検証

- パラメータ化されたOracle CQL文

パラメータ化された問合せには、バインディング・ブロックを追加できます。バインディング・ブロックを記述する際には、コード補完によってバインディングIDと現在のプロセッサ・スコープ内の使用可能な問合せIDのリストが表示されます。次の例で、問合せにバインディング・ブロックを追加する方法を示します。

<query id="helloworldRule">
<![CDATA[ select :1 from helloworldInputChannel ]]>
<bindings>
<binding id="helloworldRule">
<params id="param1">'My message is here: ' || message as message</params>
</binding>
</bindings>

バッジ

バッジとは、ステージ上に表示される小さいアイコンです。バッジには、コンポーネントの追加情報が表示されます。たとえば、検証エラーやコンポーネントについての警告が存在する場合、EPNエディタはそのコンポーネントにエラーまたは警告バッジを表示します。バッジを表示させる原因となった状態が解決されると、バッジは消えます。

- バッジにカーソルを置くと、関連するメッセージが表示されます。注釈バッジをクリックすると、関連するメッセージと詳細情報へのリンクが表示されます。

拡大または縮小

次の方法で、EPNダイアグラムの拡大および縮小を行うことができます。

- [Ctrl]キーを押しながらマウスをスクロールします。

- エディタ・ツール・バー上での事前定義されたリストからズーム値を選択します。

- サムネイル・パネルを選択するかオープンして、マウスをスクロールします。

EPNダイアグラムの印刷

1. EPNエディタを開いた状態で、「ファイル」→「印刷プレビュー」の順に選択します。

2. 「印刷プレビュー」ダイアログで設定を確認し、「印刷」をクリックします。

EPNダイアグラムの画像へのエクスポート

1. 「ダイアグラム」→「ダイアグラムの公開」の順に選択します。

2. ファイル名を入力し、適切なファイル・タイプを選択します。

3. 「保存」を選択します。

ネストしたコンポーネント

親ステージの中に子ステージを定義する場合、子ステージはネストしています。ネストしたステージは、EPNダイアグラムでインデントされたボックスに表示されます。ネストしたステージは編集できませんが、削除はできます。

親ステージのみが子ステージをリスナーとして指定できます。ネストした要素から参照をドラッグできますが、ネストされた要素に参照をドラッグすることはできません。

外部コンポーネント

外部コンポーネント(外部ステージ)とは、別のアプリケーションで定義されたコンポーネントです。EPNダイアグラムでは、外部ステージはゴースト・コンポーネントとして表示されます。外部ステージを参照するには、アセンブリ・ファイルで次の構文を使用します。

- FOREIGN-APPLICATION-NAME:FOREIGN-STAGE-ID

注意:

外部ステージを参照する場合、アプリケーションのアセンブリ、デプロイ、および再デプロイの際に外部ステージの依存性を考慮する必要があります。

2.11 コンポーネント・ウィンドウ

コンポーネント・ウィンドウは、EPNの構築用にOracle Stream Analyticsコンポーネントを提供します。EPNに追加したいコンポーネントをEPNキャンバスの空白領域にドラッグし、コンポーネント・ウィザードを使用して構成します。すでにダイアグラム内にあるコンポーネントを新しいコンポーネントにドラッグして、コンポーネントをEPNに追加します。新しいコンポーネントはドラッグしたコンポーネントの右側に配置されます。手順を追った説明は、「基本的なアプリケーションの作成」を参照してください。

次のリストは、コンポーネント・ウィンドウで使用可能なコンポーネントです。

ベースEPNコンポーネント:

- アダプタ: アダプタを使用すると、EPNを外部入力ソースまたは外部データ・ソースと接続できます。アダプタ・コンポーネントは、アプリケーション要件によってカスタマイズ可能な一般的なアダプタです。

- Bean: Beanを使用すると、標準SpringベースBeanに準拠し、Javaプログラミング言語で記述されたアプリケーション・イベント・ロジックを定義できます。http://www.springsource.org/spring-frameworkを参照してください。

- キャッシュ: キャッシュを使用すると、アプリケーションからのアクセス準備のために直近にアクセスされたデータのコピーを保持するランダム・アクセス・メモリ(RAM)領域を設定できます。EPN内に、キャッシュ・コンポーネントに追加するキャッシュ・システム・コンポーネントが存在している必要があります。

- チャネル: チャネルを使用すると、EPN内でステージからステージへイベントを転送できます。

- イベントBean: イベントBeanを使用すると、JavaBeans仕様に準拠し、Javaプログラミング言語で記述されたアプリケーション・イベント・ロジックを定義できます。イベントBeanは、標準のSpringベースBeanのOracleによる拡張です。

- プロセッサ: Oracle CQL問合せコードをアプリケーションに追加する場合は、プロセッサを使用します。Oracle CQLは、ビッグ・データHadoopコンポーネントおよびNoSQLDBコンポーネントから読み取ることができます。

- 表: 表を外部リレーション・ソースとして使用します。表を上位コンポーネントのリスナーとして構成すると、表を使用してデータベースにイベントを格納できます。

- 拡張アダプタ:

- CSVInbound: CSVInboundアダプタを使用すると、カンマ区切り形式のデータをEPNで受信できます。

- CSVOutbound: CSVOutboundアダプタを使用すると、カンマ区切りデータをEPNの外部に送信できます。

- HTTPパブリッシャ: HTTPパブリッシャ・アダプタを使用するとJavaScript Object Notation (JSON)イベント・データをEPN外部のWebベース・ユーザー・インタフェースに送信できます。

- HTTPサブスクライバ: HTTPサブスクライバ・アダプタを使用すると、EPNでJavaScript Object Notation (JSON)イベント・データを受信できます。JSONイベント・データは、ユーザー・アクションによってイベントを生成するHTTPサーバーから送信されます。

- JMSインバウンド: JMSインバウンド・アダプタを使用して、EPNでJava Message Service (JMS)トピックを受信できます。

- JMSアウトバウンド: JMSアウトバウンド・アダプタを使用すると、JMSトピックをEPN外部に送信できます。

- RESTインバウンド: RESTインバウンド・アダプタを使用すると、HTTP Postリクエストからのイベントが使用されます。

- RESTアウトバウンド: RESTアウトバウンド・アダプタを使用すると、EPNで処理されるイベントを受信できます。

- ビッグ・データ拡張機能

- Hadoop: Hadoop Distributed File System (HDFS)内の大量のデータにアクセスするためのOracle CQLプロセッサのデータ・カートリッジ拡張機能です。HDFSは、非リレーショナル・データ・ストアです。

- NoSQLDB: Oracle NoSQL Database内の大量のデータにアクセスするためのOracle CQLプロセッサのデータ・カートリッジ格納機能です。Oracle NoSQLDB Databaseには、キー/値のペアでデータが格納されます。

- HBase: HBase Database内にある大量のデータにアクセスするOracle CQLプロセッサ用のデータ・カートリッジ拡張です。

- キャッシュ・システム

- コヒーレンス・キャッシュ・システム: コヒーレンス・キャッシュ・システム・コンポーネントを使用してシステムを設定すると、共有リソース上のローカル・キャッシュ内に格納される一貫性のあるデータを維持できます。

- ローカル・キャッシュ・システム: ローカル・キャッシュ・システムを使用すると、データ・ファイルへのネットワーク・アクセスを高速化できます。

- CQLパターン
パターンの使用方法の詳細は、「Oracle CQLパターンの使用」を参照してください。

- 平均化ルール: 平均化ルール・コンポーネントを使用すると、指定したイベント数(表の行)の平均を計算できます。

- 不足イベント・ルールの検出: 不足イベント・ルールの検出コンポーネントを使用すると、期待されるイベントが発生しない場合に検出を行うことができます。

- パーティション化ルール: パーティション化ルール・コンポーネントを使用すると、イベント・パネルをイベント・プロパティによってパーティション化し、パーティション内の指定されたイベント数を表示できます。

- 後続のフィルタ問合せを使用した選択: 後続のフィルタ問合せを使用した選択コンポーネントを使用すると、イベントをフィルタし、フィルタ基準を通過したイベントをビューに移入できます。

- 複数ストリームからの選択: 複数ストリームからの選択コンポーネントを使用すると、2つのストリームを結合して相関イベントから選択することができます。

- FromのあるSelect: FromのあるSelectコンポーネントを使用すると、特定のプロパティによってチャネルからイベントを選択できます。

- パターン一致を使用したSELECT: パターン一致を使用したSELECTコンポーネントを使用すると、特定のプロパティ値によってチャネルからイベントを選択できます。

注意:

Oracle JDeveloperには、Oracle CQLビジュアル・エディタは付属していませんOracle CQLビジュアル・エディタはOracle Stream Analytics Visualizerにあります。Oracle Stream Analyticsビジュアライザの使用のOracle Stream Analytics Visualizerを参照してください。

WLS拡張機能:

- RMIInbound: RMIInboundアダプタを使用すると、リモート・メソッド呼出し(RMI)プロトコルによってOracle WebLogic Serverから送信される着信データを受信できます。

- RMIOutbound: RMIOutboundアダプタを使用すると、RMIプロトコルによってOracle WebLogic Serverにデータを送信できます。

EDNアダプタ:

- EDNInbound: EDNInboundアダプタを使用すると、Oracle SOA Suiteイベント・ネットワークからの着信データを受信できます。

- EDNOutbound: EDNOutboundアダプタを使用すると、Oracle SOA Suiteイベント・ネットワークに発信データを送信できます。

2.12 コンテキスト・メニュー

EPNエディタの各ステージには、様々なステージに固有な機能に簡単にアクセスできるコンテキスト・メニュー項目のグループがあります。ステージを右クリックすると、コンテキスト・メニューを表示できます。コンテキスト・メニューを使用して、ステージ構成を編集できます。

様々なステージで、ステージ・ウィザードは同じですが、特定の値およびオプションの一部は読取り専用でグレー表示されます。

- 「構成のソースの追加」: プロジェクトに構成ファイルを追加します。

- 「Javaクラスの定義」: Javaクラスを作成できるウィザードを開きます。

- 「構成のソースの削除」。プロジェクトから構成ファイルを削除します。

- 「構成のソースに移動」: 対応するコンポーネント構成ファイルを開き、カーソルを適切な要素に移動します。

- 「アセンブリのソースに移動」: 対応するEPNアセンブリ・ファイルを開き、カーソルを適切な要素に移動します。

- 「Javaのソースに移動」: コンポーネントに対応するJavaソース・ファイルを開きます。

- 暗号化マネージャ: 暗号化されたすべてのパスワードを1箇所で編集できます。このオプションは、EPNダイアグラムおよびプロジェクト全体で有効化されます。

- 「削除」: EPNアセンブリ・ファイルおよびコンポーネント構成ファイルの両方からコンポーネントを削除します(適用可能な場合)。

注意:
対応するソース・アーティファクトが見つからない場合、これらのナビゲーション・オプションは無効になります。たとえば、構成XMLファイルにアダプタに対応するエントリがない場合、「構成のソースに移動」メニュー項目はグレー表示されます。

3 Oracle JDeveloperの利用手順

次の各項で、Oracle Stream AnalyticsタスクをOracle JDeveloperで実行する方法を説明します。

この章の構成は、次のとおりです。

- EclipseプロジェクトのOracle JDeveloperへのインポート

- プロジェクトへのライブラリの追加

- アプリケーション・ライブラリの作成

- アセンブリ・ファイルおよび構成ファイル

- リレーション・チャネルの構成

- アプリケーション・タイムスタンプ・チャネルの構成

- JavaBeanイベント・タイプの作成および登録

- タプル・イベント・タイプの作成および登録

- イベントBeanの作成

- Spring Beanの作成

- 表ソースの構成

- 表シンクの構成

- Oracle CQLパターンの使用

- Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

- ローカル・キャッシング・システムおよびキャッシュの構成

- Javaクラスのデバッグ

- イベント・インスペクタ・サービスによるテスト

- Oracle JDeveloperおよびサーバーの起動と停止

3.1 EclipseプロジェクトのOracle JDeveloperへのインポート

Oracle Stream Analytics Eclipseプロジェクトは、バンドルとしてOracle JDeveloperにインポートできます。バンドルとは、アーカイブ(zip)またはJARファイルとしてエクスポート可能なOracle Stream Analytics Eclipseプロジェクトです。EclipseプロジェクトをOracle JDeveloperにインポートするコマンドライン・コマンドはありません。

- EclipseプロジェクトのOracle JDeveloperへのインポート

- インポートしたプロジェクトのビルド

- Oracle Stream Analyticsサーバーの起動

- デプロイ

EclipseプロジェクトのOracle JDeveloperへのインポート

複数のアプリケーションまたはプロジェクトで構成されているEclipseプロジェクトはインポートできないことに注意する必要があります。インポートするEclipseプロジェクトは、Oracle Stream Analyticsプロジェクトとしてのみインポートできます。CoherenceプロジェクトまたはJavaプロジェクトはインポートできません。

EclipseからzipまたはJARファイルをインポートする場合、Oracle JDeveloper 12cはJDK1.7のみをサポートします。EclipseからJDK 1.6プロジェクトをエクスポートし、JDK1.7を使用してOracle JDeveloperにインポートすることはできません。JDK 1.7のEclipseからJDK 1.7のOracle JDeveloperに移行する必要があります。

注意:

JDK1.6 Eclipse Oracle Stream Analyticsアプリケーション・プロジェクトのインポートは可能ですが、Oracle JDeveloperはコンパイルの問題には対処しません。この場合、コンパイルの問題が発生した際は自己責任で対処します。

1. Eclipseで、EclipseプロジェクトをzipまたはJARファイルとしてエクスポートします。
ソース・ファイルとリソースを含めていることを確認します。

2. Oracle JDeveloperで、「ファイル」→「インポート」→「新規プロジェクトへのOEPバンドル」の順に選択します。
手順は、既存のOracle JDeveloperアプリケーションの有無によって異なります。

既存のアプリケーションがある場合、バンドルをアクティブなアプリケーションにインポートするための「プロジェクトとしてのOEPバンドルのインポート - ステップ1/2」ダイアログが表示されます。

a. 「ステップ1/2」ダイアログで、プロジェクトの名前を入力し、ディレクトリ名を使用するか変更し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ3/3」ダイアログが表示されます。

b. 「ステップ2/2」ダイアログでエクスポートしたEclipse zipファイルを探して選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション」にプロジェクトが表示されます。

既存のアプリケーションがない場合、プロジェクト用のアプリケーションを作成するための「プロジェクトとしてのOEPバンドルのインポート - ステップ1/3」ダイアログが表示されます。

a. 「ステップ1/3」ダイアログで、アプリケーションの名前および場所を入力し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ2/3」ダイアログが表示されます。

b. 「ステップ2/3」ダイアログで、プロジェクトの名前を入力し、ディレクトリ名を使用するか変更し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ3/3」ダイアログが表示されます。

c. 「ステップ3/3」ダイアログでエクスポートしたEclipse zipファイルを探して選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション」にプロジェクトが表示されます。

インポートしたプロジェクトのビルド

1. インポートしたアプリケーションを選択し、「ビルド」→<プロジェクト名>を選択します。

2. ログ・ウィンドウにクラスパスに追加JARファイルが必要だというエラーが表示された場合、トップレベルのプロジェクト・フォルダを選択し、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログが表示されます。

3. 「プロジェクト・プロパティ」ダイアログの左パネルで、「ライブラリとクラスパス」を選択します。
「ライブラリとクラスパス」ダイアログが表示されます。

4. 「ライブラリとクラスパス」ダイアログで、「Jar/ディレクトリの追加」をクリックします。
「アーカイブまたはディレクトリの追加」ダイアログが表示されます。

5. 「Jar/ディレクトリの追加」ダイアログで、追加する必要があるJARファイルを探します。

6. 「OK」をクリックします。

7. プロジェクトを再ビルドします。

8. すべての必要なファイルを探して追加できるまでこのプロセスを繰り返します。

9. ソース・コードに問題を見つけた場合は、クイック修正を使用してインポートの編成および追加を行います。

Oracle Stream Analyticsサーバーの起動

「Oracle JDeveloperおよびサーバーの起動と停止」を参照してください。

デプロイ

1. プロジェクトを右クリックします。
コンテキスト・メニューが表示されます。

2. コンテキスト・メニューから、「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。

3. 「デプロイメント・プロファイルの作成」ダイアログで、「OEPプロジェクト・デプロイメント・プロファイル」などのデプロイメント・プロファイルを選択し、名前を付けます。

4. 「OK」をクリックします。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログが表示されます。

5. 「OEPプロジェクト・デプロイメント・プロファイル」ダイアログでは、新規Oracle Stream Analyticsサーバー接続を作成または既存の接続を選択できます。
既存の接続を選択するには、次のようにします。

a. OEPサーバーへの接続ドロップダウン・リストで、使用する既存の接続を選択します。

b. 「OEPプロジェクト・デプロイメント・プロファイル」ダイアログで、デフォルトを使用または要求されるプロファイルの詳細を入力します。

c. 「OK」をクリックします。

新規接続を作成するには、次のようにします。

a. 「追加」(+)ボタンをクリックし、Oracle Stream Analyticsサーバー接続を作成します。
「OEPサーバー接続の作成」ダイアログが表示されます。

b. 「OEPサーバー接続の作成」ダイアログで、接続の詳細を入力します。
「OEPサーバー接続名」: SampleOEPConnection 「OEPサーバー・ホーム・パス」: /Oracle/Middleware/my_oep/ 「デフォルト値の使用」: 未チェックOEPサーバー・プロジェクト・ディレクトリ: user_projects/domains/sample_domain/defaultserverUse デフォルト値の使用: 未チェック ホスト: localhost ポート: 9002 デフォルト値の使用: 未チェック ユーザー名: oepadmin ユーザー・パスワード: welcome1 OEPサーバーの追加パラメータ: 空白

c. 「OEPサーバー接続の作成」ダイアログで、「接続のテスト」をクリックします。
問題がない場合、「接続のテスト」ボタンの下のメッセージ・ボックスに「成功」と表示されます。エラーとなった場合は、エラーを探して修正し、再試行します。

d. 「成功」と表示されたら、「OK」をクリックします。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログが表示されます。

e. 「OEPプロジェクト・デプロイメント・プロファイル」ダイアログで、デフォルトを使用または要求されるプロファイルの詳細を入力します。

f. 「OK」をクリックします。

MANIFEXT.MFを生成する手順:

- MANIFEXT.MFの再作成ボタンをクリックして、マニフェスト・ファイルを再生成します。
マニフェスト・ファイルとインポートおよびエクスポートされたパッケージが再生成されます。

6. プロジェクトを右クリックし、選択または作成したデプロイメント・プロファイルを選択します。
「<プロファイル名>のデプロイ」ダイアログが表示されます。

7. 「<プロファイル名>のデプロイ」ダイアログで、「OSGiバンドルのターゲット・プラットフォームへのデプロイ」を選択して「次へ」をクリックします。
「Summary」ダイアログ・ボックスが表示されます。

8. 「サマリー」ダイアログで設定を確認し、「終了」をクリックします。

9. デプロイが終了するまで、しばらく待ちます。
「デプロイメント - ログ」タブに、デプロイが完了したというメッセージが表示されます。アプリケーションの開始に問題がある場合は、自動的にアンデプロイされます。

10. サーバー・ログおよびデプロイ済アプリケーションのリストを参照します。
サーバー・ログの参照:

a. 「リソース」ウィンドウが開いていない場合は、「ウィンドウ」→「リソース」の順に選択します。
「リソース」ウィンドウが表示されます。

b. 「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。

c. 「OEPサーバー」を展開し、OEPサーバー接続のリストを表示します。

d. 接続を右クリックします。
コンテキスト・メニューが表示されます。

e. コンテキスト・メニューから、「OEPサーバー・ログ・ページを開く」を選択します。
OEPサーバー・ログ・ページが開き、サーバー・ログ・メッセージを確認できます。

デプロイ済のアプリケーションのリストの参照:

a. 「リソース」ウィンドウが開いていない場合は、「ウィンドウ」→「リソース」の順に選択します。
「リソース」ウィンドウが表示されます。

b. 「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。

c. 「OEPサーバー」を展開し、OEPサーバー接続のリストを表示します。

d. 「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。
OEPサーバー接続のリストが表示されます。

e. 「OEPサーバー」で、先ほどデプロイしたアプリケーションへの接続を展開します。
-OEP Server     -SampleOEPConnection       +Applications

f. 展開した接続で、「アプリケーション」を展開します。
デプロイ済アプリケーションの一覧とそれぞれのステータスが表示されます。たとえば、次のようなリストが表示されます。

application1 [RUNNING]
my_application2 [SUSPENDED}

3.2 プロジェクトへのライブラリの追加

ライブラリJARファイルをリソースとしてアプリケーションに追加できます。

1. Oracle JDeveloperで、プロジェクトを右クリックします。

コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで、「プロジェクト・ライブラリの追加」を選択します。

「プロジェクト・ライブラリの追加」ダイアログが表示されます。

3. 「プロジェクト・ライブラリの追加」ダイアログの「ライブラリJAR」フィールドで、アプリケーションに追加するライブラリJARファイルへ移動します。

4. 「OK」をクリックします。

JARファイルがプロジェクトの「リソース」に表示され、それに応じてプロジェクト・マニフェスト・ファイルが更新されます。

3.3 アプリケーション・ライブラリの作成

アプリケーション・ライブラリを作成して、同じドメインで実行するアプリケーション間で共有できます。

- Oracle Stream Analyticsライブラリ・プロジェクトの作成

- デプロイメント・プロファイルの作成およびデプロイ

Oracle Stream Analyticsライブラリ・プロジェクトの作成

1. Oracle JDeveloperで、「ファイル」→「ギャラリから新規作成」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの左ウィンドウの「OEP層」を、右ウィンドウで「OEPライブラリ・プロジェクト」を選択します。

3. 「OK」をクリックします。
「OEPライブラリ・プロジェクトの作成 - ステップ1/2」ダイアログが表示されます。

4. 「OEPライブラリ・プロジェクトの作成 - ステップ1/2」ダイアログで、プロジェクト名を入力し、オプションでディレクトリの場所を入力します。

5. 「次へ」をクリックします。
「OEPライブラリ・プロジェクトの作成 - ステップ3/2」ダイアログが表示されます。

6. 「OEPライブラリ・プロジェクトの作成 - ステップ2/2」ダイアログで、ライブラリ・プロジェクトに含めるJARファイルを探します。

7. 「OEPライブラリ・プロジェクトの作成 - ステップ2/2」ダイアログで、その他の情報を入力またはデフォルトを使用し、「終了」をクリックします。
ライブラリがドライバの場合、ライブラリが正しい順番でアクティブ化されるように「Library Extensionsへのデプロイ」チェック・ボックスをチェックします。

ライブラリ・プロジェクトがアプリケーションの「プロジェクト」に表示されます。

デプロイメント・プロファイルの作成およびデプロイ

1. ライブラリ・プロジェクトを右クリックし、「デプロイ」を選択します。

2. app_lib_profile-nを選択またはこのライブラリ用の新しいデプロイメント・プロファイルを作成します。

3. 「デプロイメント・アクション」ダイアログで、「ライブラリJARをOEPサーバーにデプロイします」を選択し、「次へ」をクリックします。

4. 「デプロイメント・サマリー」を確認し、「終了」をクリックします。

ライブラリがローカル・サーバーにデプロイされます。

注意:

12cでは、Oracle JDeveloperデプロイメント・プロファイルはローカルOracle Event Processing接続のみをサポートします。

5. Oracle Event Processingサーバーを再起動します。

3.4 アセンブリ・ファイルおよび構成ファイル

コンポーネントをEPNに追加して接続を作成した際に、Oracle JDeveloperはアセンブリ・ファイルおよび構成ファイルを作成します。デフォルトのものではなく、独自のアセンブリ・ファイルおよび構成ファイルを作成して使用することもできます。コンポーネント・ウィザードがデフォルトのprocessor.xmlファイルを表示する際に、作成したファイルでデフォルトを置換できます。アプリケーションには、1つ以上のアセンブリ・ファイルおよび1つ以上の構成ファイルがあります。

- アセンブリ・ファイルは、EPNダイアグラム・ステージおよび構造を記述するコンテキスト・ファイルです。デフォルトで、アセンブリ・ファイルの名前は<Project_Name>.context.xmlです。

- 構成ファイルには、EPNステージのコンポーネント構成および動的パラメータが記述されます。デフォルトで、構成ファイルの名前はprocessor.xmlです。

コンポーネントをEPNに追加する際に、デフォルトの構成ファイル名を別のファイルに変更できます。別のファイルがすでに存在する場合、Oracle JDeveloperはそのファイルの構成を保存します。ファイルが存在しない場合、Oracle JDeveloperはファイルを作成してそこに構成を保存します。たとえば、すべてのアダプタ構成情報をadapter.xml構成ファイルに保存することができます。コンポーネントを作成する際に構成設定を何も指定しない場合、入れる構成がないため、Oracle JDeveloperは新しい構成ファイルを作成しません。

注意:

XMLファイルの識別子および名前は大/小文字が区別されます。 アセンブリ・ファイルでコンポーネントIDを参照する場合は、同じ文字を使用してください。

このガイドの説明には、学習用のサンプルとなるアセンブリ・ファイルおよび構成ファイルが付いています。

3.4.1 アセンブリ・ファイルの作成

1. Oracle JDeveloperでプロジェクトを選択し、「ファイル」→「新規」→「ギャラリから」の順に選択します。

「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの「カテゴリ」で、「OEP層」を展開し、「OEPファイル」を選択します。

3. 「新規ギャラリ」ダイアログの「アイテム」で、「OEPアセンブリ・ファイル」を選択して「OK」をクリックします。

「OEPアセンブリ・ファイルの作成」ダイアログが表示されます。

4. 「OEPアセンブリ・ファイルの作成」ダイアログで、ファイル名およびディレクトリの場所を入力またはデフォルトを使用します。

プロジェクトと関連付けるアセンブリ・ファイルの名前を入力します。

5. 「OK」をクリックします。

左ペインのプロジェクトで、「OEPコンテンツ」→「Spring」に新規アセンブリ・ファイルが表示されます。

3.4.2 コンポーネント構成ファイルの作成

1. Oracle JDeveloperでプロジェクトを選択し、「ファイル」→「新規」→「ギャラリから」の順に選択します。

「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの「カテゴリ」で、「OEP層」を展開し、「OEPファイル」を選択します。

3. 「新規ギャラリ」ダイアログの「アイテム」で、「OEP構成ファイル」を選択して「OK」をクリックします。

「OEP構成ファイルの作成」ダイアログが表示されます。

4. 「OEP構成ファイルの作成」ダイアログで、ファイル名およびディレクトリの場所を入力またはデフォルトを使用します。

特定のコンポーネント、コンポーネントのグループ、またはコンポーネントのタイプと関連付ける構成ファイルの名前を入力します。

5. 「OK」をクリックします。

左ペインの「OEPコンテンツ」→「wlevs」のプロジェクトに新規構成ファイルが表示されます。

3.4.3 構成ファイルへのコンポーネントの追加

Oracle JDeveloperでは、「コンポーネント」ウィンドウから開いている構成ファイルにコンポーネントをドラッグできます。これは、アセンブリ・ファイルでは動作しません。

1. Oracle JDeveloperで、コンポーネントを追加する構成ファイルを開きます。

構成ファイルが中央パネルで開き、「コンポーネント」ウィンドウが右パネルに表示されます。

2. コンポーネントを追加したい構成ファイルにカーソルを置きます。

その場所に点滅するカーソルが表示されます。

3. 「コンポーネント」ウィンドウで、追加するコンポーネントを探します。

4. 開いている構成ファイルにコンポーネントをドラッグ・アンド・ドロップします。

対象のコンポーネントのウィザードが表示されます。

構成ファイル内の無効な場所を選択している場合、有効な場所を選択できるようにOracle JDeveloperはエラー・メッセージを表示します。

5. 構成ウィザードが要求する構成情報を入力し、「OK」をクリックします。

Oracle JDeveloperは構成ファイルに対象のコンポーネントの構成を追加し、必要に応じて対応するアセンブリ設定でアセンブリ・ファイルを更新します。

3.4.4 コンポーネントへの構成設定の追加

コンポーネントをEPNに追加する場合、カスタム構成設定を使用することもデフォルト構成を使用することもできます。デフォルト構成を使用する場合、Oracle JDeveloperは構成ファイルにそのコンポーネントのエントリを追加しません。また、構成プロセスで新しい構成ファイル名を指定した場合でも、Oracle JDeveloperは構成ファイルを作成しません。

後でデフォルト設定を使用することに決定した場合、「アセンブリ・ファイルおよび構成ファイル」に説明があるように構成ファイルを作成して完全なコンポーネント構成を追加するか、デフォルトのprocessor.xmlファイル内の構成を生成する必要があります。

次の例は、processor.xmlファイル内のAdapterOutputChannel用の構成エントリの生成方法を示しています。

チャネル構成の追加

1. EPNダイアグラムのチャネル・コンポーネントを右クリックします。

コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで「構成のソースの追加」を選択します。

processor.xmlファイルが開き、コンポーネントのデフォルト構成を表示します。デフォルト構成は編集してカスタマイズできます。

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application">
<channel>
<name>AdapterOutputChannel</name>
</channel>
</wlevs:config>

3. max-threads要素を追加してチャネルをマルチスレッド化します。

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application">
<channel>
<name>AdapterOutputChannel</name>
<max-threads>4</max-threads>
</channel>
</wlevs:config>

Oracle Stream Analyticsサーバーがこのチャネルのイベントを処理するために使用可能なスレッドの最大数は4です。

3.5 リレーション・チャネルの構成

デフォルトのチャネルは、名前、ID、システム・タイムスタンプ、および100ミリ秒(100,000,000ナノ秒)のタイムアウトのデフォルトのハートビートを持つ、シングル・スレッドのストリーム・チャネルです。詳細は、Oracle Stream Analyticsによるイベント処理用アプリケーションの開発のチャネルの構成を参照してください。アセンブリ・ファイルにis-relation="true"要素および属性を追加して、デフォルトのチャネルをリレーションに変更できます。

リレーション・チャネルは挿入、削除および更新操作をサポートしています。

1. Oracle JDeveloper EPNエディタで「チャネル」ステージを右クリックし、「アセンブリのソースに移動」を選択します。

アセンブリ・ファイルが表示されます。

2. アセンブリ・ファイルのチャネル定義の隣でカーソルが点滅します。

次のサンプルと同様の行がチャネル定義行です。

<wlevs:channel id="TestChannel" event-type="TestEventType"/>

3. チャネルをリレーションに変更するには、is-relation="true"設定を追加します。

<wlevs:channel id="TestChannel" event-type="TestEventType" is-relation="true" primary-key="testPrimaryKey" />

このチャネルをリレーションとして指定する場合は、primary-key属性も構成する必要があります。主キーは、各イベントを一意に識別する空白またはカンマ区切りのイベント・プロパティ名のリストです。

3.6 アプリケーション・タイムスタンプ・チャネルの構成

アプリケーションがチャネルにタイムスタンプを付けるように構成できます。この場合、イベントのタイムスタンプは、構成可能なwlevs:expression要素によって判定されます。標準的な式の例として、イベントでのプロパティへの参照があります。イベントに式がない場合、タイムスタンプは前のイベントから伝播されます。たとえば、別のダウンストリームOracle CQLプロセッサのアプリケーション・タイムスタンプ・チャネルにイベントを送信する、Oracle CQLプロセッサのシステム・タイムスタンプ・チャネルがある場合などです。

イベント・タイプが作成済である必要があります。チャネルは、データを正しいステージに送信するために、イベント・タイプを認識している必要があります。

1. デフォルト・チャネルを作成します。

2. アプリケーション・アセンブリ・ファイルでwlevs:application-timestamped子要素を追加します。

3. wlevs:application-timestamped子要素に、Oracle Stream Analyticsがタイムスタンプ値を生成するために使用するwlevs:expression子要素を指定します。次に例を示します。

<wlevs:channel id="fxMarketAmerOut" event-type="eventtype" >
<wlevs:application-timestamped>
<wlevs:expression>mytime+10</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

4. オプションのwlevs:application-timestamped属性、is-total-orderを構成します。trueの場合、is-total-order属性は、パブリッシュされたアプリケーション時間が最後に使用された値よりも必ず大きくなることを示します。

次に例を示します。

<wlevs:channel id="fxMarketAmerOut" event-type="eventtype" >
<wlevs:application-timestamped is-total-order="true">
<wlevs:expression>mytime+10</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

5. アセンブリ・ファイルを保存して閉じます。

3.7 JavaBeanイベント・タイプの作成および登録

1. イベント・タイプを追加するOracle JDeveloperプロジェクトを選択します。

2. 引数なしのpublicコンストラクタを持つJavaBeanを作成します。

3. オプション。Oracle Coherenceでイベントをキャッシュする場合は、クラスをシリアライズ可能にします。

4. JavaBeanにprivateフィールドおよびアクセッサ・メソッドを追加します。

5. Oracle JDeveloperのEPNダイアグラムを開いた状態で、「イベント」タブを使用してJavaBeanの名前などのイベント・タイプのプロパティを構成します。
「イベント」タブを使用すると、イベント・タイプの宣言および編集が可能です。作成または編集したイベント・タイプは、「イベント」タブを閉じる際にアプリケーション・アセンブリ・ファイルの対応するイベント・タイプ・リポジトリ・セクションに登録されます。

a. 「イベント・タイプの定義」でアプリケーション・アセンブリ・ファイルを選択します。

b. 「追加」(+)ボタンをクリックします。
「イベント・タイプの詳細」パネルが左側に表示されます。

c. 「イベント・タイプの詳細」で「JavaBeanで定義されるプロパティ」を選択します。

d. JavaBeanクラスの名前を入力します。

3.8 タプル・イベント・タイプの作成および登録

この手順では、Oracle Stream Analytics IDEのイベント・タイプ・リポジトリ・エディタを使用してタプルとしてのOracle Stream Analyticsイベント・タイプを作成および登録する方法について説明します。イベントを設計する際は、設計を『Oracle Fusion Middleware Oracle Stream Analyticsによるイベント処理用アプリケーションの開発』で説明されているイベント・データのタイプに限る必要があります。

Oracle JDeveloperでのタプル・イベント・タイプの作成

1. イベント・タイプを追加するOracle JDeveloperプロジェクトを選択します。

2. Oracle JDeveloperのEPNダイアグラムを開いた状態で、「イベント」タブを使用してJavaBeanの名前などのイベント・タイプのプロパティを構成します。
「イベント」タブを使用すると、イベント・タイプの宣言および編集が可能です。作成または編集したイベント・タイプは、「イベント」タブを閉じる際にアプリケーション・アセンブリ・ファイルの対応するイベント・タイプ・リポジトリ・セクションに登録されます。

a. 「イベント・タイプの定義」でアプリケーション・アセンブリ・ファイルを選択します。

b. 「追加」(+)ボタンをクリックします。
「イベント・タイプの詳細」パネルが左側に表示されます。

c. 「イベント・タイプの詳細」で「宣言的プロパティ」を選択します。

d. 「タイプ名」フィールドで、新しいイベント・タイプの名前を入力します。

e. 「イベント・タイプのプロパティ」で、「追加」(+)ボタンを使用して「イベント・タイプのプロパティ」リストにプロパティ行を追加します。

f. 「名前」列にカーソルを置き、プロパティ名を編集します。

g. 「タイプ」列にカーソルを置き、ドロップダウン・リストからデータ型を選択します。
charデータ型のデフォルトの長さは256文字ですが、「文字の長さ」列にカーソルを置いて編集できます。

3.9 イベントBeanの作成

イベントBeanは、通過するイベントにロジックを適用するEPNコンポーネントです。イベントBeanのロジックは、JavaBeanイベント・タイプによって定義されます。

1. (オプション)使用するJavaクラスを作成します。

ステップ3では、既存のクラスを選択、または新しいクラスを作成して後でロジックを追加します。

2. Oracle JDeveloperのEPNダイアグラムを開いた状態で、「イベントBean」コンポーネントを「コンポーネント」ウィンドウからEPNダイアグラムの空の領域にドラッグします。

「新規EventBean」ウィザードが表示されます。

3. 「新規EventBean」ウィザードに次の情報を入力します。

「EventBean ID」: このイベントBeanの一意の識別子です。「EventBeanクラス」: このイベントBeanで使用するJavaBeanクラス(イベント・タイプ)を追加(+)または選択します。

Javaクラス・イベント・シンク、イベント・ソース、またはその両方を作成する方法は、『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』を参照してください。

4. 「OK」をクリックします。

Oracle JDeveloperによってイベントBeanがEPNに追加されます。

5. 上位コンポーネントをイベントBeanにドラッグし、イベントBeanをEPNの正しい位置に配置します。

EPNダイアグラムが調整され、イベントBeanが正しい位置に表示されます。

例3-1 アセンブリ・ファイル

次のイベントBeanアセンブリ・ファイル・エントリは、イベントBean ID、関連付けられたクラス、およびイベントBeanは上位Bean出力チャネル・コンポーネントからのイベントをリスニングすることを示します。

<wlevs:event-bean id="eventBean" class="tradereport.TradeEvent" >
<wlevs:listener ref="BeanOutputChannel"/>
<wlevs:event-bean>

例3-2 構成ファイル

次のイベントBeanの構成ファイル・エントリは、record-parameters子要素を使用して構成されたイベントBeanを示します。

<event-bean>
<name>eventBean</name>
<record-parameters>
<dataset-name>tradereport_sample</dataset-name>
<event-type-list>
<event-type>TradeEvent</event-type>
</event-type-list>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
</event-bean>

3.10 Spring Beanの作成

イベント処理ネットワークにクラスを含めるためにSpring BeanとしてJavaクラスを構成できます。これは、EPNに組み込む既存のSpring Beanがある場合、またはSpringの機能をJavaコードに組み込む場合の適切なオプションです。

1. (オプション)『Oracle Fusion Middleware Oracle Stream Analyticsによるイベント処理用アプリケーションの開発』で説明されているように、使用するJavaBeanイベント・タイプを作成します。

ステップ3では、既存のクラスを選択、または新しいクラスを作成して後でロジックを追加します。

2. Oracle JDeveloperのEPNダイアグラムを開いた状態で、「Bean」コンポーネントを「コンポーネント」ウィンドウからEPNダイアグラムの空の領域にドラッグします。

「新規Bean」ウィザードが表示されます。

3. 「新規Bean」ウィザードに次の情報を入力します。

「Bean ID」: このイベントBeanの一意の識別子です。「Beanクラス」: このBeanで使用するSpring機能を持つJavaBeanクラス(イベント・タイプ)を追加(+)または選択します。

4. 「OK」をクリックします。

Oracle JDeveloperによってイベントBeanがEPNに追加されます。

5. 上位コンポーネントをイベントBeanにドラッグし、イベントBeanをEPNの正しい位置に配置します。

EPNダイアグラムが調整され、イベントBeanが正しい位置に表示されます。

3.11 表ソースの構成

表ソース・コンポーネントをアプリケーションに追加することによって、Oracle CQL問合せからリレーショナル・データベース表の中のデータにアクセスできます。表ソースを追加する場合、表ソースをリレーショナル・データベース表への読取りアクセス用のデータ・ソースと関連付けます。Oracle Stream Analyticsリレーショナル表ソースはプル・データ・ソースであり、Oracle Stream Analyticsはデータベースの読取りを行うために、定期的にイベント・ソースの新しいデータを確認します。

- ストリームの結合は、NOWウィンドウでのみ行うことができます。
表ソースの変更はストリーム・データに対してタイムリに調整できないため、表ソースとイベント・ストリームはNowウィンドウでのみ結合できます。

複数のデータベース表またはビューを結合できます。

- Oracle JDBCデータ・カートリッジを使用すると、Oracle CQL問合せを使用して複雑なSQL問合せと複数の表およびデータ・ソースを自由に統合できます。Oracle CQLデータ・カートリッジによるアプリケーションの開発のOracle JDBCカートリッジを参照してください。

注意:

Oracle CQL文からリレーショナル・データベース表にアクセスするにはOracle JDBCデータ・カートリッジを使用することをお薦めします。

NOWウィンドウとデータ・カートリッジのどちらを使用する場合でも、Oracle Stream Analyticsサーバー・ファイルに表ソースを定義する必要があります。

表ソースの作成

1. Oracle JDeveloperでEPNダイアグラムを開きます。

2. 「コンポーネント」ウィンドウの「基本コンポーネント」で、「表」コンポーネントをEPNの空白領域にドラッグします。
「新規表」ウィザードが開きます。

3. 「新規表」ウィザードで、次の値を入力して「OK」をクリックします。
「表ID」: Stock 「イベント・タイプ」: TradeEvent 「データ・ソース」: StockDataSource

デフォルトで、表ソース・ステージはイベント・タイプの名前をデータベースのデフォルトの表名として使用します。また、table-name要素で明示的に表名を指定することもできます。table-name要素には、イベント・データを取得するデータベース表の名前を指定します。

TradeEventイベント・タイプは、リレーショナル・データベース内の列にマップされる5つのプライベート・フィールド(symbol、price、lastPrice、percChangeおよびvolume)があるJavaクラスから作成されます。

アセンブリ・ファイルには、Stock表とprocプロセッサを関連付ける次のエントリがあります。

<wlevs:table id="Stock" event-type="TradeEvent" data-source="StockDataSource"/>

<wlevs:processor id="proc">
<wkevs:table-source ref="Stock" />
</wlevs:processor>

注意:

XMLTYPEプロパティは表ソースに対してサポートされていません。

データ・ソースの作成

1. Oracle JDeveloperの構成ファイルで、次の行を追加してデータ・ソースを定義します。

<data-source>
<name>StockDataSource</name>
<connection-pool-params>
<initial-capacity>1</initial-capacity>
<max-capacity>10</max-capacity>
</connection-pool-params>
<driver-params>
<url>jdbc:derby:</url>
<driver-name>org.apache.derby.jdbc.EmbeddedDriver</driver-name>
<properties>
<element>
<name>databaseName</name>
<value>db</value>
</element>
<element>
<name>create</name>
<value>true</value>
</element>
</properties>
</driver-params>
<data-source-params>
<jndi-names>
<element>StockDataSource</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

2. ファイルを保存します。

例3-3 Stockデータベース表からのデータの読取り

構成後、別のイベント・ストリームであるかのようにStock表にアクセスするOracle CQL問合せを定義できます。次の例では、問合せはStockTradeIStreamChannelイベント・ストリームをStock表と結合しています。

SELECT StockTradeIStreamChannel.symbol, StockTradeIStreamChannel.price,
StockTradeIStream.lastPrice, StockTradeIStream.percChange,
StockTradeIStream.volume, Stock
FROM   StockTraceIStreamChannel [Now], Stock
WHERE  StockTradeIStreamChannel.symbol = Stock.symbol

表ソースの変更とストリーム・データはすぐには連係されないため、表ソースはNowウィンドウを使用してイベント・ストリームにのみ結合でき、また単一のデータベース表にのみ結合できます。

3.12 表シンクの構成

表シンク・コンポーネントをアプリケーションに追加すると、Oracle CQL問合せからリレーショナル・データベース表のデータを更新および削除できます。表シンクは上位コンポーネントからデータを受信し、受信したデータに応じて基礎となるリレーショナル・データベース表の更新操作および削除操作を行います。

表シンク・コンポーネントをアプリケーションに追加すると、受信したイベントをリレーショナル・データベースに格納できます。イベントが表シンクに入ると、データベースで永続化されてから下位のステージに送信されます。Oracle Stream Analyticsはデータベース表を作成しません。アプリケーションを実行する前にデータベース表を作成する必要があります。また、必要に応じて表のメンテナンスおよびバックアップを行う必要があります。

表シンクは、表ソースと同様の方法で作成できます。「表」コンポーネントをEPNダイアグラムにドラッグしてID、イベント・タイプおよびデータ・ソースを指定した後、アセンブリ・ファイル・エントリを編集して必要となるtable-nameおよびkey-properties要素を含めます。これらの要素は表ソースには不要です。

table-name要素には、イベント・データを格納するデータベース表の名前を指定します。更新操作および削除操作を行うOracle CQL問合せを有効にするため、key-properties要素にデータベース表の一意のキー値を指定します。

CQL、JavaおよびJDBC間で変換するデータ型

次の表は、CQL、JavaおよびJDBC間で変換するデータ型を示します。

CQLネイティブ型

Javaプリミティブ型

Javaラッパー型

JDBC型

BOOLEAN

boolean

Boolean

BOOLEAN、BIT

INT

int

Integer

INTEGER

BIGINT

long

Long

BITINT

FLOAT

float

Float

REAL

DOUBLE

double

Double

DOUBLE

CHAR

char[]

String

VARCHAR、LONGVARCHAR

BYTE

byte[]

Byte[]

VARBINARY、LONGVARBINARY

XMLTYPE

なし

java.sql.SQLXML

サポート対象外

TIMESTAMP

long

java.util.date、java.sql.Time、java.sql.Timestamp

TIMESTAMP

BIGDECIMAL

なし

java.math.BigDecimal

NUMERIC

INTERVAL

なし

サポート対象外

VARCHAR、LONGVARCHAR

INTERVALYM

なし

サポート対象外

VARCHAR、LONGVARCHAR

OBJECT

なし

Class

サポート対象外

アセンブリ・ファイル

<wlevs:table id="StockSink" event-type="TradeEvent" data-source="StockDataSource"
table-name="StockEvents" key-properties="symbol" />

データ・ソースの構成

データ・ソースの構成は表ソースおよび表シンクと同じです。

StockEventsデータベース表へのデータの格納

次のOracle CQL問合せは入力チャネルからデータを取得し、表シンクに送信してイベント・データを永続化します。

SELECT * FROM StockTraceIStreamChannel

3.13 Oracle CQLパターンの使用

アプリケーションで簡単にOracle CQL問合せを作成できるように、Oracle JDeveloperは次の7つのOracle CQLパターンを提供しています。各Oracle CQLパターンは、Oracle CQLプロセッサのコンテキスト内に格納されます。プロセッサはすでにEPNに存在することも、存在しないこともあります。

- 平均化ルール: 平均化ルール・コンポーネントを使用すると、指定したイベント数(表の行)の平均を計算できます。

- 不足イベント・ルールの検出: 不足イベント・ルールの検出コンポーネントを使用すると、期待されるイベントが発生しない場合に検出を行うことができます。

- パーティション化ルール: パーティション化ルール・コンポーネントを使用すると、イベント・パネルをイベント・プロパティによってパーティション化し、パーティション内の指定されたイベント数を表示できます。

- 「後続のフィルタ問合せを使用した選択」: 「Selectフィルタ副問合せ」コンポーネントを使用すると、イベントをフィルタし、フィルタ基準を通過したイベントをビューに移入できます。

- 複数ストリームからの選択: 複数ストリームからの選択コンポーネントを使用すると、2つのストリームを結合して相関イベントから選択することができます。

- FromのあるSelect: FromのあるSelectコンポーネントを使用すると、特定のプロパティによってチャネルからイベントを選択できます。

- パターン一致を使用したSELECT: パターン一致を使用したSELECTコンポーネントを使用すると、特定のプロパティ値によってチャネルからイベントを選択できます。

手順

使用可能なOracle CQLパターンをEPNに追加するには、次の手順を実行します。各Oracle CQLパターンは、Oracle CQLプロセッサのコンテキスト内に格納されます。プロセッサはすでにEPNに存在することも、存在しないこともあります。

プロセッサがすでにEPNに存在する場合、パターンを既存のプロセッサにドラッグ・アンド・ドロップします。プロセッサがEPNに存在しない場合、ステップ2から開始します。

1. Oracle CQLパターンを格納するプロセッサを指定します。

a. プロセッサがすでにEPNに存在する場合、パターンを既存のプロセッサにドラッグ・アンド・ドロップします。

b. プロセッサがEPNに存在しない場合、EPNダイアグラムの空のスポットにパターンをドラッグします。

対象のパターンの2段階のウィザードのステップ1で、デフォルト値が表示されます。

2. 「Oracle CQLパターン・ウィザード, ステップ1/2」画面で、デフォルトを使用または次の値を入力します。既存のプロセッサにOracle CQLパターンをドラッグ・アンド・ドロップする場合、これらの値は変更できません。
「プロセッサID」: このOracle CQLパターンを格納するOracle CQLプロセッサの一意のID値です。Oracle JDeveloperはデフォルトの一意のIDを提供します。

「ファイル名」: Oracle CQLパターン構成を格納する構成ファイルの名前です。Oracle JDeveloperはデフォルトで既存のprocessor.xml構成ファイルを提供します。既存のOracle CQLプロセッサを選択した場合、Oracle JDeveloperはOracle CQLパターン構成をプロセッサと同じファイルに格納するため、「ファイル名」フィールドは使用できません。

3. 「次へ」をクリックします。
該当する場合、対象のパターンの2段階のウィザードのステップ2で、デフォルト値が表示されます。

4. 「Oracle CQLパターン・ウィザード, ステップ2/2」画面で、適切な場合はデフォルト値を使用し、必要な場合は値を入力します。
フィールドの有効な値の詳細は、フィールドにカーソルを置いて右パネルのプロパティの説明を読むか、「ヘルプ」をクリックします。

ステップ2の上部にはパラメータ・セクションがあり、下部にはOracle CQL文テンプレートがあります。上部セクションでパラメータを指定すると、次の図のようにテンプレートに色付きのコードで入力が反映されます。

5. 「終了」をクリックします。
Oracle JDeveloperは、既存のルールを上書きすることなくプロセッサにOracle CQL処理コードを追加します。このサンプルのprocessor.xmlファイルには、MyProcessor Oracle CQLプロセッサ用の次のエントリが含まれています。

<processor>
<name>MyProcessor</name>
<rules>
<query id="RecordQuery"><![CDATA[
SELECT name
FROM MyChannel
WHERE name = “Johnson" ]]>
</query>
</rules>
</processor>

プロセッサがEPNに存在しない場合、Oracle CQLパターン・コードを含む新しいプロセッサがEPNに追加され、Sourceフィールドで示されるコンポーネントに接続されます。

ビューおよび問合せの有効なイベント・ソース

既存のOracle CQLプロセッサに追加されます。

- プロセッサのイベントのソースであるすべてのチャネル

- プロセッサのイベントのソースであるすべてのキャッシュ

- プロセッサのイベントのソースであるすべての表

- プロセッサのイベントのソースであるすべてのhadoop:files

- プロセッサのイベントのソースであるすべてのnosql:stores

- 現在のプロセッサのすべてのビュー

新しいプロセッサに追加されます。

- すべてのチャネル

- すべてのキャッシュ

- すべての表

- すべてのhadoop:files

- すべてのnosql:stores

3.14 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

Oracle Coherenceキャッシング・システムおよびキャッシュを使用するようにアプリケーションを構成できます。アプリケーションをマルチサーバー・ドメインにデプロイしようとする場合は、このキャッシング・システムを使用します。Oracle Coherenceを使用して構成すると、第1キャッシュ・システムのみがサーバー内に構成されます。Oracle Stream Analyticsサーバーは、構成済の他のキャッシング・システムを無視します。

注意:

合法的にOracle CoherenceをOracle Stream Analyticsとともに使用するには、Coherence Enterprise Edition、Coherence Grid Edition、またはOracle WebLogic Application Gridのライセンスなどの有効なCoherenceライセンスを取得する必要があります。

Oracle Coherenceの詳細は、http://www.oracle.com/technetwork/middleware/coherence/overview/index.htmlを参照してください。

Oracle Coherenceキャッシュ・システムおよびキャッシュの作成

この手順では、Oracle CQLプロセッサ用のOracle Coherenceキャッシュ・システムおよびキャッシュを構成します。このキャッシュは、イベント・タイプを使用してリレーショナル・データベースの表の行を特定するキー・プロパティを指定します。このキャッシング・システムは公開されており、他のアプリケーションからキャッシュのデータにアクセスできます。

1. Oracle JDeveloperでアプリケーションのEPNを開きます。

2. 「コンポーネント」ウィンドウで「コヒーレンス・キャッシュ・システム」コンポーネントを選択し、EPNの空白領域にドラッグします。

「コヒーレンス・キャッシュ・システム ステップ1/4」ダイアログが、次のデフォルト値とともに表示されます。

「キャッシュ・システムID」: coherence-caching-system 「構成場所」: coherence-cache-config.xml

coherence-cache-config.xmlファイルは、アプリケーションごとの構成ファイルです。そこには、cache-name要素内の個別のキャッシュ情報が含まれています。この手順を終えると、Oracle JDeveloperによってバンドルJARのMETA-INF/wlevs/coherenceディレクトリにcoherence-cache-config.xmlファイルが配置されます。

3. 「次へ」をクリックします。

「コヒーレンス・キャッシュ・システム ステップ2/4」ダイアログが表示されます。

4. 「コヒーレンス・キャッシュ・システム - ステップ2/4」ダイアログで、次の値を指定します。

「キャッシュ名」: Oracle Coherentキャッシュ・システムの最初のキャッシュの名前です。「値タイプ」: キャッシュに含まれる値のタイプです。イベント・タイプ・リポジトリの有効な型の名前である必要があります。

5. 「次へ」をクリックします。

「コヒーレンス・キャッシュ・システム ステップ3/4」ダイアログが表示されます。

6. 「コヒーレンス・キャッシュ・システム - ステップ3/4」ダイアログで、「通知」チェック・ボックスを選択します。

「通知」チェック・ボックスを選択すると、キャッシュ・システムが他のアプリケーションにこのキャッシュ・システムへのアクセスを許可します。

7. 「次へ」をクリックします。

「コヒーレンス・キャッシュ・システム - ステップ4/4」ダイアログが表示されます。

8. 「コヒーレンス・キャッシュ・システム - ステップ4/4」ダイアログで、「終了」をクリックします。

例3-4 アセンブリ・ファイル

アセンブリ・ファイルには、キャッシュ・システムおよびcache1を作成した際に指定した情報が含まれています。このキャッシュは通知されます。

<wlevs:cache id="cache1" value-type="TradeReport" advertise="true">
<wlevs:caching-system ref="coherence-caching-system"/>
</wlevs:cache>
<wlevs:caching-system id="coherence-caching-system" provider="coherence"/>

注意:

EPNダイアグラムでCoherenceキャッシュ用のid設定を変更すると、アセンブリ・ファイルおよびcoherence-cache-config.xmlファイルのidが変更されます。ただし、アセンブリ・ファイルのソース・エディタでid設定を変更すると、アセンブリ・ファイルのidのみが変更されます。この場合、coherence-cache-config.xmlのcache-name設定を手動で変更してアセンブリ・ファイルのid設定と一致させる必要があります。また、そのキャッシュへのすべての参照も変更する必要があります。

キャッシュが通知される場合、別のバンドル内にあるアプリケーションのEPNにあるコンポーネントがそのキャッシュを参照できます。次の例では、1つのバンドル内のプロセッサがcache-source要素を使用して、cacheproviderのcache-idを持つ別のバンドルのキャッシュ・ソースを参照する方法を示しています。

<wlevs:processor id="myProcessor2">
<wlevs:cache-source ref="cacheprovider:cache-id"/>
</wlevs:processor>

注意:

同一のOracle Stream Analyticsサーバーにデプロイされる1つ以上のアプリケーションのEPNアセンブリ・ファイルのOracle Coherenceキャッシュが存在する場合、ローダーまたはストアを使用して同一のキャッシュの複数のインスタンスを構成しないでください。

各EPNアセンブリ・ファイル内でローダーまたはストアを使用して同一のOracle Coherenceキャッシュをそれぞれ構成する、複数のアプリケーションを使用することによって、これを不注意で行う可能性があります。ローダーまたはストアのある同じキャッシュの複数のインスタンスを構成すると、Oracle Stream Analyticsは例外をスローします。

例3-5 構成ファイル

coherence-cache-config.xmlファイルは基本的なOracle Coherence構成ファイルで、任意のOracle Coherenceアプリケーションでtrueとなるように、Oracle Coherence DTDに準拠する必要があります。

coherence-cache-config.xmlの詳細は、Oracle Coherenceドキュメント(http://www.oracle.com/technetwork/middleware/coherence/overview/index.html)を参照してください。

Springを使用してキャッシュのローダーまたはストアを構成する場合は、Oracle Stream Analytics Oracle Coherenceファクトリを宣言する必要があります。ファクトリを指定するには、cachestore-scheme要素を使用し、Oracle CoherenceがOracle Stream Analyticsにコールして、キャッシュのために構成されるローダーまたはストアへの参照を取得できるようにするためのファクトリ・クラスを含めます。ローダーまたはストアの構成における唯一の差異は、method-name要素が、ローダーが使用されるときはgetLoaderの値を持ち、ストアが使用されているときはgetStoreの値を持つことです。キャッシュ名は、入力パラメータとしてファクトリに渡します。

<cache-config>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>myCoherenceCache</cache-name>
<scheme-name>new-replicated</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>myLoaderCache</cache-name>
<scheme-name>test-loader-scheme</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>myStoreCache</cache-name>
<scheme-name>test-store-scheme</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>
cache1
</cache-name>
<scheme-name>
new-replicated
</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<replicated-scheme>
<scheme-name>new-replicated</scheme-name>
<service-name>ReplicatedCache</service-name>
<backing-map-scheme>
<class-scheme>
<scheme-ref>my-local-scheme</scheme-ref>
</class-scheme>
</backing-map-scheme>
</replicated-scheme>
<class-scheme>
<scheme-name>my-local-scheme</scheme-name>
<class-name>com.tangosol.net.cache.LocalCache</class-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>
</class-scheme>
<local-scheme>
<scheme-name>test-loader-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>

<!-- A cachestore-scheme element that gets a loader starts here -->
<cachestore-scheme>
<class-scheme>
<class-factory-name>com.bea.wlevs.cache.coherence.configuration.SpringFactory
</class-factory-name>
<method-name>getLoader</method-name>
<init-params>
<init-param>
<param-type>java.lang.String</param-type>
<param-value>myCoherenceCache</param-value>
</init-param>
<init-param>
<param-type>
java.lang.String
</param-type>
<param-value>
cache1
</param-value>
</init-param>
</init-params>
</class-scheme>
</cachestore-scheme>
<!-- The cachestore-scheme element ends here -->
</local-scheme>

<local-scheme>
<scheme-name>test-store-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>

<!-- A cachestore-scheme element that gets a store starts here -->
<cachestore-scheme>
<class-scheme>
<class-factory-name>com.bea.wlevs.cache.coherence.configuration.SpringFactory
</class-factory-name>
<method-name>getStore</method-name>
<init-params>
<init-param>
<param-type>java.lang.String</param-type>
<param-value>myCoherenceCache</param-value>
</init-param>
<init-param>
<param-type>
java.lang.String
</param-type>
<param-value>
cache1
</param-value>
</init-param>
</init-params>
</class-scheme>
</cachestore-scheme>
<!-- The cachestore-scheme element ends here -->
</local-scheme>
</caching-schemes>
</cache-config>

例3-6 tangosol-coherence-override.xmlファイル(オプション)

tangosol-coherence-override.xmlファイルはサーバー単位でグローバルなファイルです。これには、Oracle Coherenceドキュメントで操作構成と呼ばれているものが含まれています。このファイルには、Oracle Coherenceキャッシュのサーバー単位のグローバルな構成設定が含まれています。このファイルはXMLエディタで作成し、構成するサーバーのOracle Stream Analyticsのconfigディレクトリに置きます。

注意:

Oracle Coherenceをクラスタリングに使用する場合は、tangosol-coherence-override.xmlファイルを含めないでください。

次のXMLをOracle Coherence構成ファイルに追加し、tangosol-coherence-override.xmlファイルを参照します。Oracle Stream Analyticsの起動時にOracle Coherenceが既存のOracle Coherenceクラスタへの参加を試行しないように、cluster-name要素を含めます。これが発生すると、問題が発生してOracle Stream Analyticsが起動できなくなる場合があります。

...
<coherence xml-override="/tangosol-coherence-override.xml">
<cluster-config>
<member-identity>
<cluster-name>com.bea.wlevs.example.provider</cluster-name>
</member-identity>
...
</coherence>

Oracle Stream Analyticsクラスタの詳細は、Oracle Stream Analyticsの管理のネイティブ・クラスタリングを参照してください。

3.15 ローカル・キャッシング・システムおよびキャッシュの構成

アプリケーションを構成して、Oracle Stream Analyticsローカル・キャッシュ・システムおよびキャッシュを使用できます。Oracle Stream Analyticsローカル・キャッシング・システムは、アプリケーションをマルチサーバー・ドメインにデプロイする計画がない場合に適切です。アプリケーションをマルチサーバー・ドメインにデプロイする計画がある場合は、Oracle Coherenceキャッシュを使用します。

ローカル・キャッシュ・システムおよびキャッシュの作成

この手順では、通知されるOracle Stream Analyticsローカル・キャッシュを作成します。

1. Oracle JDeveloperでアプリケーションのEPNを開きます。

2. 「コンポーネント」ウィンドウから「ローカル・キャッシュ・システム」コンポーネントをEPNの空白領域にドラッグします。

「ローカル・キャッシュ・システム - ステップ1/5」ダイアログが表示されます。

3. 「ローカル・キャッシュ・システム - ステップ1/5」ダイアログで、次の値を指定します。

「キャッシュ・システムID」: このローカル・キャッシュ・システムを一意に識別するIDです。「ファイル名」: 構成ファイルの名前です。デフォルトはprocessor.xmlです。cache.xmlなどのファイル名に変更できます。

4. 「次へ」をクリックします。

「ローカル・キャッシュ・システム - ステップ2/5」ダイアログが表示されます。

5. 「ローカル・キャッシュ・システム - ステップ2/5」ダイアログで、「追加」(+)または「選択」ボタンを使用してcom.bea.wlevs.cache.spi.CachingSystemインタフェースを実装するクラスを指定します。

6. 「ローカル・キャッシュ・システム - ステップ2/5」ダイアログで、「通知」チェック・ボックスを選択します。

「通知」チェック・ボックスを選択すると、キャッシュ・システムが他のアプリケーションにこのキャッシュ・システムへのアクセスを許可します。

7. 「次へ」をクリックします。

「ローカル・キャッシュ・システム - ステップ3/5」ダイアログが表示されます。

8. 「ローカル・キャッシュ・システム - ステップ3/5」ダイアログで、次の値を指定します。

「キャッシュ名」: Oracle Coherentキャッシュ・システムの最初のキャッシュの名前です。「値タイプ」: データベース値をロードするイベント・タイプです。

9. 「次へ」をクリックします。

「ローカル・キャッシュ・システム - ステップ4/5」ダイアログが表示されます。

10. 「ローカル・キャッシュ・システム - ステップ4/5」ダイアログで、デフォルトを使用または値を指定します。

11. 「終了」をクリックします。

例3-7 アセンブリ・ファイル

ローカル・キャッシュ・システムを作成した際に指定した値はアセンブリ・ファイルに格納されます。

<wlevs:cache id="localcache" value-type="HelloWorldEvent">
<wlevs:caching-system ref="caching-system"/>
</wlevs:cache>
<wlevs:caching-system id="caching-system" class="hellowworld.MyClass" advertise="false"/>

例3-8 構成ファイル

キャッシュを作成した際に指定した値は構成ファイルに格納されます。

<caching-system>
<name>caching-system</name>
<cache>
<name>localcache</name>
<max-size>64</max-size>
<eviction-policy>LFU</eviction-policy>
</cache>
</caching-system>

3.16 Javaクラスのデバッグ

ローカルまたはリモートOracle Stream Analyticsサーバー上で、Oracle Stream AnalyticsアプリケーションのJavaクラスをデバッグできます。

3.16.1 ローカルOracle Stream Analyticsサーバーでのデバッグ

- サーバー接続の作成

- プロジェクトでのLocalCon1接続の使用

- サーバーの起動およびデバッグ・モードでのLoclCon1の実行

- ブレークポイントの設定

- プロジェクトのデプロイ

- Javaクラスのデバッグ

サーバー接続の作成

1. 「ファイル」→「新規」→「ギャラリから」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの左ウィンドウで、「カテゴリ」→「一般」→「接続」の順に選択します。

3. 「新規ギャラリ」ダイアログの右ウィンドウで、「OEP接続」を選択します。

4. 「OEPサーバー接続の作成」ダイアログに情報を入力します。
「OEPサーバー接続名」: LocalCon1 「OEPサーバー・ホーム・パス」: /Oracle/Middleware/my_oep/ 「デフォルト値の使用」: 未チェック「OEPサーバー・プロジェクト・ディレクトリ」: user_projects/domains/ basicapp_domain/defaultserver 「デフォルト値の使用」: チェック 「ホスト」: 127.0.0.1 「ポート」: 9002 「デフォルト値の使用」: 未チェック 「ユーザー名」: oepadmin 「ユーザー・パスワード」: welcome1 OEPサーバーの追加パラメータ: 空白

プロジェクトでのLocalCon1接続の使用

新しいプロジェクトでLocalCon1接続を使用することや、既存のプロジェクトのプロパティを変更してLocalCon1接続を使用することができます。

動作確認のみを行う場合、次のようにしてHelloWorld Oracle Stream Analyticsプロジェクトを作成します。

1. Oracle JDeveloperで、「ファイル」→「新規」→「プロジェクト」を選択します。

2. 「新規ギャラリ」ダイアログで、「OEPプロジェクト」を選択して「OK」をクリックします。

3. OEPプロジェクトの作成ウィザードで、名前にHelloWorldProjectと入力し、「OEPスイート」を選択して「次へ」をクリックします。

4. Java設定の構成ダイアログで、「次へ」をクリックしてデフォルトを使用します。

5. OEPテクノロジ設定の構成ダイアログの「OEPアプリケーション・テンプレート名」ドロップダウン・リストで、HelloWorldを選択します。

6. OEPテクノロジ設定の構成ダイアログの「OEPサーバー接続」ドロップダウン・リストで、LocalCon1を選択します。

7. 「終了」をクリックします。

既存のプロジェクトの接続をLocalCon1に変更するには、次のようにします。

1. プロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。

2. 「プロジェクト・プロパティ」ダイアログの左ウィンドウで、「デプロイメント」を選択します。

3. 「デプロイメント」ウィンドウでユーザー・プロジェクト設定ラジオ・ボタンを選択したままにし、「デプロイメント・プロファイル」で編集するプロファイルを選択します。

4. 「編集」をクリックします。

5. 「デプロイメント・プロパティ」パネルのOEPサーバーへの接続ドロップダウン・リストで、LocalCon1を選択します。

6. 「OK」をクリックします。

サーバーの起動およびデバッグ・モードでのLoclCon1の実行

1. -debugオプションを指定してOracle Stream Analyticsサーバーを起動します。

a. /Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserverに移動します。

b. 適切な起動スクリプトを実行します。
Windowsの場合:

startwlevs.cmd -debug

UNIXの場合:

./startwlevs.sh -debug

2. プロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。
次のメッセージが「メッセージ - ログ」ウィンドウに表示されます。

Listening for transport dt_socket at address 8453
8453 is the default port.

3. 「プロジェクト・プロパティ」ダイアログの左ウィンドウで、「実行/デバッグ」を選択します。

4. 「実行/デバッグ」の右パネルで、デフォルトの設定を使用して「編集」をクリックします。
新しい実行構成を作成する場合、最初に「新規」をクリックすることも可能です。

5. 左ウィンドウで「起動設定」を選択し、右ウィンドウで「リモート・デバッグ」チェック・ボックスを選択します。

6. 左ウィンドウで「ツール設定」→「デバッガ」→「リモート」の順に選択し、右パネルでホストおよびポート・パラメータを設定します。
この例では、ホストはLocalHostでポートは8453です。

7. 「OK」をクリックした後、再度「OK」をクリックし、ダイアログを閉じます。

ブレークポイントの設定

1. ブレークポイントを設定するには、プロジェクトのJavaクラスを開きます。
HellowWorldプロジェクトでは、HelloWorldBean.javaのソース・コード・ファイルを開きます。

2. メソッドを選択し、[F5]を押してブレークポイントをONに切り替えます。
HelloWorldBean.javaソース・コードでは、onInsertEventメソッドを選択します。

プロジェクトのデプロイ

1. プロジェクトを右クリックし、コンテキスト・メニューから「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。

2. 「デプロイメント・プロファイルの作成」ダイアログの「プロファイル・タイプ」ドロップダウン・リストで、「OEPプロジェクト・デプロイメント・プロファイル」を選択します。

3. 「デプロイメント・プロファイルの作成」ダイアログの「デプロイメント・プロファイル名」フィールドにプロファイルの一意な名前を入力します。
HellowWorldプロジェクトでは、プロファイル名はHelloWorldProfileなどとします。

4. 「OK」をクリックします。

5. 「デプロイメント・プロパティ」ダイアログで、情報が正しいことを確認します。
必要に応じて、修正を行います。

6. 「OK」をクリックします。

Javaクラスのデバッグ

1. デバッグするプロジェクトを選択し、[Shift] + [F9]を押します。
JPDAデバッガへの接続ダイアログが表示されます。

ツール・バーの「デバッグ」ボタン(赤いテントウムシのアイコン)を選択することもできます。

2. JPDAデバッガへの接続ダイアログで、情報が正しいことを確認します。

3. 「OK」をクリックします。
「デバッグ中 <Project-Name> - ログ」パネルに、デバッガがサーバーに接続したことを示すメッセージが表示されます。

3.16.2 リモートOracle Stream Analyticsサーバー

リモート・スタンドアロンOEPのデバッグは、ローカルOracle Stream Analyticsサーバーでのデバッグと同様ですが、リモート・ホストで-debugフラグを使用して手動でOracle Stream Analyticsサーバーをデバッグ・モードで実行する必要がある点のみが異なります。Oracle JDeveloperでデバッガへの接続を定義する際には、リモート・ホストのアドレスを指定します。

3.16.3 Oracle WebLogic Server

WLSでのOEPのデバッグは、ローカルOracle Stream Analyticsサーバーでのデバッグと同様ですが、WLSをデバッグ・モードで手動で起動し、デバッグ・ポートをチェックする必要がある点のみが異なります。

3.17 イベント・インスペクタ・サービスによるテスト

コンポーネント構成ファイルで、ローカルまたはリモートHTTPパブリッシュ/サブスクライブ・サーバーのイベント・インスペクタ・サービスを構成します。コンポーネント構成ファイルで、イベント・インスペクタHTTPパブリッシュ/サブスクライブ・サーバーを構成します。サーバーで定義されているHTTPパブリッシュ/サブスクライブ・サーバーが1つのみで、ローカルまたはリモートHTTPパブリッシュ/サブスクライブ・サーバーを指定しない場合、イベント・インスペクタ・サービスはデフォルトでローカルHTTPパブリッシュ/サブスクライブ・サーバーを使用します。

ローカルHTTPパブリッシュ/サブスクライブ・サーバー

1. Oracle Stream Analytics IDEでEPNエディタを開きます。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 次の例のように、event-inspector name要素を追加します。

<event-inspector>
<name>myEventInspectorConfig</name>
<pubsub-server-name>myPubSub</pubsub-server-name>
</event-inspector>

次の例に示すように、pubsub-server-nameの値myPubSubは、ローカルのOracle Stream Analyticsサーバー・ファイルで定義されたhttp-pubsub要素のname子要素の値です。

<http-pubsub>
<name>myPubSub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<supported-transport>
<types>
<element>long-polling</element>
</types>
</supported-transport>
<publish-without-connect-allowed>true</publish-without-connect-allowed>
</server-config>
<channels>
...
</channels>
</pub-sub-bean>
</http-pubsub>

4. 保存してファイルを閉じます。

リモートHTTPパブリッシュ/サブスクライブ・サーバー

コンポーネント構成ファイルに、リモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。または、ローカルHTTPパブリッシュ/サブスクライブ・サーバーを構成します。

1. Oracle Stream Analytics IDEでEPNエディタを開きます。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 次の例のように、event-inspector要素を追加します。

<event-inspector>
<name>myEventInspectorTraceConfig</name>
<pubsub-server-url>http://HOST:PORT/PATH</pubsub-server-url>
</event-inspector>

HOST: リモートOracle Stream Analyticsサーバーのホスト名またはIPアドレスです。

PORT: リモートOracle Stream Analyticsサーバー・ファイルで定義されている、リモートOracle Stream Analyticsサーバーのnetioポートです。デフォルトは9002です。

PATH: リモートOracle Stream Analyticsサーバー・ファイルで定義されている、http-pubsub要素のpath子要素の値です。

次の例に示すhttp-pubsub構成の場合、有効なpubsub-server-urlは、次のようになります。

http://remotehost:9002/pubsub

次の例に示すように、pubsub-server-nameの値myPubSubは、ローカルのOracle Stream Analyticsサーバー・ファイルで定義されたhttp-pubsub要素のname子要素の値です。

<http-pubsub>
<name>myPubSub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<supported-transport>
<types>
<element>long-polling</element>
</types>
</supported-transport>
<publish-without-connect-allowed>true</publish-without-connect-allowed>
</server-config>
<channels>
...
</channels>
</pub-sub-bean>
</http-pubsub>

4. ファイルを保存して閉じます。

3.18 Oracle JDeveloperおよびサーバーの起動と停止

Oracle JDeveloperからOracle WebLogic Serverを起動および停止できます。コマンドラインまたはOracle JDeveloperからOracle Stream Analyticsを起動または停止できます。

Oracle JDeveloperの起動

1. /Oracle/Middleware/soa/jdeveloper/jdev/binに移動します。

2. ./jdevと入力します。
「ロールの選択」ダイアログが表示されます。

3. 「ロールの選択」ダイアログで「Studio開発者(すべての機能)」を選択し、「OK」クリックします。
Oracle JDeveloperが起動するまで、しばらく待ちます。

Oracle JDeveloperの停止

1. すべての作業を保存します。

2. 「ファイル」→「終了」の順に選択します。

Oracle Stream Analyticsの起動

1. /Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserverに移動します。

2. 適切な起動スクリプトを実行します。

a. Windowsの場合:

- startwlevs.cmd

b. UNIXの場合:

- ./startwlevs.sh

パラメータ—Dprofile-<xxx> (ここで、 <xxx>は利用可能なプロファイル(<MW_HOME>/oep/features/bundleloader_profileName.xmlに指定されたロード済バンドル機能のセット)の1つになり、スクリプトstartwlevsで使用してサーバーを起動できます)。

サーバーが起動すると、ターミナル・パネルにメッセージが表示されます。<The application context for "com.bea.wlevs.dataservices" was started successfully>と表示されると、Oracle Stream Analyticsサーバーの起動は完了です。

また、Oracle Stream Analyticsサーバーへの接続を定義すると、Oracle JDeveloperからOracle Stream Analyticsを起動できます。その場合、「接続」フォルダを展開すると、「アプリケーション・リソース」からOracle Stream Analyticsサーバーを起動できます。

Oracle Stream Analyticsの停止

1. /Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserverに移動します。

2. 該当する停止スクリプトを実行します。

a. Windowsの場合:

- stopwlevs.cmd

b. UNIXの場合:

- ./stopwlevs.sh

サーバーが起動すると、ターミナル・パネルにメッセージが表示されます。<The application context for "com.bea.wlevs.dataservices" was started successfully>と表示されると、Oracle Stream Analyticsサーバーの起動は完了です。

4 基本アプリケーションの作成

この章では、基本的なOracle Stream Analyticsアプリケーションの構築について説明します。手順には、主なOracle Stream Analyticsのアプリケーション・プログラミングの概念についての説明も含まれています。

この章の構成は、次のとおりです。

- 基本的なアプリケーションについて

- 始める前に

- アプリケーションの作成

- TradeReportプロジェクト・ファイル

- イベント・データを運ぶイベント・タイプの作成

- シミュレートされたイベント・データを受信するcsvgenアダプタの追加

- イベントを伝達する出力チャネルの追加

- イベントの受信および報告を行うリスナー・イベント・シンクの作成

- イベントをフィルタするOracle CQLプロセッサの追加

- 出力チャネルの追加

- デプロイ

- ロード・ジェネレータの設定および起動

- ロード・ジェネレータおよびサーバーの停止

4.1 基本的なアプリケーションについて

基本的なOracle Stream Analyticsアプリケーションは、簡単な株式取引の警告システムのモデルとなります。このアプリケーションは、株式取引に関するサンプル・データの受信や、データのある特性の監視を行い、その結果に基づいて一部のデータをコンソールに表示します。次の図は、このアプリケーションの完成したイベント処理ネットワーク(EPN)ダイアグラムです。

4.2 始める前に

この説明を実行するには、Oracle JDeveloperおよびOracle Stream Analytics JDeveloperプラグインを含む12cバージョンのOracle Stream Analyticsのダウンロードおよびインストールが必要です。ダウンロードに同梱されているインストール手順に従って正しく設定を行っていることを確認します。

JAVA_HOME変数がJDK7_u55以上を、PATH変数がインストール済JDKのbinディレクトリを指すように設定されていることを確認します。

export JAVA_HOME=<path to installation directory>
export PATH=${JAVA_HOME}/bin:${PATH}

この説明では、インストール・ディレクトリは/Oracle/Middleware/my_oep/です。

オプションで、WLEVS_HOME変数がインストール・ディレクトリを指すように設定できます。Oracle Stream Analytics JDeveloperプラグインは、この変数を使用してローカルのOracle Stream Analyticsサーバーを検出します。

注意:

この説明ではOracle Stream Analyticsに特有の機能を紹介しますが、読者が基本的なJavaプログラミングをよく理解していることを前提としています。

4.3 アプリケーションの作成

Oracle JDeveloperでは、アプリケーションは制御構造の最高レベルです。アプリケーションは、作業に必要なすべてのオブジェクトのビューです。アプリケーションは、プログラム開発中のすべてのプロジェクトの経過を記録します。プロジェクトは、Oracle JDeveloperのプログラムまたはプログラムの一部を定義する一連のファイルの論理コンテナです。プロジェクトには、複数層アプリケーションの様々な層、または複合アプリケーションの様々なサブシステムなどを表すファイルが含まれます。プロジェクトのファイルは任意のディレクトリに配置でき、かつ、単一のプロジェクトに含めることができます。

Oracle JDeveloperの起動

1. /Oracle/Middleware/my_oep/jdeveloper/jdev/binに移動します。

2. ./jdevと入力します。
「ロールの選択」ダイアログが表示されます。

3. 「ロールの選択」ダイアログで「Studio開発者(すべての機能)」を選択し、「OK」クリックします。
Oracle JDeveloperが起動するまで、しばらく待ちます。

TradeReportアプリケーションの作成

1. Oracle JDeveloperで、「新規アプリケーション」ボタンをクリックします。

「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログで「OEPアプリケーション」を選択し、「OK」をクリックします。

OEPアプリケーションの作成画面が表示されます。

3. 「OEPアプリケーションの作成 ステップ1/4」ダイアログで、次の値を入力します。

「アプリケーション名」: TradeReport 「ディレクトリ」: デフォルトを使用 「アプリケーション・パッケージの接頭辞」: 空白のまま

4. 「次へ」をクリックします。

「OEPアプリケーションの作成 - ステップ2/4」画面が表示されます。

5. 「OEPアプリケーションの作成 - ステップ2/4」ダイアログで、次の値を入力します。

「プロジェクト名」: TradeReport 「ディレクトリ」: デフォルトを使用 「プロジェクトの機能」: 「OEPスイート」

6. 「次へ」をクリックします。

「OEPアプリケーションの作成 - ステップ3/4」ダイアログが表示されます。

7. 「OEPアプリケーションの作成 - ステップ3/4」ダイアログで、「次へ」をクリックしてデフォルトを使用します。

OEPアプリケーションの作成ダイアログが表示されます。

8. 「OEPアプリケーションの作成 - ステップ4/4」ダイアログで、デフォルト値を確認します。

「空のOEPプロジェクト」: Oracle Stream Analyticsアプリケーションの基本構造を提供します。

「OEPサーバー接続」: 空白のまま。後の手順で、Oracle Stream Analyticsサーバー接続を作成します。

9. 「終了」をクリックしてデフォルトを使用します。

Oracle Stream Analytics TradeReportアプリケーションおよびプロジェクトが表示されます。

4.4 TradeReportプロジェクト・ファイル

TradeReportアプリケーションには、「プロジェクト」および「アプリケーション」リソース・ウィンドウが含まれています。「プロジェクト」ウィンドウに、TradeReportプロジェクトが表示されます。TradeReportプロジェクトには、springおよびwlevsサブフォルダがあるOEP Contentフォルダが含まれています。Oracle JDeveloperの右側の「IDE接続」の下に、「リソース」ウィンドウがあります。

「プロジェクト」ウィンドウ

- springサブフォルダには、TradeReport.context.xmlアセンブリ・ファイルが含まれています。アセンブリ・ファイルはSpring Frameworkに準拠し、TradeReport EPNの内容および構造を含んでいます。
アセンブリ・ファイルは、各EPNステージのデフォルトの構成も含んでいます。デフォルトの構成は、実行中にアプリケーションを再デプロイせずに変更することはできません。EPNダイアグラム上でステージの追加や接続を行うと、Oracle JDeveloperは行った作業をこのファイルに取得します。このファイルを手動で編集することもできます。

注意:

EPNアセンブリ・ファイルのXMLスキーマは、Spring Framework構成ファイルの拡張です。SpringのWebサイトhttp://www.springsource.org/spring-frameworkを参照してください。

- wlevsサブフォルダには、デフォルトのprocessor.xml構成ファイルが含まれています。wlevsフォルダ内のファイルは、実行時にOracle Stream Analytics Visualizerで編集できる構成を持つコンポーネントについて記述しています。Oracle JDeveloperを使用してコンポーネントを作成する際は、構成をprocessor.xmlファイルに入れることも、別のコンポーネント構成ファイルを指定して同じファイルにコンポーネント・タイプをグループ化することもできます。構成ファイルを手動で編集することもできます。

- EPNダイアグラムはアプリケーションを構成しているコンポーネントを示しています。イベント・データはダイアグラムの左からアプリケーションに入り、右に向かってステージからステージに移動します。
EPNダイアグラムは、基礎となるEPN構成のグラフィック表示です。EPNにコンポーネントを追加する際に、Oracle JDeveloperはTradeReport.context.xmlアセンブリ・ファイルおよび構成ファイルに情報を書き込みます。

- MANIFEST.MFは、Oracle Stream AnalyticsサーバーにデプロイするOSGiバンドルの内容についての記述です。

「リソース」ウィンドウ

Oracle JDeveloperの右側の「IDE接続」の下にある「リソース」ウィンドウは、実行中のサーバー接続についての情報を提供しています。

4.5 イベント・データを運ぶイベント・タイプの作成

Oracle Stream Analyticsアプリケーションでは、すべてのイベントがイベント・タイプを持っています。イベント・タイプとは、イベントが取ることのできる値セットと、そのデータに対して行うことができる操作という形で、特定の種類のイベント・データを定義する構造です。

Oracle Stream Analyticsは、新しいイベント・タイプの作成用にいくつかのデータ構造をサポートしています。そのデータ構造とは、JavaBeanクラス、タプル、およびjava.util.Mapクラスです。JavaBeanクラスは新しいイベント・タイプの最善の構造で、この説明で取引イベントを定義するために使用されています。

生のイベント・データがOracle Stream Analyticsアプリケーションに到着すると、アプリケーションはそのデータを特定のイベント・タイプのイベントにバインドします。イベント・タイプは、保持できるデータのセットと、そのセット内の各データに必要となるタイプという形で定義できます。

この説明では、イベント・データはCSVファイルから一貫性のある次のようなカンマ区切り値の行としてアプリケーションに渡されます。

IBM,15.5,3.333333333,3000,15 SUN,10.8,-1.818181818,5000,11
ORCL,14.1,0.714285714,6000,14
GOOG,30,-6.25,4000,32
YHOO,7.8,-2.5,1000,8

このCSVファイルにはデータ列のラベルはありませんが、ラベルが存在する場合には表4-1に示すようなJavaデータ型に対応します。Oracle Stream Analyticsでは、イベント・タイプを定義するJavaデータ型をプロパティと呼びます。

表4-1 イベント・データのイベント・タイプへのマッピング

考えられる列

Javaデータ型

銘柄記号

String

1株当たりの価格

Double

変化率

Double

株式取引量

Integer

終値

Double

TradeEvent JavaBeanの作成

1. TradeReportプロジェクトを選択します。
Oracle JDeveloperで、TradeReportプロジェクトがハイライトされます。

2. 「ファイル」→「新規」→「ギャラリから」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。

3. 「新規ギャラリ」ダイアログの左パネルで「一般」を、右パネルで「Javaクラス」を選択し、「OK」をクリックします。
「Javaクラスの作成」ダイアログが表示されます。

4. Javaクラスの作成ダイアログで、「名前」フィールドにTradeEventと入力し、次のデフォルト設定を入力または確認します。
「名前」: TradeEvent 「パッケージ」: tradereport 「拡張」: java.lang.Object 「アクセス修飾子」: public 「その他の修飾子」: <なし> 「スーパークラスからのコンストラクタ」: チェック 「抽象メソッドの実装」: チェック

5. 「OK」をクリックします。
Oracle JDeveloperは、tradereport.TradeEvent JavaBeanクラスを「アプリケーション・ソース」フォルダの「プロジェクト」に追加します。Oracle JDeveloperの中央のウィンドウの自身のタブに、スタブ・コードが表示されます。

package tradereport;

public class TradeEvent {
public TradeEvent() {
super ();
}
}

private変数およびアクセッサ・メソッドの作成

1. TradeEventクラスで、次の例のように各プロパティ(Javaデータ型)用のprivate変数を追加します。

package tradereport;

public class TradeEvent {
// One variable for each field in the event data.
private String symbol;
private Double price;
private Double lastPrice;
private Double percChange;
private Integer volume;
public TradeEvent () {
super();
}
}

2. アクセッサ・メソッドを生成するために、ソース・エディタの任意の部分を右クリックします。
ソース・エディタ・ポップアップ・メニューが表示されます。

3. ソース・エディタ・ポップアップ・メニューで、「アクセッサの生成」を選択します。
「アクセッサの生成」ダイアログが表示されます。

4. 「アクセッサの生成」ダイアログで、「すべて選択」ボタンをクリックしてから、「OK」をクリックします。

5. TradeEvent.javaタブを閉じ、ファイルを保存します。

TradeEventイベント・タイプの構成

1. 「OEPコンテンツ」フォルダのTradeReportプロジェクトで、EPNダイアグラムをダブルクリックします。
空のEPNダイアグラムが中央のウィンドウに表示されます。

2. EPNダイアグラムの下の「イベント・タイプ」タブを選択します。
「イベント・タイプの定義」ウィンドウには、TradeReport.context.xmlフォルダと、上部の「追加」(+)および「削除」(x)ボタンが表示されます。

3. 「イベント・タイプの定義」ウィンドウで、TradeReport.context.xmlフォルダを選択し、「追加」をクリックします。
イベント・タイプを定義するコントロールが、右側の「イベント・タイプの詳細」の下に表示されます。

4. 「タイプ名」フィールドに、TradeEventと入力します。
イベント・タイプ名はJavaBeanクラス名と同じである必要はありませんが、同じ名前にすることによって、どのイベント・タイプがどのクラスと対応しているかがわかりやすくなります。

5. 「Java Beanで定義されたプロパティ」ラジオ・ボタンを選択し、「クラス」ボックスのJavaBeanの名前を入力するか検索します。
JavaBeanの名前はtradereport.TradeEventです。

注意:

「宣言で定義されたプロパティ」ラジオ・ボタンは、イベントをタプルとして定義するものです。

6. EPNダイアグラム・エディタを閉じ、ファイルを保存します。

EPNアセンブリ・ファイルの表示

1. 「TradeReport」→「OEPコンテンツ」→「Spring」の左パネルで、TradeReport.context.xmlをダブルクリックします。

TradeReport.context.xmlファイルが「ソース」タブに表示されます。

2. TradeReport.context.xmlファイルの下部で、次の行を探します。

<wlevs:event-type-repository>
<wlevs:event-type type-name="TradeEvent">
<wlevs:class>tradereport.TradeEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

Oracle Stream Analyticsはイベント・タイプをイベント・タイプ・リポジトリで管理し、TradeEventイベント・タイプにはtradereport.TradeEventクラスが含まれ(マッピングされ)ていることがわかります。

4.6 シミュレートされたイベント・データを受信するcsvgenアダプタの追加

アダプタは、EPNを出入りするデータを管理します。この例では、ロード・ジェネレータ・ユーティリティと協調し、アプリケーションをテストするためのデータ・フィードをシミュレートするcsvgenアダプタを使用します。ロード・ジェネレータは、サンプル・データ・フィード情報を含むASCIIファイルを読み取り、ポート順に各行のデータを送信します。csvgenアダプタは同じポートでデータをリスニングします。csvgenアダプタ・ロジックは、CSVファイルから読み取ったデータをTradeEventイベント・タイプのイベントに変換します。

注意:

アプリケーションを最終の本番環境にデプロイする前に、アプリケーションが本番環境で受信する着信データのタイプを読み取れるよう、入力アダプタを切り替える必要があります。

この手順では、アダプタを宣言し、プロパティを設定します。完了すると、EPNダイアグラムはTradeReport EPNの最初のステージを作成するアダプタを表示します。

csvgenアダプタの作成およびプロパティの設定

1. 「TradeReport」→「META-INF」→「spring」→「TradeReport.context.xml」アセンブリ・ファイルを開きます。

2. event-type-repository XMLスタンザの下に、次のXMLを追加してcsvgenアダプタを宣言します。

<wlevs:adapter id="StockTradeCSVAdapter" provider="csvgen">
<wlevs:instance-property name="port" value ="9200" />
<wlevs:instance-property name="EventTypeName" value="TradeEvent" />
<wlevs:instance-property name="eventPropertyNames" value="symbol,price,percChange,volume,lastPrice" />
</wlevs:adapter>

注意:

instance-property name値に空白は許可されていません。name値の順番は、テスト・データの表示に説明のあるStockData.csvファイルの順番と一致している必要があります。

XMLスタンザはcsvgenアダプタのインスタンスを宣言し、それをEPNで使用するために構成する3つのプロパティを割り当てます。アダプタはプロパティを使用して、着信する生イベント・データを定義済のイベント・タイプのプロパティにマッピングします。

id: アダプタの一意の識別子です。Oracle Stream Analyticsに含まれるcsvgenの実装を参照するため、プロバイダの属性値はcsvgenである必要があります。

port: どのポートで着信イベント・データをリスニングするかをアダプタ・インスタンスに伝えます。ここでの値9200は、ロード・ジェネレータがイベント・データを送信するポート番号に対応します(詳細は後述)。

eventTypeName: 着信イベント・データを割り当てるイベント・タイプの名前をインスタンスに伝えます。ここで、以前に定義したTradeEventタイプの名前を指定します。

eventPropertyNames。データを割り当てるイベント・タイプ・プロパティの名前をインスタンスに伝えます。この場合、eventPropertyNamesの値は、イベント・タイプ用にJavaBeanで定義した同じプロパティのカンマ区切りリストになります。csvgenアダプタで着信値からイベント・タイプ・プロパティにマップするため、ここの名前はイベント・タイプと同じである必要があり、CSVファイルの各行の対応する値と同じ順序にする必要があります。

3. TradeReport.context.xmlアセンブリ・ファイルを保存して閉じます。

StockTradeCSVAdapterがEPNダイアグラム上に表示され、TradeReport EPNネットワークの最初のステージが作成されます。

4. StockTradeCSVAdapterを確認するために、EPNダイアグラムを開きます。

4.7 イベントを伝達する出力チャネルの追加

チャネルとは、ロジックを使用してイベントをEPNのあるステージから次のステージに転送するパイプです。この手順では、新しく生成されたイベントをStockTradeCSVAdapterから次のステージに運ぶチャネルを追加します。

AdapterOutputChannelの作成

1. EPNダイアグラムを開いた状態で「基本コンポーネント」に移動し、「チャネル」コンポーネントをEPNダイアグラムの空白領域にドラッグします。
「新規チャネル」ダイアログが表示されます。

2. 「新規チャネル」ダイアログに、次の値を入力します。
「チャネルID」: AdapterOutputChannel。イベント・タイプ: TradeEvent。

3. 「OK」をクリックします。
AdapterOutputChannelコンポーネントがEPNダイアグラムに表示されます。

AdapterOutputChannelは、TradeEventタイプのイベントをEPNダイアグラムの次のステージに伝達します。TradeEventイベント・タイプにはTradeEvent JavaBeanクラスが実装されていることを思い出してください。

アダプタとチャネルの接続

1. StockTradeCSVAdapterアイコンをクリックし、AdapterOutputChannelアイコンにドラッグします。

このアクションによって2つのアイコンをつなぐ線が作成され、AdapterOutputChannelがStockTradeCSVAdapterの右に配置されます。これは、イベントがアダプタからチャネルへと流れることを示しています。

2. AdapterOutputChannelアイコンをダブルクリックし、TradeReport.context.xmlアセンブリ・ファイルを参照します。点滅するカーソルがチャネル構成のある行の隣に表示されます。

<wlevs:adapter id="StockTradeCSVAdapter" provider="csvgen">
<wlevs:listener ref="AdapterOutputChannel"/>
<wlevs:instance-property name="eventType" value="TradeEvent"/>
<wlevs:instance-property name="eventPropertyNames" value="symbol, price,
lastPrice, percChange, volume" />
</wlevs:adapter>
<wlevs:channel id="AdapterOutputChannel" event-type="TradeEvent"/>

アダプタとチャネルの接続を作成すると、Oracle JDeveloperはリスナーへの参照を追加します。リスナーのref属性には、チャネル要素のid属性が設定されています。これは、チャネルはアダプタからのイベントをリスニングするという意味です。

3. TradeReport.context.xmlタブを閉じ、ファイルを保存します。

4.8 イベントの受信および報告を行うリスナー・イベント・シンクの作成

次に、チャネルから取引イベントを受信してそのイベントの情報を確認するリスナー・イベント・シンクを追加します。リスナー・イベント・シンクとは、取引イベントをリスニングして処理するロジックを実装するJavaクラスです。このタイプのJavaクラスは、リスナーJavaクラスとも呼ばれます。

次の手順は、取引イベントのリスニング、銘柄記号と取引量情報の取得、および銘柄記号と取引量情報のコンソールへの表示を行うリスナー・イベント・シンクの作成方法を示しています。

リスナー・イベント・シンクの作成

1. TradeReportプロジェクトを選択し、「ファイル」→「新規」→「Javaクラス」の順に選択します。

2. Javaクラスの作成ダイアログで、「名前」フィールドにTradeListenerと入力し、次の設定を確認します。
「名前」: TradeListener 「パッケージ」: tradereport 「拡張」: java.lang.Object 「アクセス修飾子」: public 「その他の修飾子」: <なし> 「スーパークラスからのコンストラクタ」: チェック 「抽象メソッドの実装」: チェック

3. Javaクラスの作成ダイアログの「実装」エリアで「追加」(+)ボタンをクリックして、リスナーがイベント・シンクとなるために実装する必要があるインタフェースを選択します。

4. 「クラス・ブラウザ」ダイアログで、「検索」タブまたは「階層」タブを使用してcom.bea.wlevs.ede.api.StreamSinkクラスを探します。

5. 「一致するクラス」でcom.bea.wlevs.ede.api.StreamSinkクラスをハイライトし、「OK」をクリックします。
Javaクラスの作成ダイアログに戻ります。

6. Javaクラスの作成ダイアログで、「OK」をクリックします。
Oracle JDeveloperは、TradeListener JavaBeanを「アプリケーション・ソース」フォルダの「プロジェクト」に追加します。Oracle JDeveloperの中央のパネルに、スタブ・コードが表示されます。

package tradereport;

import com.bea.wlevs.ede.api.EventRejectedException;
import com.bea.wlevs.ede.api.StreamSink;

public class TradeListener implements StreamSink {
public TradeListener() {
super();
}
@Override
public void onInsertEvent(Object object) throws EventRejectedException {
// TODO Implement this method
}
}

7. TradeListenerクラスで、onInsertEventメソッドを次のように編集します。

@Override
public void onInsertEvent(Object event) throws EventRejectedException {

if (event instanceof TradeEvent){
String symbolProp = ((TradeEvent) event).getSymbol();
Integer volumeProp = ((TradeEvent) event).getVolume();
System.out.println(symbolProp + ":" + volumeProp);
}
}

onInsertEventメソッドは取引イベントをリスニングし、TradeEventを受信すると、tradereport.TradeEvent getメソッドを呼び出して銘柄記号および取引量を取得し、銘柄記号および取引量情報をコンソールに表示します。

8. TradeListener.javaタブを閉じ、ファイルを保存します。

イベント・シンクのイベントBeanとしてのEPNダイアグラムへの追加

1. EPNダイアグラムを開きます。

2. 基本コンポーネントで、「イベントBean」コンポーネントをEPNダイアグラムの空白領域にドラッグします。

「新規イベントBean」ウィザードが表示されます。

3. 「EventBean ID」フィールドに、ListenerBeanと入力します。

4. 「EventBeanクラス」フィールドに、tradereport.TradeListenerと入力し、「OK」をクリックします。

5. EPNダイアグラムでAdapterOutputChannelを選択し、ListenerBeanにドラッグして接続します。

接続によって、取引イベントがチャネルからリスナーBeanに渡されるようになります。

6. AdapterOutputChannelをダブルクリックします。

チャネル行の隣に点滅するカーソルがある状態でTradeReport.context.xmlファイルが表示されます。チャネル・リスナーのref属性はListenerBeanを指しています。

<wlevs:channel id="AdapterOutputChannel" event-type="TradeEvent">
<wlevs:listener ref="ListenerBean" />
</wlevs:channel>
<wlevs:event-bean id="ListenerBean"
class="tradereport.TradeEvent" />

7. TradeReport.context.xmlタブを閉じ、ファイルを保存します。

注意:

デフォルト構成の他に、チャネル用の構成ファイル・エントリはありません。processor.xmlファイルを編集してチャネル構成をカスタマイズするか、チャネル用にchannel.xmlなどの別の構成ファイルを作成してカスタム・チャネル構成を追加できます。「コンポーネントへの構成設定の追加」を参照してください。

4.9 イベントをフィルタするOracle CQLプロセッサの追加

次に、Oracle CQLプロセッサを追加し、ある基準に基づいてイベントをフィルタします。Oracle CQLプロセッサは、AdapterOutputChannelと次の項で作成する出力チャネルを仲介します。

Oracle CQLプロセッサには、記述するOracle CQLコードが含まれています。Oracle CQLコードは、AdapterOutputChannelからプロセッサに送信されるイベントに問合せを行います。この問合せは、4000株以上の取引量がある取引イベントのみを取得します。Oracle Stream Analyticsは取得したイベントを出力チャネルに渡し、イベントはListenerBeanに送信されて処理されます。ListenerBeanは取引イベントのリスニング、銘柄記号と取引量情報の取得、および銘柄記号と取引量情報のコンソールへの表示を行うことを思い出してください。

CQL問合せは、着信する各tradeイベントからsymbolおよびvolumeプロパティを選択し、volumeプロパティの値が4000を超えるかをテストし、1回につき条件を満たした1つのイベントを出力します。NOW演算子は、システムの直近の瞬間に発生したイベントを含む時間ウィンドウを作成します。

<query id="GetHighVolume"><![CDATA[
select trade.symbol, trade.volume
from AdapterOutputChannel [now] as trade
where trade.volume > 4000
]]>
</query>

GetHighVolumeプロセッサおよび問合せの追加

1. 「コンポーネント」ウィンドウの「基本コンポーネント」で、「プロセッサ」コンポーネントをEPNダイアグラムの空白領域にドラッグします。

「新規プロセッサ」ダイアログが表示されます。

2. 「新規プロセッサ」ダイアログの「プロセッサID」フィールドに、GetHighVolumeProcessorと入力し、デフォルトのファイル名processor.xmlのまま「OK」をクリックします。

Oracle Stream Analyticsでは、processor.xmlという名前のプロセッサ構成を含む1つ以上の構成ファイルが必須です。このファイルに他のコンポーネント構成を追加することも、追加の構成ファイルを作成することもできます。

3. AdapterOutputChannelアイコンからListenerBeanアイコンへのコネクタを右クリックし、「削除」をクリックします。

4. AdapterOutputChannelコンポーネントをクリックし、GetHighVolumeProcessorアイコンにドラッグします。

この接続を作成することによって、Oracle CQLプロセッサがチャネルを認識します。チャネルをOracle CQLプロセッサに接続すると、Oracle CQLコードのID値によってチャネルを参照できるようになります。

5. GetHighVolumneProcessorステージを右クリックします。

コンテキスト・メニューが表示されます。

6. コンテキスト・メニューで「構成のソースに移動」を選択します。

Oracle JDeveloperで、ストリーミング・イベント・データに適用するOracle CQLルールを配置するソース・エディタが開きます。ソース・エディタでは、編集または置換できるサンプルの問合せが提供されています。

7. ここに示されているOracle CQLコードでサンプルOracle CQLコードを置換します。

<rules> </rules>間のサンプルOracle CQLを次のOracle CQLコードで置換します。

<query id="GetHighVolume"><![CDATA[
select trade.symbol, trade.volume
from AdapterOutputChannel [now] as trade
where trade.volume > 4000
]]>
</query>

8. 「構成ファイル」タブを閉じ、作業を保存します。

4.10 出力チャネルの追加

1. 基本コンポーネントから、「チャネル」コンポーネントをEPNダイアグラムの空白領域にドラッグします。

2. 「新規チャネル」ウィザードの「チャネルID」フィールドにProcessorOutputChannelと入力し、イベント・タイプとしてTradeEventを選択します。

3. 「OK」をクリックします。

4. GetHighVolumeProcessorコンポーネントを選択し、新規チャネル・コンポーネントにドラッグして、Oracle CQLプロセッサとチャネルを接続します。

5. ProcessorOutputChannelコンポーネントを選択してListenerBeanコンポーネントにドラッグし、チャネルとリスナーを接続します。

これで、EPNダイアグラム内のすべてのコンポーネントが接続されました。

6. ProcessorOutputChannelアイコンをダブルクリックし、TradeReport.context.xmlファイルのチャネル構成を表示します。

ProcessorOutputChannelのエントリでは、TradeEventタイプのイベントはこのチャネルを通ることが指定されています。

<wlevs:channel id="ProcessorOutputChannel" event-type="TradeEvent">
<wlevs:listener ref="ListenerBean"/>
<wlevs:source ref="GetHighVolumeProcessor"/>
</wlevs:channel>

7. プロジェクトのすべてのファイルを保存します。

4.11 デプロイ

このサンプル・アプリケーションをテスト用にデプロイするには、次のアクションを実行します。

- Oracle Stream Analyticsドメインの作成

- Oracle Stream Analyticsサーバーの起動

- Oracle Stream Analyticsサーバー接続の作成

- デプロイメント・プロファイルの作成

- アプリケーションのデプロイ

Oracle Stream Analyticsドメインの作成

ドメインを作成するために、Oracle Stream Analytics構成ウィザードを開始します。

1. 構成ウィザードを起動します。

a. Windowsでは、\Oracle\Middleware\my_oep\oep\common\bin\に移動し、config.cmdを実行します。

b. UNIXでは、/Oracle/Middleware/my_oep/oep/common/binに移動し、./config.shを実行します。

構成ウィザードの「ようこそ」画面が表示されます。

2. 「ようこそ」画面で「次へ」をクリックします。
「ドメインの作成または更新の選択」画面が表示されます。

3. 「ドメインの作成または更新の選択」画面で、「新規OEPドメインの作成」を選択して「次へ」をクリックします。
ドメインの作成または更新画面が表示されます。

4. ドメインの作成または更新画面の「ユーザー名」フィールドにoepadminと入力し、パスワードにwelcome1と入力して確認します。

5. 「次へ」をクリックします。「サーバーの構成」はデフォルトを使用して、「次へ」をクリックします。
「ドメイン・アイデンティティ・キーストアの構成」画面が表示されます。

6. 「ドメイン・アイデンティティ・キーストアの構成」画面で、パスワードにwelcome1を入力して確認し、「次へ」をクリックします。
「構成オプション」画面が表示されます。

7. 「構成オプション」画面で、オプションの構成は行わずに「次へ」をクリックします。
「OEPドメインの作成」画面が表示されます。

8. 「OEPドメインの作成」画面でbasicapp_domainと入力し、場所を書き留めます。
場所は、/Oracle/Middleware/my_oep/user_projects/domainsのようになります。

9. 「作成」をクリックしてしばらく待った後、「完了」をクリックします。

Oracle Stream Analyticsサーバーの起動

1. /Oracle/Middleware/my_oep/user_projects/domains/basicapp_domain/defaultserverに移動します。

2. 適切な起動スクリプトを実行します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

サーバーが起動すると、ターミナル・ウィンドウにメッセージが表示されます。<The application context for "com.bea.wlevs.dataservices" was started successfully>と表示されると、Oracle Stream Analyticsサーバーの起動は完了です。

Oracle Stream Analyticsサーバー接続の作成

1. 「ファイル」→「新規」→「ギャラリから」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの「カテゴリ」→「一般」で、「接続」を選択します。

3. 「新規ギャラリ」ダイアログの「アイテム」で、「OEP接続」を選択して「OK」をクリックします。
「OEPサーバー接続の作成」ダイアログが表示されます。

4. 「OEPサーバー接続の作成」ダイアログで、次の情報を入力します。
「接続が作成される場所」: 「IDE接続」: 選択 「リモートOEPサーバー」: 未チェック 「OEPサーバー接続名」: OEPBasicAppConnection 「OEPサーバー・ホーム・パス」: /Oracle/Middleware/my_oep/ 「デフォルト値の使用」: 未チェック「OEPサーバー・プロジェクト・ディレクトリ」: user_projects/domains/ basicapp_domain/defaultserver 「デフォルト値の使用」: チェック 「ホスト」: 127.0.0.1 「ポート」: 9002 「デフォルト値の使用」: 未チェック 「ユーザー名」: oepadmin 「ユーザー・パスワード」: welcome1 OEPサーバーの追加パラメータ: 空白

5. 「OEPサーバー接続の作成」ダイアログで、「接続のテスト」をクリックします。
「接続のテスト」ボタンの下の領域に「成功」と表示される場合、情報は正確に入力されています。エラーが表示された場合、「成功」と表示されるまで、訂正して再度テストを行います。

6. 「成功」メッセージが表示された後に、「OK」をクリックします。

デプロイメント・プロファイルの作成

1. TradeReportプロジェクトを右クリックし、「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。

2. 「デプロイメント・プロファイルの作成」ダイアログで、次の値を入力します。
「プロファイル・タイプ」: 「OEPプロジェクト・デプロイメント・プロファイル」

注意:

「プロファイル・タイプ」として「OEPプロジェクト・デプロイメント・プロファイル」が正しく選択されていることを確認します。

「デプロイメント・プロファイル名」: basicapp_profile

3. 「OK」をクリックします。
「デプロイメント・プロパティ」ダイアログが表示されます。

4. 「デプロイメント・プロパティ」ダイアログで、情報を検証します。
ローカルOEPサーバー接続: OEPBasicAppConnection (127.0.0.1:9002) 「シンボリック名」: TradeReport.TradeReport 「バンドル名」: TradeReport.TradeReport 「バンドルのバージョン」: 1.0.0 「OSGi JARファイル」: /home/<username>/jdeveloper/mywork/TradeReport/TradeReport/deploy/basicapp_profile.jar

5. 「OK」をクリックします。

アプリケーションのデプロイ

1. TradeReportプロジェクトを右クリックします。
コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで「デプロイ」→「basicapp_profile」の順に選択します。
「デプロイメント・アクション」ダイアログが表示されます。

3. 「デプロイメント・アクション」ダイアログで、「OSGiバンドルのターゲット・プラットフォームへのデプロイ」を選択します。

4. 「次へ」をクリックします。
「Summary」ダイアログ・ボックスが表示されます。

5. 「サマリー」ダイアログで情報を確認します。

6. 「終了」をクリックします。
中央のパネル下部の「デプロイメント - ログ」パネルで、デプロイメント成功のメッセージが表示されます。

7. 「リソース」ウィンドウ右側の「IDE接続」で、「OEPサーバー」→「OEPBasicAppConnection」→「アプリケーション」に移動します。
BasicApplication.BasicApp[Running}接続が表示されます。

デプロイメント・プロファイルによって、必要となるライブラリJARファイルを含むOSGiバンドルが作成されます。

4.12 ロード・ジェネレータの設定および起動

ロード・ジェネレータを使用すると、テスト・データをロードしてOracle Stream Analyticsアプリケーションが本番環境にデプロイされた際の動作を確認することが可能です。

通常は、アプリケーションをデプロイしてからロード・ジェネレータを起動します。ロード・ジェネレータをデプロイ前に起動することも可能ですが、ポート9200にリスナーがないというメッセージが表示されます。アプリケーションをデプロイすると、メッセージは消えます。

テスト・データの参照

1. 任意のテキスト・エディタでインストール済のOracle Stream Analyticsに含まれるStockData.csvファイルを開きます。
デフォルトで、ファイルは次の場所にあります。

/Oracle/Middleware/my_oep/oep/utils/load-generator/StockData.csv

2. StockData.csvファイルを表示します。カンマ区切り値の行が複数含まれ、各行は1件の取引を表しています。

注意:

StockData.csvファイルのイベント・プロパティの順番は、csvgenアダプタの作成およびプロパティの設定で指定したイベント・プロパティの順番と一致している必要があります。

ロード・ジェネレータ・プロパティの検証

1. 任意のテキスト・エディタでインストール済のOracle Stream Analyticsに含まれるStockData.propファイルを開きます。
デフォルトで、ファイルは次の場所にあります。

/Oracle/Middleware/my_oep/oep/utils/load-generator/StockData.prop

2. StockData.propファイルで、次のプロパティを検証します。

- test.csvDataFile: ロード・ジェネレータが読み取るCSVファイルの名前です。この例では、値はStockData.csvです。

- test.port: ロード・ジェネレータがイベント・データを送信するポート番号です。CSVアダプタを構成する際に指定したポートの値9200である必要があります。

- test.packetType: ロード・ジェネレータが処理するデータ・フォーマットのタイプです。この例では、値はCSVです。

ロード・ジェネレータには、test.csvDataFileおよびtest.portプロパティが必須です。他のプロパティはオプションですが、ロード・ジェネレータがCSV形式の入力であることを認識できるように、少なくともtest.packetTypeを設定する必要があります。

3. StockData.propファイルを閉じ、変更している場合は保存します。

ロード・ジェネレータの起動

1. StockData.propプロパティ・ファイルを使用して、ロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd StockData.prop

b. UNIXの場合:

prompt> ./runloadgen.sh StockData.prop

4.13 ロード・ジェネレータおよびサーバーの停止

サンプルの作業を終えたら、ロード・ジェネレータおよびOracle Stream Analyticsサーバーを停止できます。

ロード・ジェネレータの停止

1. ディレクトリを/Oracle/Middleware/my_oep/oep/utils/load-generatorに変更します。

2. [Ctrl] + [C]を押します

サーバーの停止

1. ディレクトリを/Oracle/Middleware/my_oep/user_projects/domains/basicapp_domain/defaultserverに変更します。

2. stopwlevsコマンドを実行します。

5 EDNアダプタを使用した不正検出アプリケーションの作成

この章では、Oracle Stream Analytics 12cリリースの2つの重要な新機能について説明するため、不正検出アプリケーションを作成してデプロイする手順について順を追って説明します。最初の機能は、Oracle JDeveloperでのOracle Stream Analyticsアプリケーション・ライフ・サイクル全体のサポートです。2番目の機能は、Oracle Stream AnalyticsアプリケーションがOracle SOA Suiteとの間でイベントを送受信するためのイベント配信ネットワーク(EDN)アダプタのサポートです。Oracle Stream Analytics不正検出アプリケーションは、すべてOracle JDeveloper内で作成してデプロイできます。

この章の構成は、次のとおりです。

- 不正検出のシナリオ

- 始める前に

- イベント配信ネットワークのウォークスルー

5.1 不正検出のシナリオ

この説明では、顧客の注文のリアルタイム分析を実装するOracle Stream Analyticsアプリケーションを作成します。各顧客は電子メール・アドレスで一意に識別します。注文データ(イベント・データ)がOracle Stream Analyticsサーバーを通過する間に、Oracle Stream Analyticsアプリケーションが動的にデータにアクセスし、潜在的な不正アクティビティを確認します。この例では、任意の24時間の間の同一人物による注文金額の合計が$1000を超えるイベント・パターンを不正の可能性があるアクティビティとしています。

この不正検出サンプル・アプリケーションは、今後のイベント・ベースのリアルタイム不正検出ソリューションの土台として使用できます。デプロイされたOracle Stream Analytics EDNアプリケーションは、Oracle SOA Suiteイベント・ネットワークから送信されるイベントをリスニングします。

5.2 始める前に

この説明は、Oracle SOA SuiteおよびOracle Stream Analyticsがインストール済であることを前提としています。この説明では、トップレベルのインストール・ディレクトリを/Oracle/Middleware/、Oracle SOA Suiteのインストール・ディレクトリを/Oracle/Middleware/my_soa、Oracle Stream Analyticsのインストール・ディレクトリを/Oracle/Middleware/my_oepとします。

JAVA_HOME変数がJDK7_u55以上を、PATH変数がインストール済JDKのbinディレクトリを指すように設定されている必要もあります。

export JAVA_HOME=<path to installation directory>
export PATH=${JAVA_HOME}/bin:${PATH}

注意:

この説明ではOracle Stream Analyticsに特有の機能を紹介しますが、読者が基本的なJavaプログラミングをよく理解していることを前提としています。

5.3 イベント配信ネットワークのウォークスルー

次のリストは、Oracle Stream Analytics不正検出アプリケーションの開発およびデプロイに必要な概要レベルのタスクです。

- Oracle WebLogic Serverの起動

- アーティファクト・フォルダのコピー

- Oracle Stream Analyticsドメインの作成

- Javaメッセージ・サービス・トピックの作成

- Oracle Stream Analyticsサーバーの起動

- Oracle JDeveloperを使用したOracle Stream Analyticsアプリケーションの作成

- JDeveloperによるアプリケーションのデプロイ

- サンプルSOAコンポジットの作成およびデプロイ

- 不正検出アプリケーションのテスト

5.3.1 Oracle WebLogic Serverを起動します。

この説明の手順を実行するために、Oracle JDeveloperおよびOracle WebLogic Serverを起動します。Oracle JDeveloperおよびOracle WebLogic ServerはOracle SOA Suiteの一部です。

Oracle Stream Analyticsサーバーは、この説明の後の手順で起動します。

Oracle JDeveloperおよびOracle WebLogicServerの起動

1. 作業領域で、/Oracle/Middleware/soa/jdeveloper/jdev/binに移動します。

2. コマンドラインで/jdev -cleanと入力し、Oracle JDeveloperを起動します。

Oracle JDeveloperの初期画面が表示されます。

3. Oracle JDeveloperで、「実行」→「サーバー・インスタンスの起動」を選択します。

4. 「デフォルト・ドメインの作成」ダイアログが表示された場合は、デフォルトを使用し、1文字以上の数字を含む7文字以上のドメイン・パスワードを入力および確認します。たとえば、welcome1です。

Oracle WebLogic Serverの起動には数分がかかります。その間、メッセージ領域にメッセージを表示されます。メッセージ「SOAプラットフォームは稼働中でリクエストを受け入れ中です。」、およびメニュー・バーの下でメニュー領域上部の検索フィールドの隣の赤いボックスが表示されたら、サーバーは稼働しています。

5.3.2 アーティファクト・フォルダのコピー

OEP_Fraud_Detection_Walkthrough_Files.zipファイルで、この説明に必要なサポート・ファイルが提供されています。フォルダには、イベント定義ファイル(*.edlおよび*.xsd)、サンプル不正検出Oracle CQLコード、およびサンプルSOAコンポジット(EDNOEPv2)が含まれています。SOAコンポジットとは、Oracle SOA SuiteとEDNの間のインタフェースとなるSOAアプリケーションです。

EDLおよびスキーマ(xsd)ファイルは、バンドルJARファイル内の固定のパスにある必要があります。

アーティファクト・フォルダの取得

1. http://www.oracle.com/technetwork/middleware/complex-event-processing/overview/complex-event-processing-088095.htmlに移動します。

2. OEP_Fraud_Detection_Walkthrough_Files.zipファイルを探し、コンピュータのアクセス可能な場所にダウンロードします。

3. zipファイルを解凍します。

5.3.3 Oracle Stream Analyticsドメインの作成

この手順では、config.shコマンドを使用して構成ウィザードを開始し、不正チェック・アプリケーションが使用する新規ドメインを作成します。

新規ドメインの作成

1. インストール済のOracle Stream Analyticsの/Oracle/Middleware/my_oep/oep/common/binディレクトリに移動します。

2. /Oracle/Middleware/my_oep/oep/common/binディレクトリで、./config.shと入力し、構成ウィザードを開始します。
構成ウィザードの「ようこそ」画面が表示されます。

3. 「ようこそ」画面で「次へ」をクリックします。
「ドメインの作成または更新の選択」画面が表示されます。

4. 「ドメインの作成または更新の選択」画面で、「新規OEPドメインの作成」を選択して「次へ」をクリックします。
ドメインの作成または更新画面が表示されます。

5. ドメインの作成または更新画面の「ユーザー名」フィールドにoepadminと入力し、パスワードにwelcome1と入力して確認します。

6. 「次へ」をクリックします。
「サーバーの構成」画面が表示されます。

7. 「サーバーの構成」画面では、「次へ」をクリックしてデフォルトを使用します。
「ドメイン・アイデンティティ・キーストアの構成」画面が表示されます。

8. 「ドメイン・アイデンティティ・キーストアの構成」画面で、パスワードにwelcome1を入力して確認し、「次へ」をクリックします。
「構成オプション」画面が表示されます。

9. 「構成オプション」画面で、オプションの構成は行わずに「次へ」をクリックします。
「OEPドメインの作成」画面が表示されます。

10. 「OEPドメインの作成」画面でfraudcheck_domainと入力し、場所を書き留めます。
場所は、/Oracle/Middleware/my_oep/user_projects/domainsのようになります。

11. 「作成」をクリックしてしばらく待った後、「完了」をクリックします。

ドメインへのEDNConnectionFactoryの追加

1. /Oracle/Middleware/my_oep/user_projects/domains/fraudcheck_domain/defaultserverへ移動し、テキスト・エディタでfraudcheck_domain startwlevs.shファイルを開きます。

2. 次のシステム・プロパティをファイル下部のJAVA_HOMEコマンドラインに追加します。

システム・プロパティは、-jar $USER_INSTALL_DIR設定の前とします。

-Dedn.jms.topic="jms/fabric/EDNTopic" -Dedn.jms.connection-factory="jms/fabric/EDNConnectionFactory"

startwlevs.shの最終的なJAVA_HOME行は、次のようになります(すべて1行)。

"$JAVA_HOME/bin/java" $JVM_ARGS $JVM_D64 $DEBUG_ARGS
-Dwlevs.home="$USER_INSTALL_DIR"
-Dedn.jms.topic="jms/fabric/EDNTopic"
-Dedn.jms.connection-factory="jms/fabric/EDNConnectionFactory"
-jar "${USER_INSTALL_DIR}/bin/wlevs.jar" $ARGS

システム・プロパティが、デフォルトのアドバンスト・キューイング(AQ)ではなく、EDN用のJMS実装を使用するようOracle Stream Analyticsサーバーに指示しています。

5.3.4 Javaメッセージ・サービス・トピックの作成

Javaメッセージ・サービス(JMS)トピックは、メッセージを1つ以上のサブスクライバへパブリッシュするメカニズムです。Oracle WebLogic Server管理コンソールを使用して、JMSトピックを作成します。

JMSトピックの作成

1. 作業領域でブラウザを開きます。

ブラウザが表示されます。

2. ブラウザのURLボックスで、localhost:7101/consoleと入力します。

管理コンソールのログイン画面が表示されます。

3. ユーザー名weblogic、パスワードwelcome1で管理コンソールにログインします。

「WebLogic Server管理コンソール」画面が表示されます。

4. 左パネルの「ドメイン構造」で、「サービス」→「メッセージング」→「JMSモジュール」の順に展開します。

5. 右パネルの「JMSモジュール」で、SOAJMSModuleをクリックします。

「SOAJMSModuleの設定」画面が表示されます。

6. 右パネルの「リソースのサマリー」で、「新規」をクリックします。

「新しいJMSシステム・モジュール・リソースの作成」画面が表示されます。

7. 「新しいJMSシステム・モジュール・リソースの作成」画面で、「トピック」ラジオ・ボタンを選択して「次へ」を選択します。

「新しいJMSシステム・モジュールの作成 - JMS宛先のプロパティ」画面が表示されます。

8. 「JMS宛先のプロパティ」の「名前」フィールドにEDNTopicと入力し、「JNDI名」フィールドにjms/fabric/EDNTopicと入力します。

9. 「次へ」をクリックします。

次の新しいJMSシステム・モジュールの作成画面が表示されます。

10. 新しいJMSシステム・モジュールの作成画面の「サブデプロイメント」ドロップダウン・リストでSOASubDeploymentを選択し、SOAJMSServerラジオ・ボタンがチェックされていることを確認します。

11. 「終了」をクリックします。

EDNTopic JMSトピックが「リソースのサマリー」表に表示されます。

次の図で、EDNTopicはEDNConnectionFactoryの下の表の3行目に表示されています。EDNConnectionFactoryは、インストール済のOracle WebLogic Serverの一部です。接続ファクトリというオブジェクトを使用すると、JMSクライアントで同時JMS接続を作成できるようになります。EDNConnectionFactoryオブジェクトによって、JMS EDNTopicがOracle SOA SuiteへのEDN接続を作成できるようになります。

5.3.5 Oracle Stream Analyticsサーバーの起動

Oracle Stream Analytics不正検出アプリケーションを作成およびデプロイできるように、Oracle Stream Analyticsサーバーを起動します。

Oracle Stream Analyticsサーバーの起動

1. /Oracle/Middleware/my_oep/user_projects/domains/fraudcheck/domain/defaultserverに移動します。

2. 適切な起動スクリプトを実行します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

サーバーが起動すると、ターミナル・ウィンドウにメッセージが表示されます。<The application context for "com.bea.wlevs.dataservices" was started successfully>と表示されると、Oracle Stream Analyticsサーバーの起動は完了です。

5.3.6 Oracle JDeveloperを使用したOracle Stream Analyticsアプリケーションの作成

- Oracle JDeveloperの起動

- 新しいアプリケーションの作成

- インバウンド・アダプタ・ステージの追加

- 入力チャネル・ステージの追加

- 入力チャネル・コンポーネントとインバウンド・アダプタ・コンポーネントの接続

- edn-inbound-adapterのプロパティ設定

- EPN Oracle CQLプロセッサ・ステージの追加

- プロセッサへのCQLコードの追加

- 入力チャネルとOracle CQLプロセッサの接続

- アウトバウンド・チャネル・ステージの追加

- アウトバウンド・チャネルのプロパティ設定

- プロセッサとアウトバウンド・チャネルの接続

- アウトバウンド・アダプタ・ステージの追加

- アウトバウンド・チャネルとアウトバウンド・アダプタの接続

Oracle JDeveloperの起動

Oracle JDeveloperがすでに実行中でない場合は、起動します。

1. /Oracle/Middleware/my_soa/jdeveloper/jdev/binに移動します。

2. ./jdev -cleanと入力します。
「ロールの選択」ダイアログが表示されます。

3. 「ロールの選択」ダイアログで「Studio開発者(すべての機能)」を選択し、「OK」クリックします。
Oracle JDeveloperが起動するまで、しばらく待ちます。

新しいアプリケーションの作成

1. 「ファイル」→「新規」→「アプリケーション」を選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログで「OEPアプリケーション」を選択し、「OK」をクリックします。
OEPアプリケーションの作成画面が表示されます。

3. OEPアプリケーションの作成ダイアログで、次の値を入力します。
「アプリケーション名」: FraudOEPApplication 「ディレクトリ」: デフォルトを使用 「アプリケーション・パッケージの接頭辞」: 空白のまま

4. 「次へ」をクリックします。
OEPアプリケーションの作成画面が表示されます。

5. OEPアプリケーションの作成ダイアログで、次の値を入力します。
「プロジェクト名」: FraudCheck 「ディレクトリ」: デフォルトを使用 「プロジェクトの機能」: 「OEPスイート」

6. 「次へ」をクリックします。
OEPアプリケーションの作成ダイアログが表示されます。

7. OEPアプリケーションの作成ダイアログで、「次へ」をクリックしてデフォルトを使用します。
OEPアプリケーションの作成ダイアログが表示されます。

8. OEPアプリケーションの作成ダイアログで、「終了」をクリックしてデフォルトを使用します。
空の構成ファイルおよびアセンブリ・ファイルである「空のOEPプロジェクト」テンプレートは、Oracle Stream Analyticsアプリケーションの基本構造を提供します。

この段階では、「OEPサーバー接続」は空白のままにします。後の手順で、Oracle Stream Analyticsサーバー接続を作成します。

9. 「終了」をクリックします。
Oracle Stream Analytics FraudCheckプロジェクトが表示されます。

10. 空の「EPNダイアグラム」タブおよび「コンポーネント」パネルが表示されていない場合は、「アプリケーション」パネルに移動してFraudCheck→「OEPコンテンツ」の順に展開し、「EPNダイアグラム」をダブルクリックします。

インバウンド・アダプタ・ステージの追加

1. EPNダイアグラムが開いた状態で右パネルの「コンポーネント」に移動し、「EDNアダプタ」ウィンドウを開きます。
EDNインバウンド・アダプタおよびアウトバウンド・アダプタが表示されます。

2. 「EDNインバウンド・アダプタ」コンポーネントを「EDNアダプタ」ウィンドウから中央の空のパネル(キャンバス)にドラッグします。
「新規EDNアダプタ」ウィザードが開始します。

3. 「新規EDNアダプタ」ウィザードで、次の値を入力します。
「アダプタID」: edn-inbound-adapter。ファイル名: adapter.xml。

ファイル名をprocessor.xmlから使用方法に固有な名前に変更すると、作成したファイルとOracle JDeveloperが提供するデフォルトのファイルを区別できます。

4. 「次へ」をクリックします。

5. 「EDNインバウンド・アダプタ構成」ダイアログで、Oracle WebLogic Server構成に関する次の値を指定します。
「JNDIプロバイダURL」: t3://localhost:7101「JNDIファクトリ」: weblogic.jndi.WLInitialContextFactory。「ユーザー」: weblogic。パスワード: welcome1。

WebLogic T3クライアントは、Oracle T3プロトコルを使用してOracle WebLogic Serverと通信するJava RMIクライアントです。通常、T3クライアントは他のクライアント・タイプより性能が優れています。

6. 「Edlプロパティ」で、次のように「EDLファイル」をロードします。

a. 「EDLファイル」フィールドの隣の検索アイコン(拡大鏡)をクリックします。

b. OEP_Fraud_Detection_Walkthrough_Files.zipファイルを解凍した場所に移動します。

c. フォルダ内のFraudCheckEvent.edlファイルを選択し、「OK」をクリックします。

7. 「Edlプロパティ」で、「イベント・タイプ」ドロップダウン・リストからFraudCheckRequestを選択します。

8. 「EDNインバウンド・アダプタ構成」ダイアログの「拡張プロパティ」で、次のようにFraudCheckEvent.edlファイルに関連付けられたスキーマ・ファイルを選択します。

a. 「スキーマ・ファイル」フィールドの隣の検索アイコン(拡大鏡)をクリックします。

b. OEP_Fraud_Detection_Walkthrough_Files.zipファイルを解凍した場所に移動します。

c. フォルダ内のFraudCheckType.xsdファイルを選択し、「OK」をクリックします。

9. 「終了」をクリックします。
アップロードしているファイルについての2つの情報ダイアログが表示されます。

10. 情報メッセージを読み、「OK」を押してメッセージを閉じます。
EDNダイアグラムには先ほど作成したedn-inbound-adapterが表示され、Fraud Checkプロジェクトにはアップロードしたファイルがリストされています。

11. 「ファイル」→「保存」を選択して作業を保存します。

入力チャネル・ステージの追加

1. 右パネルの「コンポーネント」で、「ベースEPNコンポーネント」ウィンドウを開きます。
「ベースEPNコンポーネント」が表示されます。

2. 「チャネル」コンポーネントをキャンバスの空き領域にドラッグします。
「新規チャネル」ダイアログが表示されます。

3. 「新規チャネル」ダイアログに次の情報を入力します。
「チャネルID」: ednInputChannel。イベント・タイプ: <NONE>

4. 「OK」をクリックします。
EDNダイアグラムに、先ほど作成したチャネルが表示されます。

5. 「ファイル」→「保存」を選択して作業を保存します。

入力チャネル・コンポーネントとインバウンド・アダプタ・コンポーネントの接続

1. マウスの左ボタンでedn-inbound-adapterを選択し、長押しします。

2. edn-inbound-adapterをednInputChannelにドラッグします。
しばらくすると、アダプタとチャネルを接続する線が表示されます。チャネルがアダプタの左となり、アダプタとチャネルが左から右へ向かう直線となるようにコンポーネントが調整されます。この並びは、EDNを出入りする情報が左から右へ流れることを示しています。

3. 「ファイル」→「保存」を選択して作業を保存します。

edn-inbound-adapterのプロパティ設定

1. ednInputChannelイベント・ステージを選択します。
Oracle JDeveloperで、ednInputChannelがハイライトされます。

2. Oracle JDeveloperの右下隅の「プロパティ」ウィンドウで、「イベント・タイプ」ドロップダウン・リストからedl:FraudCheckRequestを選択します。
これで、FraudCheckRequestイベント・タイプがednInputChannelと関連付けられます。これは、イベントがednInputChannelを通る際に、不正確認アプリケーションがFraudCheckRequestイベントをチェックすることを表します。

3. 「ファイル」→「保存」を選択して作業を保存します。

EPN Oracle CQLプロセッサ・ステージの追加

1. 「ベースEPNコンポーネント」で、「プロセッサ」コンポーネントをキャンバスの空き領域にドラッグします。
「新規プロセッサ」ダイアログが表示されます。

2. 「新規プロセッサ」ダイアログに次の情報を入力します。
「プロセッサID」: ednProcessor。ファイル名: processor.xml。

3. 「OK」をクリックします。
EDNダイアグラムに、先ほど作成したednprocessorが表示されます。

4. 「ファイル」→「保存」を選択して作業を保存します。

プロセッサへのCQLコードの追加

1. ednProcessorステージを右クリックします。
コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで「構成のソースに移動」を選択します。
Oracle JDeveloperで、ストリーミング・イベント・データに適用するOracle CQLルールを配置するソース・エディタが開きます。ソース・エディタでは、編集または置換できるサンプルの問合せが提供されています。

3. OEP_Fraud_Detection_Walkthrough_FilesフォルダにあるProcessorCQLFraudSample.xmlファイルで提供されているOracle CQLでサンプルのOracle CQLを置換します。
<rules>..</rules>を含むサンプルOracle CQLを次のOracle CQLコードで置換します。

<rules>
<view id="FraudView"><![CDATA[
select S.properties as properties,
cast@java(S.javaContent,
com.oracle.oep.FraudCheckRequest.class).getOrderNumber() as orderNumber,
cast@java(S.javaContent,
com.oracle.oep.FraudCheckRequest.class).getEmail() as email,
cast@java(S.javaContent,
com.oracle.oep.FraudCheckRequest.class).getTotalAmount() as totalAmount
from ednInputChannel as S
]]></view>

<!--
With id=FraudViewAmountOk, the view and query statements detect the case where the sum of all order amounts from a specific email over a 24 hour period is less than $1000. In this case, he query issues a FraudCheckResponseEvent with status OK.
-->

<view id="FraudViewAmountOk"><![CDATA[
select email
from FraudView[range 24 hours]
group by FraudView.email
having sum(FraudView.totalAmount) <= 1000.0
]]></view>

<query id="FraudQueryAmountOk"><![CDATA[
select V1.properties as properties,
FraudCheckResponse(V1.orderNumber, "OK")
as javaContent
from FraudView[partition by email rows 1] as V1, FraudViewAmountOk as V2
where V1.email = V2.email
]]></query>

<!--
With id= FraudViewAmountAlert, the view and query statements detect the case where the sum of all order amounts from a specific email over a 24 hour period is greater than $1000. In this case, the query issues a FraudCheckResponseEvent with status THRESHOLD_EXCEEDED.
-->

<view id="FraudViewAmountAlert"><![CDATA[
select email
from FraudView[range 24 hours]
group by FraudView.email
having sum(FraudView.totalAmount) > 1000.0
]]></view>

<query id="FraudQueryAmountAlert"><![CDATA[
select V1.properties as properties,
FraudCheckResponse(V1.orderNumber, "THRESHOLD_EXCEEDED")
as javaContent
from FraudView[partition by email rows 1] as V1, FraudViewAmountAlert
as V2 where V1.email = V2.email
]]></query>
</rules>

4. 「ファイル」→「保存」を選択して作業を保存します。

5. 「EPNダイアグラム」タブをクリックし、EPNダイアグラムに戻ります。

入力チャネルとOracle CQLプロセッサの接続

1. マウスの左ボタンでednInputChannelを選択し、長押しします。
Oracle JDeveloperで、ednInputChannelがハイライトされます。

2. ednInputChannelをednProcessorにドラッグします。
しばらくすると、入力チャネルとOracle CQLプロセッサを接続する線が表示されます。アダプタ、チャネルおよびOracle CQLプロセッサが左から右へ向かう直線となるようにコンポーネントが調整されます。

3. 「ファイル」→「保存」を選択して作業を保存します。

アウトバウンド・チャネル・ステージの追加

1. 「ベースEPNコンポーネント」で、「チャネル」コンポーネントをキャンバスの空き領域にドラッグします。
「新規チャネル」ダイアログが表示されます。

2. 「新規チャネル」ダイアログに次の情報を入力します。
「チャネルID」: ednOutputChannel。イベント・タイプ: <NONE>

3. 「OK」をクリックします。
EDNダイアグラムに、先ほど作成したチャネルが表示されます。

4. 「ファイル」→「保存」を選択して作業を保存します。

アウトバウンド・チャネルのプロパティ設定

1. ednOutputChannelを選択します。
Oracle JDeveloperで、ednOutputChannelがハイライトされます。

2. Oracle JDeveloperの右下隅の「プロパティ」ウィンドウで、「イベント・タイプ」ドロップダウン・リストからedl:FraudCheckResponseを選択します。

3. 「ファイル」→「保存」を選択して作業を保存します。

プロセッサとアウトバウンド・チャネルの接続

1. マウスの左ボタンでednProcessorを選択し、長押しします。
Oracle JDeveloperで、ednProcessorがハイライトされます。

2. ednProcessorをednOutputChannelにドラッグします。
しばらくすると、Oracle CQLプロセッサと出力チャネルを接続する線が表示されます。アダプタ、チャネルおよびOracle CQLプロセッサが左から右へ向かう直線となるようにコンポーネントが調整されます。

3. 「ファイル」→「保存」を選択して作業を保存します。

アウトバウンド・アダプタ・ステージの追加

1. 「EDNアダプタ」で、「EDNアウトバウンド・アダプタ」コンポーネントを「EDNアダプタ」ウィンドウからキャンバスへドラッグします。
「新規EDNアダプタ」ウィザードが開始します。

2. 「新規EDNアダプタ」ウィザードで、次の値を入力します。
「アダプタID」: edn-outbound-adapter。ファイル名: adapter.xml。

3. 「次へ」をクリックします。
「EDNアウトバウンド・アダプタ構成」ダイアログが表示されます。

4. 「EDNアウトバウンド・アダプタ構成」ダイアログで、Oracle WebLogic Server構成に関する次の値を指定します。
「JNDIプロバイダURL」: t3://localhost:7101「JNDIファクトリ」: weblogic.jndi.WLInitialContextFactory。「ユーザー」: weblogic。パスワード: welcome1。

5. 「EDNアウトバウンド・アダプタ構成」ダイアログの「Edlプロパティ」で、次のように「EDLファイル」をロードします。

a. 「EDLファイル」フィールドの隣の検索アイコン(拡大鏡)をクリックします。

b. OEP_Fraud_Detection_Walkthrough_Files.zipファイルを解凍した場所に移動します。
このファイルはすでにロード済であるため、$HOME/jdeveloper/mywork/Application1/FraudCheck/META-INF/wlevs/ednでもこれを見つけることができます。

c. フォルダ内のFraudCheckEvent.edlファイルを選択し、「OK」をクリックします。
FraudCheckEvent.edlファイルをロードする際に、「イベント・タイプ」ドロップダウン・リストには不正確認アプリケーションで使用するイベントが移入されます。

6. 「EDNアウトバウンド・アダプタ構成」ダイアログの「イベント・タイプ」ドロップダウン・リストで、FraudCheckResponseを選択します。

7. 「終了」をクリックします。
EDNダイアグラムには先ほど作成したedn-inbound-adapterが表示され、Fraud Checkプロジェクトにはアップロードしたファイルがリストされています。

8. 「ファイル」→「保存」を選択して作業を保存します。

アウトバウンド・チャネルとアウトバウンド・アダプタの接続

1. マウスの左ボタンでednOutputChannelを選択し、長押しします。
Oracle JDeveloperで、ednOutputChannelがハイライトされます。

2. ednOutputChannelをedn-Outbound-adapterにドラッグします。
しばらくすると、出力チャネルと出力アダプタを接続する線が表示されます。アダプタ、チャネルおよびOracle CQLプロセッサが左から右へ向かう直線となるようにコンポーネントが調整されます。

3. 「ファイル」→「保存」を選択して作業を保存します。

5.3.7 JDeveloperによるアプリケーションのデプロイ

アプリケーションのデプロイには、サーバー接続およびデプロイメント・プロファイルの作成が含まれます。

- Oracle Stream Analyticsサーバー接続の作成

- アプリケーションのデプロイ

Oracle Stream Analyticsサーバー接続の作成

1. Oracle JDeveloperで、「ファイル」→「新規」→「ギャラリから」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。

2. 「新規ギャラリ」ダイアログの「カテゴリ」で、「接続」を選択します。

3. 「新規ギャラリ」ダイアログの「アイテム」で、「OEP接続」を選択して「OK」をクリックします。
「OEPサーバー接続の作成」ダイアログが表示されます。

4. 「OEPサーバー接続の作成」ダイアログで、次の情報を入力します。
「接続が作成される場所」: 「IDE接続」: チェック 「OEPサーバー接続名」: FraudDetectionConnection「OEPサーバー・ホーム・パス」: /Oracle/Middleware/my_oep/ 「デフォルト値の使用」: 未チェック「OEPサーバー・プロジェクト・ディレクトリ」: user_projects/domains/ fraudcheck_domain/defaultserver「デフォルト値の使用」: チェックホスト: 127.0.0.1。ポート: 9002。「デフォルト値の使用」: 未チェック「ユーザー名」: oepadmin。ユーザー・パスワード: welcome1。OEPサーバーの追加パラメータ: 空白

5. 「OEPサーバー接続の作成」ダイアログで、「接続のテスト」をクリックします。
「接続のテスト」ボタンの下の領域に「成功」と表示される場合、情報は正確に入力されています。エラーが表示された場合、「成功」と表示されるまで、訂正して再度テストを行います。

6. 「OEPサーバー接続の作成」ダイアログで「成功」メッセージが表示されたら、「OK」をクリックします。
左パネルの「アプリケーション・リソース」→「接続」→「OEPサーバー接続」にFraudDetectionConnectionが表示されます。

デプロイメント・プロファイルの作成

デプロイメント・プロファイルによって、必要となるライブラリJARファイルを含むOSGiバンドルが作成されます。

1. FraudCheckプロジェクトを右クリックし、「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。

2. 「デプロイメント・プロファイルの作成」ダイアログで、次の値を入力します。
「プロファイル・タイプ」: 「OEPプロジェクト・デプロイメント・プロファイル」

注意:

「プロファイル・タイプ」として「OEPプロジェクト・デプロイメント・プロファイル」が正しく選択されていることを確認します。

「デプロイメント・プロファイル名」: oep-profile-Production

3. 「OK」をクリックします。
「デプロイメント・プロパティ」ダイアログが表示されます。

4. 「デプロイメント・プロパティ」ダイアログで、情報が正しくなるように編集します。
ローカルOEPサーバー接続: FraudDetectionConnection (127.0.0.1:9002) 「シンボリック名」: FraudOEPApplication.FraudCheck 「バンドル名」: FraudOepApplication.FraudCheck 「バンドルのバージョン」: 1.0.0 「OSGi JARファイル」: Application1/FraudCheck/deploy/oep_profile-production.jar

5. 「OK」をクリックします。

アプリケーションのデプロイ

1. FraudCheckプロジェクトを右クリックします。

コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで、「デプロイ」→「oep_profile-Production」の順に選択します。

「oep_profile-Productionのデプロイ」ダイアログが表示されます。

3. 「oep_profile-Productionのデプロイ」ダイアログで、「OSGiバンドルのターゲット・プラットフォームへのデプロイ」を選択します。

4. 「次へ」をクリックします。

「oep_profile-Productionのデプロイ サマリー」ダイアログが表示されます。

5. 次の「oep_profile-Productionのデプロイ サマリー」ダイアログの情報を確認します。

6. 「終了」をクリックします。

中央のパネル下部の「デプロイメント - ログ」ウィンドウに、デプロイメント成功を示すメッセージが表示されます。Oracle Stream Analyticsアプリケーションが実行され、処理を行うEDNイベントの到着を待機します。

左パネルの「アプリケーション・リソース」の「接続」→「OEPサーバー接続」→「OEPConnection」→「アプリケーション」に、FraudOEPApplication.FraudCheck [Running]接続が表示されます。

Oracle Stream Analyticsウィンドウを起動したターミナル・ウィンドウ。INFO: Subscribe Event from Topic=jms/fabric/EDNTopic, JmsType=WLJMS, isXA=false

5.3.8 サンプルSOAコンポジットの作成およびデプロイ

サンプルSOAコンポジットは、アプリケーションが潜在的な不正アクティビティを確認できるようにFraudCheckRequestイベントを提供します。完全なサンプル・コンポジットの作成方法は説明されていませんが、既存または新規のSOAコンポジットを活用するよいコード・サンプルとなります。

OEP_Fraud_Detection_Walkthrough_Files.zipファイルで、EDNOEPv2Proj SOAコンポジットが提供されています。SOAコンポジットはEDNイベントをOracle Stream Analyticsアプリケーションに送信し、結果のEDNイベントがSOAコンポジットに送り返されます。その後、SOAコンポジットはJCAファイル・アダプタを使用してファイルに情報を書き込みます。ファイルは後の確認や分析のために保存されます。

提供されるSOAコンポジットへのアクセス

1. Oracle JDeveloperで、「ファイル」→「開く」の順に選択します。
「開く」ダイアログが表示されます。

2. 「開く」ダイアログで、OEP_Fraud_Detection_Walkthrough_Files.zipファイルを解凍した場所に移動します。

3. EDNOEPv2フォルダを開き、EDNOEPv2.jwsプロジェクトを選択します。

4. 「開く」をクリックします。
Oracle JDeveloperによって、FraudCheckプロジェクトにSOAコンポジットが追加されます。

SOAメディエータの参照およびデプロイ

1. 「プロジェクト」→「EDNOEPv2Proj」→「SOA」→「メディエータ」に移動し、メディエータを参照します。

2. EDNEOPv2Projプロジェクトを右クリックします。
コンテキスト・メニューが表示されます。

3. コンテキスト・メニューで、「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。

4. 「デプロイメント・プロファイルの作成」ダイアログの「プロファイル・タイプ」で、SOA-SARファイルを選択します。

5. 「デプロイメント・プロファイルの作成」ダイアログで、「デプロイメント・プロファイル名」フィールドにsar_OEP_TEST_COMPOSITEと入力します。

6. 「OK」をクリックします。
SARデプロイメント・プロパティダイアログが表示されます。

7. 「SARデプロイメント・プロファイルのプロパティ」ダイアログで、「OK」をクリックします。

8. EDNEOPv2Projプロジェクトを右クリックします。
コンテキスト・メニューが表示されます。

9. コンテキスト・メニューで「デプロイ」→sar_OEP_TEST_COMPOSITEを選択します
「デプロイメント・アクション」ダイアログが表示されます。

10. 「デプロイメント・アクション」ダイアログで、「アプリケーション・サーバーへのデプロイ」を選択します。

11. 「次へ」をクリックします。
「構成のデプロイ」ダイアログが表示されます。

12. 「構成のデプロイ」ダイアログで、「同じリビジョンIDで既存のコンポジットを上書きします。」チェック・ボックスをチェックします。
デフォルト値のままにしておきます。

13. 「次へ」をクリックします。
「サーバーの選択」ダイアログが表示されます。

14. 「サーバーの選択」ダイアログでIntegratedWebLogicServerを選択し、「次へ」をクリックします。
「SOAサーバー」ダイアログが表示されます。

15. 「SOAサーバー」ダイアログで、デフォルト値のまま「次へ」をクリックします。
「Summary」ダイアログ・ボックスが表示されます。

16. 「サマリー」ダイアログで設定が正確であることを確認し、「終了」をクリックします。
変更されたSOAコンポジットのデプロイが成功すると、FraudCheckRequestおよびFraudCheckResponseイベント・タイプのデフォルトJMSマッピングが作成されます。このJMSマッピングは、WLS JMSではなくAQを使用する可能性があります。このOracle Stream Analyticsアプリケーションを相互運用するには、これらの特定のイベント・タイプのJMSマッピングでWLS JMSを使用するように変更する必要があります。マッピングの変更は、Oracle SOA Suiteの一部であるOracle Enterprise Managerで実施します。

Oracle Enterprise ManagerによるJMSマッピングの検証

1. ブラウザを開き、URLボックスにlocalhost:7101/emと入力します。

2. ユーザー名weblogic、パスワードwelcome1でログインします。

3. 左パネルで、「SOA」→「soa-infra (Default Server)」→「デフォルト」→「EDNOEPv2Proj」の順に展開します。

4. soa-infra (Default Server)を右クリックし、コンテキスト・メニューから「ビジネス・イベント」を選択します。
右パネルに「ビジネス・イベント」画面が表示されます。

5. 「ビジネス・イベント」画面で、「イベント」タブを選択します。
「ネームスペースおよびイベント」表のJMSマッピング列には、FraudCheckRequestおよびFraudCheckResponseと「デフォルト」リンクが表示されます。

6. 「イベント」タブで、「デフォルト」リンクを選択します。
JMSマッピングダイアログが表示されます。

7. JMSマッピングダイアログで次の情報を検証し、必要に応じて変更します。
「Oracle Enterprise Messaging System(OEMS)」: Oracle WebLogic JMS JNDI接続ファクトリ(XA、恒久): eis/wls/EDNxaDurableTopic JNDI接続ファクトリ(XA、非恒久): eis/wls/EDNxaTopic JNDI接続ファクトリ(非XA、恒久): eis/wls/EDNLocalTxDurableTopic JNDI接続ファクトリ(非XA、非恒久): eis/wls/EDNLocalTxTopicJMSトピック名: jms/fabric/EDNTopic

8. 「適用」を押します。
JMSマッピング値が「変更」に変わります。

9. 2番目の「デフォルト」リンクに対して同じ手順を繰り返します。

結果分析用のサンプルSOAコンポジットの更新

1. Oracle JDeveloperの「EDNOEPv2Proj」→「SOA」で、EDNOEPv2Projをダブルクリックしてダイアグラムを表示します。

2. ダイアグラムで、EDNToFileOutputコンポーネントをダブルクリックします。
「ファイル・アダプタ構成ウィザード」が表示されます。

3. 「ファイル・アダプタ構成ウィザード」で、「ファイル構成」ダイアログが表示されるまで、表示された値を使用して次に進みます。
「ファイル構成」ダイアログが表示されます。

4. 「ファイル構成」ダイアログで、「発信ファイルのディレクトリ(物理パス)」を環境において有効な場所に変更します。

5. 後にレスポンス情報の確認および分析を行う際に使用するため、新しい場所を書き留めます。

6. 「次へ」をクリックし、デフォルト値を使用して他の手順を完了します。

7. 「終了」をクリックします。

SOAコンポジットの再デプロイ

1. EDNEOPv2Projプロジェクトを右クリックします。

コンテキスト・メニューが表示されます。

2. コンテキスト・メニューで「デプロイ」→sar_OEP_TEST_COMPOSITEを選択します

「デプロイメント・アクション」ダイアログが表示されます。

3. 「デプロイメント・アクション」ダイアログで、「アプリケーション・サーバーへのデプロイ」を選択します。

4. 「次へ」をクリックします。

「構成のデプロイ」ダイアログが表示されます。

5. 「構成のデプロイ」ダイアログで、「同じリビジョンIDで既存のコンポジットを上書きします。」チェック・ボックスをチェックし、デフォルト値を保持します。

6. 「次へ」をクリックします。

「サーバーの選択」ダイアログが表示されます。

7. 「サーバーの選択」ダイアログでIntegratedWebLogicServerを選択し、「次へ」をクリックします。

「SOAサーバー」ダイアログが表示されます。

8. 「SOAサーバー」ダイアログで、デフォルト値のまま「次へ」をクリックします。

「Summary」ダイアログ・ボックスが表示されます。

9. 「サマリー」ダイアログで設定が正確であることを確認し、「終了」をクリックします。

変更されたSOAコンポジットのデプロイが成功すると、FraudCheckRequestおよびFraudCheckResponseイベント・タイプのデフォルトJMSマッピングが作成されます。このJMSマッピングは、WLS JMSではなくAQを使用する可能性があります。このOracle Stream Analyticsアプリケーションを相互運用するには、これらの特定のイベント・タイプのJMSマッピングでWLS JMSを使用するように変更する必要があります。イベント・タイプの変更は、Oracle SOA Suiteの一部であるOracle Enterprise Managerで実施します。

5.3.9 不正検出アプリケーションのテスト

Oracle Enterprise Managerを使用して、SOAコンポジット、その相互作用、および新しいOracle Stream Analyticsアプリケーションとの統合をテストします。

Enterprise Managerにログインし、「Webサービスのテスト」画面に移動します。

1. ブラウザを開き、URLボックスにlocalhost:7101/emと入力します。
Enterprise Managerのログイン画面が表示されます。

2. ユーザー名weblogic、パスワードwelcome1でEnterprise Managerにログインします。
「SOAインフラストラクチャ」画面が表示されます。

3. 「SOAインフラストラクチャ」画面左パネルの「ターゲット・ナビゲーション」で、「SOA」→「soa-infra (Default Server)」→「デフォルト」の順に展開し、EDNOEPv2Projを選択します。

4. 「SOAインフラストラクチャ」右パネルで、「テスト」ボタンを押します。

SOAコンポジットおよびOracle Stream Analyticsアプリケーションのテスト

1. 「Webサービスのテスト」画面で、「入力引数」セクションが表示されるまで右パネルを下へスクロールします。

2. 「入力引数」セクションの「SOAP本文」には、2つのフィールド「電子メール」および「量」があります。

「電子メール」および「量」フィールドには、電子メール・アドレスおよびOracle Stream Analyticsアプリケーションに渡される量を入力します。Oracle CQLのGroup By句が、関連する注文と送金額の各コレクションを識別するために電子メール・アドレスを使用します。

3. 「電子メール」フィールドに電子メール・アドレスと、「量」フィールドに200.00と入力します。

4. ページの先頭にスクロールし、「Webサービスのテスト」をクリックします。

Oracle WebLogicサーバーを起動したターミナル・ウィンドウを確認します。FraudCheckEventがファイルにパブリッシュされたことがわかる次のようなメッセージが表示されています。

INFO: Publishing Event "{http://xmlns.oracle.com/Application2/Project1/FraudCheckEvent}FraudCheckResponse" to Topic="jms/fabric/EDNTopic", JmsType=WLJMS, isXA=false

5. 同じ「電子メール」アドレスでさらに「量」を入力して「Webサービスのテスト」をクリックし、$1000を超えるまでイベントを送信します。

6. テキスト・エディタでoepToedn-output_PRODUCTION.txtファイルのディレクトリに移動し、このファイルを開きます。

作成した注文番号に対するレコード・ステータスがTHRESHOLD EXCEEDEDとなっています。Oracle Stream Analyticsアプリケーション内のOracle CQL文が、このステータスを決定しています。

6 QuickFixアダプタを使用した注文追跡アプリケーションの作成

QuickFixアダプタは、Financial Information eXchange (FIX)標準に準拠し、証券取引における電子交換をリアルタイム制御するメッセージング・エンジンです。QuickFixアダプタは、FIXメッセージのリスニング、FIXメッセージのOracle Stream Analyticsイベントへの変換、および次のステージで処理を行うためのイベント送信を行います。

この章の内容は次のとおりです。

- 注文追跡サンプル・アプリケーション

- サンプル・アプリケーションのテスト

6.1 注文追跡サンプル・アプリケーション

図6-1に、quickfix.ordertrackerという名前の単純な注文追跡アプリケーションのEPNを示します。FIXデータは左からEPNに入り、イベントに変換されます。イベントはOracle CQLプロセッサに運ばれて処理された後、イベント・シンクに運ばれます。

図6-1 quickfix.ordertrackerアプリケーションEPN

サンプルは、次の構成ファイルおよびJavaクラス・ファイルで構成されています。

- アセンブリ・ファイル

- 構成ファイル

- QuickFIXEvent.java

- EventListerner.java

アセンブリ・ファイル

<?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-v12_1_3_0.xsd
<wlevs:event-type-repository>
<wlevs:event-type type-name="QuickFIXEvent">
<wlevs:class>event.QuickFIXEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="QuickFIXInbound" provider="quickfix-inbound"/>
<wlevs:processor id="QuickFIXProcessor"/>

<wlevs:channel id="QuickFIXInChannel" event-type="QuickFIXEvent">
<wlevs:listener ref="QuickFIXProcessor" />
<wlevs:source ref="QuickFIXInbound"/>
</wlevs:channel>

<wlevs:event-bean id="eventListener" class="listeners.EventListener">
<wlevs:instance-property name="nodeName" value="QuickFIXInbound" />
</wlevs:event-bean>

<wlevs:channel id="QuickFIXOutChannel" event-type="QuickFIXEvent">
<wlevs:listener ref="eventListener" />
<wlevs:source ref="QuickFIXProcessor"/>
</wlevs:channel>
</beans>

構成ファイル

次のエントリで、QuickFixアダプタ構成を示します。構成には1つ以上の<default-session>プロパティ値が必要で、0個以上の<session>タグを持つことができます。

BeginStringプロパティがFIXメッセージのバージョンを示しています。QuickFIXエンジンは、このデータを検証しません。

注意:

12cリリースでは、Oracle Stream AnalyticsはQuickFIX動的アクセプタ・セッションをサポートしません。

<?xml version="1.0" encoding="UTF-8"?><wlevs:config xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application" >
<quickfix-adapter>
<name>QuickFIXInbound</name>
<event-type>QuickFIXEvent</event-type>
<default-session description="default configuration">
<configuration>
<config-name>FileStorePath</config-name>
<config-value>/scratch/tprabish/garage/quickfix/acceptor/filestore
</config-value>
</configuration>
<configuration>
<config-name>FileLogPath</config-name>
<config-value>/scratch/tprabish/garage/quickfix/acceptor/filelog
</config-value>
</configuration>
<configuration>
<config-name>UseDataDictionary</config-name>
<config-value>N</config-value>
</configuration>
<configuration description="identifier-message format">
<config-name>BeginString</config-name>
<config-value>FIX.4.2</config-value>
</configuration>
<configuration>
<config-name>ConnectionType</config-name>
<config-value>acceptor</config-value>
</configuration>
<configuration>
<config-name>StartTime</config-name>
<config-value>00:00:00</config-value>
</configuration>
<configuration>
<config-name>EndTime</config-name>
<config-value>00:00:00</config-value>
</configuration>
<configuration>
<config-name>HeartBtInt</config-name>
<config-value>30</config-value>
</configuration>
<configuration>
<config-name>SocketAcceptPort</config-name>
<config-value>9876</config-value>
</configuration>
<configuration>
<config-name>RefreshMessageStoreAtLogon</config-name>
<config-value>Y</config-value>
</configuration>
</default-session>

<session description="ordertracker configuration">
<configuration description="identifier-acceptor">
<config-name>SenderCompID</config-name>
<config-value>SAMPLEACCEPTOR</config-value>
</configuration>
<configuration description="identifier-initiator">
<config-name>TargetCompID</config-name>
<config-value>SAMPLESENDER</config-value>
</configuration>
</session>
</quickfix-adapter>
<processor>
<name>QuickFIXProcessor</name>
<rules>
<query id="ExampleQuery"> <![CDATA[ select * from QuickFIXInChannel
[now] ]]>  </query>
</rules>
</processor>
</wlevs:config>

QuickFIXEvent.java

package event;

public class QuickFIXEvent {
private String text;
private String origClOrdID;
private String clOrdID;
private String symbol;
private String side;

public String getText() { return text; }
public void setText(String text) { this.text = text; }
public String getOrigClOrdID() { return origClOrdID; }
public void setOrigClOrdID(String origClOrdID) {this.origClOrdID = origClOrdID;}
public String getClOrdID() { return clOrdID; }
public void setClOrdID(String clOrdID) { this.clOrdID = clOrdID; }
public String getSymbol() { return symbol; }
public void setSymbol(String symbol) { this.symbol = symbol; }
public String getSide() { return side; }
public void setSide(String side) { this.side = side; }

@Override
public String toString() {
StringBuilder sb=new StringBuilder();
sb.append("\t\t\t[origClOrdID=").append(origClOrdID).append("]\n")
.append("\t\t\t[clOrdID=").append(clOrdID).append("]\n")
.append("\t\t\t[symbol=").append(symbol).append("]\n")
.append("\t\t\t[side=").append(side).append("]\n")
.append("\t\t\t[text=").append(text).append("]\n");
return sb.toString();
}
}

EventListerner.java

EventListener.javaクラスは、次のサンプル・コードで使用されます。

package listeners;

import com.bea.wlevs.ede.api.EventRejectedException;
import com.bea.wlevs.ede.api.StreamSink;

//The following EventListener class is an event sink. It is provided to
//demonstrate that the messages have been received and processed in the EPN.
public class EventListener implements StreamSink {
private String nodeName_ = "N/A";
public void setNodeName(String nodeName) {
nodeName_ = nodeName;
}

public void onInsertEvent(Object event) throws EventRejectedException {
System.out.println("Received the following event in the listener");
System.out.println("[node:" + nodeName_ + "] onInsertEvent():\n"     + event);
}
}

6.2 サンプル・アプリケーションのテスト

サンプルQuickFixアダプタ・アプリケーションをデプロイすると、QuickFIXエンジンが開始され、構成ファイルで指定されたポートをリスニングします。アプリケーションをテストするには、次のファイルでQuickFIXイニシエータ・アプリケーションを記述してこのアダプタにメッセージを送信します。

- QuickFixSampleInitiatorApp.java

- SampleInitiator.java

- initiator_sample.cfg

- runInitiator.bat

注意:

次のサンプルで示されている値の一部は、環境に基づいて置換する必要があります。

QuickFixSampleInitiatorApp.java

package proto.quickfix;

import java.io.FileInputStream;
import quickfix.Acceptor;
import quickfix.Application;
import quickfix.DefaultMessageFactory;
import quickfix.FileLogFactory;
import quickfix.FileStoreFactory;
import quickfix.Initiator;
import quickfix.LogFactory;
import quickfix.MessageFactory;
import quickfix.MessageStoreFactory;
import quickfix.ScreenLogFactory;
import quickfix.Session;
import quickfix.SessionNotFound;
import quickfix.SessionSettings;
import quickfix.SocketAcceptor;
import quickfix.SocketInitiator;
import quickfix.field.ClOrdID;
import quickfix.field.OrigClOrdID;
import quickfix.field.Side;
import quickfix.field.Symbol;
import quickfix.field.Text;

public class QuickFixSampleInitiatorApp {

private static SampleInitiator initiatorApp;

public static void main(String args[]) throws Exception {
Initiator initiator = startInitiator();
while(!initiator.isLoggedOn()){
System.out.println("Waiting for initiator logon");
synchronized (initiator) {
initiator.wait(1000);
}
};
System.out.println("initiator loggedon");
initiatorApp.sendMessage();
initiator.stop();
}

public static Initiator startInitiator() throws Exception {
String fileName =
"D:/installs/helios/eclipse/workspace/quickfix.ordertracker/src/proto/
initiator_sample.cfg";

//initiatorApp is your class that implements the Application interface.
initiatorApp = new SampleInitiator();
SessionSettings settings = new SessionSettings(new FileInputStream(fileName));
MessageStoreFactory messageStoreFactory = new FileStoreFactory(settings);
LogFactory logFactory = new ScreenLogFactory(true, true, true);
MessageFactory messageFactory = new DefaultMessageFactory();
Initiator initiator = new SocketInitiator(initiatorApp,
messageStoreFactory, settings, logFactory, messageFactory);
initiator.start();
return initiator;
}
}

SampleInitiator.java

package proto.quickfix;

import quickfix.Application;
import quickfix.DoNotSend;
import quickfix.FieldNotFound;
import quickfix.IncorrectDataFormat;
import quickfix.IncorrectTagValue;
import quickfix.Message;
import quickfix.RejectLogon;
import quickfix.Session;
import quickfix.SessionID;
import quickfix.SessionNotFound;
import quickfix.UnsupportedMessageType;
import quickfix.field.ClOrdID;
import quickfix.field.OrigClOrdID;
import quickfix.field.Side;
import quickfix.field.Symbol;
import quickfix.field.Text;

public class SampleInitiator implements Application{
private SessionID sessionIDTmp;
public volatile boolean isLoggedOn;

@Override
public void fromAdmin(Message arg0, SessionID arg1) throws FieldNotFound,
IncorrectDataFormat, IncorrectTagValue, RejectLogon { }

@Override
public void fromApp(Message arg0, SessionID arg1) throws FieldNotFound,
IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType {
System.out.println("Initiator received message");
}

public void sendMessage() throws SessionNotFound {
quickfix.fix42.OrderCancelRequest message =
new quickfix.fix41.OrderCancelRequest( new OrigClOrdID("123"),
new ClOrdID("321"),
new Symbol("LNUX"),
new Side(Side.BUY));
message.set(new Text("Cancel My Order!"));
System.out.println("SESSION ID IS-"+sessionIDTmp);
Session.sendToTarget(message, sessionIDTmp);
}

@Override
public void onCreate(SessionID arg0) {
System.out.println("Initiator session created"+arg0);
this.sessionIDTmp=arg0;
}

@Override
public void onLogon(SessionID arg0) {
System.out.println("Initiator logon done"+arg0);
isLoggedOn=true;
}

//Optionally, you can implement the onLogout and toAdmin callback methods below.
//To implement them, see the QuickFix documentation: http://www.quickfixj.org.
@Override
public void onLogout(SessionID arg0){
//Notifies you when an FIX session is offline.
//The cause can be a logout, forced termination, or loss of network connection.
}

@Override
public void toAdmin(Message arg0, SessionID arg1) {
//Provides a look at the administrative messages sent from your FIX machine
//to another party. This method enables you to log messages. You can add
// fields to an adminstrative message before it is sent.
}

@Override
public void toApp(Message arg0, SessionID arg1) throws DoNotSend {
System.out.println("Initiator toApp");
}
}

initiator_sample.cfg

[default]
FileStorePath=/scratch/myusername/garage/quickfix/initiator/filestore
BeginString=FIX.4.2
UseDataDictionary=N
ConnectionType=initiator

[session]
SenderCompID=SAMPLESENDER
TargetCompID=SAMPLEACCEPTOR
SocketConnectHost=10.240.30.74
SocketConnectPort=9876
StartTime=00:00:00
EndTime=00:00:00
HeartBtInt=30
ReconnectInterval=5

runInitiator.bat

set QFJ_HOME=D:\installs\helios\eclipse\workspace\quickfix.ordertracker
set CP=%QFJ_HOME%/lib/mina-core-1.1.7.jar;%QFJ_HOME%/lib/slf4j-api-1.6.3.jar;%QFJ_HOME%/lib/slf4j-jdk14-1.6.3.jar;%QFJ_HOME%/lib/slf4j-log4j12-1.6.3.jar;%QFJ_HOME%/lib/quickfixj-all-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-core-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix40-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix41-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix42-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix43-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix44-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fix50-1.5.2.jar;%QFJ_HOME%/lib/quickfixj-msg-fixt11-1.5.2.jar;%QFJ_HOME%/dist/quickfix.ordertracker.jar

java -cp %CP% proto.quickfix.QuickFixSampleInitiatorApp

7 Oracle Stream Analyticsでのイベント処理のサンプル

この章では、Oracle Stream Analyticsのインストールによって提供されるサンプル・コードを紹介し、コードの設定方法および使用方法を説明します。Oracle Stream Analyticsは、サンプル・チェック・ボックスを選択してインストールする必要があります。

この章の構成は、次のとおりです。

- サンプルについて

- 環境設定

- サンプルでのOracle Stream Analytics Visualizerの使用

- サンプルのパフォーマンスの向上

- HelloWorldの例

- Oracle Continuous Query Languageのサンプル

- Oracle Spatialのサンプル

- 外国為替取引(FX)のサンプル

- シグナル生成サンプル

- イベントの記録と再生のサンプル

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

Oracle Stream Analytics Visualizerの詳細は、「Visualizerを使用したタスクの実行」を参照してください。

7.4 サンプルのパフォーマンスの向上

Oracle Stream Analyticsを大量のメモリーがあるコンピュータで実行する場合は、ロード・ジェネレータおよびサーバー・ヒープ・サイズをコンピュータのサイズに応じて適切に設定します。

十分なメモリがあるコンピュータでは、サーバー用に1GB、ロード・ジェネレータ用に512MBから1GBのヒープ・サイズを推奨します。

7.5 HelloWorldサンプル

HelloWorldサンプルでは、一般的なOracle Stream Analyticsアプリケーションの作成方法を示します。

図7-1にHelloWorldサンプルのイベント処理ネットワーク(EPN)を示します。EPNにはアプリケーションを構成するコンポーネントが含まれ、その組合せが定義されています。

図7-1 HelloWorldサンプルのイベント処理ネットワーク

このサンプルには次のコンポーネントが含まれています。

- 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ドメインからの実行:

1. コマンド・ウィンドウを開き、インストールの/Oracle/Middleware/my_oep/oep/examples/domains/helloworld_domain/defaultserverにあるhelloworldドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 正しいコマンドライン引数で適切なサーバー起動スクリプトを実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. 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. helloworld Oracle Stream Analyticsサーバーがまだ実行されていない場合は、helloworldドメインからのHelloWorldサンプルの実行の手順に従ってサーバーを起動します。

再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/helloworldにあるHelloWorldソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. 次のようにdeploy Antターゲットを実行して、アプリケーションJARファイルをOracle Stream Analyticsにデプロイします。

prompt> ant -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のhelloworldアプリケーションJARファイルを上書きします。

出力先に約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

この問題を回避するには、一意のアドレスおよびポートを指定して個別にクラスタを作成します。

図7-2 CQLサンプルのイベント処理ネットワーク

アプリケーションは、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の様々なコンポーネントの詳細は、このマニュアルの他のサンプルを参照してください。

7.6.1 CQLサンプルの実行

最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。

CQLアプリケーションはcql_domainドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Stream Analyticsのインスタンスを起動します。

CQLのサンプルを実行するには:

1. コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/cql_domain/defaultserverにあるCQLドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

これで、CQLアプリケーションでデータ・フィードからデータを受信する準備ができました。

3. 不足イベント問合せ用のデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。

4. /Oracle/Middleware/my_oep/oep/utils/load-generatorに移動します。

5. orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd orderData.prop

b. UNIXの場合:

prompt> ./runloadgen.sh orderData.prop

6. /Oracle/Middleware/my_oep/oep/utils/load-generatorに移動します。

7. 移動平均問合せ用のデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。

8. StockData.propプロパティ・ファイルを使用して、ロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd StockData.prop

b. UNIXの場合:

prompt> ./runloadgen.sh StockData.prop

9. キャッシュの問合せのデータ・フィードをシミュレートするには、ただサンプルを実行します。
ロード・データが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のサンプルをビルドしてデプロイするには:

1. CQL Oracle Stream Analyticsインスタンスがまだ実行されていない場合は、CQLサンプルの実行の手順に従ってサーバーを起動します。

再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/cqlにあるCQLソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. 次のようにdeploy Antターゲットを実行して、アプリケーションJARファイルをOracle Stream Analyticsにデプロイします。

prompt> ant -Dusername=oepadmin -Dpassword=welcome1 -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のCQLアプリケーションJARファイルを上書きします。

5. CQLアプリケーションが必要とするロード・ジェネレータが実行されていない場合は、「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 Visualizerの問合せウィザードを使用して作成する方法について説明します。

顧客注文ワークフロー・イベントがOracle Event Processingシステムに流れる顧客注文ワークフローについて考えてみます。

有効なシナリオでは、表7-1にリストされた順番でイベントが発生します。

表7-1 有効な注文ワークフロー

イベント・タイプ

説明

C

顧客注文

A

承認

S

出荷

ただし、表7-2に示すように、承認イベントなしに注文が出荷されるとエラーとなります。

表7-2 無効な注文ワークフロー

イベント・タイプ

説明

C

顧客注文

S

出荷

承認イベントの欠落を検出してアラート・イベントを生成する問合せを作成してテストします。

- 不足イベントの問合せの作成:

- 不足イベントの問合せのテスト:

不足イベントの問合せの作成:

1. CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

「ログオン」画面が表示されます。

3. 「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。

4. 右パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。

5. cqlノードを選択します。
CQLアプリケーション画面が表示されます。

6. 「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。

7. Oracle CQLプロセッサorderProcessorのアイコンをダブルクリックします。
Oracle CQLプロセッサ画面が表示されます。

8. 「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、テンプレートからOracle CQL問合せを作成します。

9. 「テンプレート」タブを選択します。
「テンプレート」タブが表示されます。

10. 「パターン一致」テンプレートをクリックして「テンプレート」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

11. SSourceのアイコンをダブルクリックします。
SSource構成画面が表示されます。

問合せのソースは、orderChannelストリームです。

12. SSourceを次のように構成します。

- 「タイプ」として「ストリーム」を選択します。

- 「ソースの選択」プルダウン・メニューでorderChannelを選択します。

13. 「保存」をクリックします。

14. 「問合せの保存」をクリックします。

15. 「パターン」アイコンをダブルクリックします。
「パターン」構成画面が表示されます。

「パターン」タブを使用して、欠落イベントの発生と一致するパターン式を定義します。この式は、後の手順で「定義」タブに指定する名前付き条件を使用して作成します。

16. 「パターン式」フィールドに次の式を入力します。

CustOrder NoApproval*? Shipment

このパターンは、表7-3にリストされているOracle CQLパターン数量子を使用します。パターン量指定子を使用して、パターン一致が許可される範囲を指定します。1文字パターン数量子は最大限、すなわち「グリーディ」です。これは、まず最大限にマッチングを行います。2文字パターン数量子は最小限、すなわち「リラクタント」です。これは、まず最小限のマッチングを行います。

表7-3 MATCH_RECOGNIZEパターン数量子

最大

最小

説明

*

*?

0回以上

+

+?

1回以上。

?

??

0回または1回。

17. 「パーティション基準」プルダウン・メニューからorderidを選択し、プラス記号ボタンをクリックしてこのプロパティをPARTITION BY句に追加します。
これで、Oracle Event Processingが各注文について欠落イベントの問合せを検証するようになります。

18. 別名フィールドにOrdersと入力します。
これで、パターンの別名(Orders)が割り当てられ、後から問合せで使用するときに便利です。

19. 「定義」タブをクリックします。
「定義」タブが表示されます。

これで、パターン句で名前が付けられた各条件を表7-4に示されているように定義できます。

表7-4 条件定義

条件名

定義

CustOrder

orderChannel.eventType = 'C'

NoApproval

NOT(orderChannel.eventType = 'A')

Shipment

orderChannel.eventType = 'C'

20. 「オブジェクト名」フィールドにCustOrderと入力します。

21. 「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'C'を入力します。

22. 「保存」をクリックします。

23. プラス記号ボタンをクリックします。
次のように、条件定義がオブジェクト・リストに追加されます。

24. 「オブジェクト名」フィールドにNoApprovalと入力します。

25. 「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'A'を入力します。

- 式をカッコで囲みます。

- 式の先頭のカッコの外側にカーソルを置きます。

- 「オペランド」リストでNOTをダブルクリックします。

26. 「保存」をクリックします。

27. プラス記号ボタンをクリックします。
条件定義がオブジェクト・リストに追加されます。

28. 「オブジェクト名」フィールドにShipmentと入力します。

29. 「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'S'を入力します。

30. 「保存」をクリックします。

31. プラス記号ボタンをクリックします。
「定義」タブが表示されます。

32. 「メジャー」タブをクリックします。
「メジャー」タブが表示されます。

「メジャー」タブを使用して、MATCH_RECOGNIZE条件に式を定義し、DEFINE句の条件と一致するストリーム要素を問合せのselect文に指定する引数にバインドします。

「メジャー」タブを使用して次のように指定します。

- CustOrder.orderid AS orderid

- CustOrder.amount AS amount

33. 「オブジェクト名」フィールドにorderidと入力します。

34. 「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。

- 「変数」リストでCustOrder.orderidをダブルクリックします。

35. 「保存」をクリックします。

36. プラス記号ボタンをクリックします。

37. 「オブジェクト名」フィールドにamountと入力します。

38. 「式ビルダー」ボタンをクリックし、式ビルダーを次のように構成します。

- 「変数」リストでCustOrder.amountをダブルクリックします。

39. 「保存」をクリックします。

40. プラス記号ボタンをクリックします。
「メジャー」タブが表示されます。

41. 「保存」をクリックします。

42. 選択アイコンをダブルクリックします。
次のように、「SELECT」構成画面が表示されます。

43. 「プロジェクト」タブを次のように構成します。

- イベント・タイプの選択または入力プルダウン・メニューからAlertEventを選択します。

- 「ソースの選択」プルダウン・メニューでOrdersを選択します。

44. 「プロパティ」リストのorderidをダブルクリックし、別名の選択または入力プルダウン・メニューからorderidを選択します。

45. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。

46. 「プロパティ」リストのamountをダブルクリックし、別名の選択または入力プルダウン・メニューからamountを選択します。

47. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。

48. 「プロジェクト式」フィールドをクリックして値"Error - Missing Approval"を入力し、別名の選択または入力プルダウン・メニューからalertTypeを選択します。

49. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。
「プロジェクト」タブが表示されます。

50. 「保存」をクリックします。

51. 「問合せの保存」をクリックします。

52. 「出力」アイコンをダブルクリックします。
「出力」構成画面が表示されます。

53. 出力を次のように構成します。

- 「問合せ」を選択します。

- 「問合せ名」としてTrackingと入力します。

54. 「ルールのインジェクト」をクリックします。
「ルールのインジェクト」の「確認」ダイアログが表示されます。

55. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

56. 「保存」をクリックします。

57. 「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。

58. 「問合せ」ラジオ・ボタンをクリックします。
Tracking問合せが存在していることを確認します。

不足イベントの問合せのテスト:

1. データ・フィードをシミュレートするために、/Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。

2. orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd orderData.prop

b. UNIXの場合:

prompt> ./runloadgen.sh orderData.prop

3. Oracle Event Processing Visualizerの上部パネルで、ViewStreamボタンをクリックします。
「ストリーム・ビジュアライザ」画面が表示されます。

4. 「クライアントの初期化」をクリックします。

5. 「登録」タブをクリックします。

6. オーダー警告ラジオ・ボタンを選択します。

7. 「サブスクライブ」をクリックします。
欠落イベントが検出されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたAlertEventsが表示されます。

7.6.4.2 移動平均の問合せの作成

ここでは、Oracle Event Processing Visualizer問合せウィザードを使用して、stockProcプロセッサが実行するOracle CQLの移動平均問合せを作成する方法を説明します。

これは2段階で行います。

- まず、移動平均問合せのソースとして使用するビュー(Oracle CQLにおける副問合せ)を作成します。
「移動平均の問合せのビュー・ソースの作成」を参照してください。

- 次に、ソース・ビューを使用する移動平均問合せを作成します。
「ビュー・ソースを使用した移動平均の問合せの作成」を参照してください。

- 最後に、移動平均問合せをテストします。
「移動平均の問合せのテスト」を参照してください。

移動平均の問合せのビュー・ソースの作成:

1. CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

「ログオン」画面が表示されます。

3. 「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。

4. 右パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。

5. cqlノードを選択します。
CQLアプリケーション画面が表示されます。

6. 「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。

7. Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
図7-3のOracle CQLプロセッサ画面が表示されます。

図7-3 Oracle CQLプロセッサ: 「全般」タブ

8. 「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。

9. SSourceアイコン(ストリーム・ソース)をクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

10. SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

ビューのソースはstockChannelストリームになります。このストリームから、数が1000を超える在庫イベントを選択します。これが移動平均問合せのソースになります。

11. SSourceを次のように構成します。

- 「タイプ」として「ストリーム」を選択します。
ビューのソースはstockChannelストリームになります。

- 「ソースの選択」プルダウン・メニューでstockChannelを選択します。

- 別名StockVolGt1000を「AS」フィールドに入力します。

12. 「保存」をクリックします。

13. 「問合せの保存」をクリックします。

14. プロンプトが表示されたら、「問合せID」フィールドにStockVolGt1000と入力します。

15. 「保存」をクリックします。
次は、Oracle CQLフィルタを追加します。

16. 次のように、「フィルタ」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

17. 次のように、SSourceアイコンをクリックして「ウィンドウ」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

18. 「フィルタ」アイコンをダブルクリックします。
「フィルタ」構成画面が表示されます。

19. 「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。

20. 次のように式ビルダーを構成します。

- 「イベント・タイプの選択」プルダウン・メニューからStockVolGt100を選択し、この式で使用できる変数を定義します。

- volume変数をダブルクリックして、「式ビルダー」フィールドに追加します。

- 「オペランド」リストの>をダブルクリックして、「式ビルダー」フィールドに追加します。

- >オペランドの後に値1000を入力します。

21. 「保存」をクリックします。

22. 「フィルタの追加」をクリックします。
次のように、問合せウィザードによって式が「生成されたCQL文」に追加されます。

23. 「保存」をクリックします。

24. 「問合せの保存」をクリックします。
次は、select文を追加します。

25. 次のように、「SELECT」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

26. 「フィルタ」アイコンをクリックして「SELECT」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

27. 選択アイコンをダブルクリックします。
選択の構成画面が表示されます。

price、symbolおよびvolumeをStockVolGt1000ストリームから選択します。

28. 選択を次のように構成します。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。

- priceプロパティを選択し、プラス記号ボタンをクリックします。
問合せウィザードによって、プロパティが「生成されたCQL文」に追加されます。

- symbolプロパティとvolumeプロパティについても繰り返します。

「SELECT」構成ダイアログが表示されます。

29. 「保存」をクリックします。

30. 「問合せの保存」をクリックします。
最後に出力を追加します。

31. 次のように、「出力」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

32. 「SELECT」アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

33. 「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。

34. 出力を次のように構成します。

- 「ビュー」を選択します。

- 「ビュー名」にStockVolGt1000を構成します。

- 「スキーマの表示」フィールドの内容を削除します。
Oracle Event Processingサーバーによってビュー・スキーマが定義されます。

35. 「ルールのインジェクト」をクリックします。
次のように、「ルールのインジェクト」の「確認」ダイアログが表示されます。

36. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

37. 「保存」をクリックします。

38. 「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。

39. 「ビュー」ラジオ・ボタンをクリックします。
StockVolGt1000ビューが存在していることを確認します。

ビュー・ソースを使用した移動平均の問合せの作成:

1. CQL Oracle Event Processingインスタンスがまだ実行されていない場合は、「CQLサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

「ログオン」画面が表示されます。

3. 「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Event Processingビジュアライザのダッシュボードが表示されます。

4. 左パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」の順に展開します。

5. cqlステージを選択します。
CQLアプリケーション画面が表示されます。

6. 「イベント処理ネットワーク」タブを選択します。
「イベント処理ネットワーク」画面が表示されます。

7. Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
Oracle CQLプロセッサ画面が表示されます。

8. 「問合せウィザード」タブを選択します。
「問合せウィザード」画面が表示されます。このOracle CQLプロセッサ用の問合せを,最近作成または編集している場合、その問合せが問合せウィザードのキャンバスに表示されている場合があります。それ以外の場合、キャンバスは空白になります。

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。

9. 次のように、SSourceアイコン(ストリーム・ソース)をクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

10. SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

11. SSourceのダイアログを次のように構成します。

- 「タイプ」として「ビュー」を選択します。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000ビューを選択します。

12. 「保存」をクリックします。

13. 「問合せの保存」をクリックします。

14. 次のように、「ウィンドウ」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

15. SSourceアイコンをクリックして「ウィンドウ」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

16. ウィンドウアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

symbolをパーティションとして、最後の2つのイベントに対するスライディング・ウィンドウを作成します。

17. 枠のダイアログを次のように構成します。

- 「ソース・プロパティ・リスト」でsymbolを選択して、パーティション・リストに追加します。

- 「タイプ」として「パーティション」を選択します。

- 「行ベース」を選択し、「行ベース」フィールドに2を入力します。

18. 「ウィンドウの追加」をクリックします。
次のように、問合せウィザードによってスライディング・ウィンドウが「生成されたCQL文」に追加されます。

19. 「保存」をクリックします。

20. 「問合せの保存」をクリックします。

21. 次のように、「SELECT」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

22. 「ウィンドウ」アイコンをクリックして「SELECT」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

23. 選択アイコンをダブルクリックします。
選択の構成画面が表示されます。

24. 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。
以前作成したこのビューが移動平均の問合せのソースとなります(「移動平均の問合せのビュー・ソースの作成」を参照してください)。

25. ターゲット・イベント・タイププルダウン・メニューからMovingAvgEventを選択します。
これは、移動平均問合せによって生成される出力イベントです。ソース・イベントからこの出力イベントにプロパティをマップします。

26. 「ソースのプロパティ」リストからsymbolを選択します。
次のように、選択したソース・プロパティが「プロジェクト式」に追加されます。

このケースでは、ソース・プロパティsymbolを出力イベント・プロパティsymbolにそのままマップします。

27. 「AS」フィールドの隣のプルダウン・メニューをクリックし、symbolを選択します。

28. プラス記号ボタンをクリックします。
次のように、ソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。

29. 「ソースのプロパティ」リストからpriceを選択します。
次のように、選択したソース・プロパティが「プロジェクト式」に追加されます。

このケースでは、ソース・プロパティpriceを処理した後で出力イベントにマップします。

30. 「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。

31. 「関数タイプの選択」プルダウン・メニューで「集計関数」を選択します。
Oracle CQLで提供される集計関数のリストが表示されます。AVG関数を使用します。

32. 「式ビルダー」フィールドでStockVolGt1000.priceを選択します。

33. AVG関数をダブルクリックします。
次のように、「式ビルダー」フィールドで選択した内容がAVG()関数で囲まれます。

34. 「保存」をクリックします。
次のように、式が「プロジェクト式」フィールドに追加されます。

35. 「AS」フィールドの隣のプルダウン・メニューをクリックし、movingAvgPriceを選択します。

36. プラス記号ボタンをクリックします。
次のように、ソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。

37. 「検証」をクリックします。
次のように、検証エラーダイアログが表示されます。

パーティションを使用しているため、GROUP BY句を指定する必要があります。

38. 「グループ」タブを選択します。
「グループ」タブが表示されます。

39. 「グループ」タブを次のように構成します。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。

- 「プロパティ」リストからsymbolを選択します。

- プラス記号ボタンをクリックします。

次のように、symbolプロパティがGROUP BY句に追加されます。

40. 「保存」をクリックします。

41. 「問合せの保存」をクリックします。
次は、問合せを出力に結び付けます。

42. 次のように、「出力」アイコンをクリックして「CQL構文」パレットからドラッグし、問合せウィザードのキャンバスの任意の位置にドロップします。

43. 「SELECT」アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQLコンストラクトに接続します。

44. 「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。

45. 出力を次のように構成します。

- 「問合せ」を選択します。

- 「問合せ名」としてMovingAverageと入力します。

46. 「ルールのインジェクト」をクリックします。
「ルールのインジェクト」の「確認」ダイアログが表示されます。

47. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

48. 「保存」をクリックします。

49. 「CQLルール」タブをクリックします。
「CQLルール」タブが表示されます。

50. 「問合せ」ラジオ・ボタンをクリックします。
MovingAverage問合せが存在していることを確認します。

移動平均の問合せのテスト:

1. 移動平均の問合せのデータ・フィードをシミュレートするために、/Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。

2. stockData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd stockData.prop

b. UNIXの場合:

prompt> ./runloadgen.sh stockData.prop

3. Oracle Event Processing Visualizerの上部パネルで、ViewStreamボタンをクリックします。
「ストリーム・ビジュアライザ」画面が表示されます。

4. 「クライアントの初期化」をクリックします。

5. 「クライアントの初期化」フィールドに/stockmovingと入力します。

6. 「サブスクライブ」をクリックします。
移動平均問合せによってイベントが出力されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたイベントが表示されます。

7.7 Oracle Spatialのサンプル

このサンプルは、Oracle Spatialの使用方法を示すもので、Oracle CQL問合せで全地球測位システム(GPS)のイベント・ストリームを処理してバスのGPS位置を追跡し、バスが事前に定義されたバス停の位置に到着するとアラートを生成します。

図7-4にOracle Spatialサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図7-4 Oracle Spatialサンプルのイベント処理ネットワーク

このサンプルには次のコンポーネントが含まれています。

- 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ドメインからの実行:

1. コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/spatial_domain/defaultserverにあるOracle Spatialサンプル・ドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. 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サンプルが正しく実行されていることを示しています。

3. Oracle Spatialサンプルを実行しているホストでブラウザを起動し、http://localhost:9002/bus/web/main.htmlに移動します。

注意:

あるホストでこのサンプルを実行し、別のホストからブラウズすることはできません。これはサンプルが使用するGoogle API Keyの制限で、Oracle Stream Analyticsの制限ではありません。

Oracle SpatialサンプルのWebページが表示されます。

バス停への到着タブをクリックすると、次のようなバス停への到着を参照できます。

4. Oracle Stream Analyticsロード・ジェネレータを実行し、サンプル・データを生成します。

a. コマンド・プロンプトを開き、/Oracle/Middleware/my_oep/utils/load-generatorに移動します。

b. Windowsでは次のように入力します。

- runloadgen.cmd bus_positions.prop

c. UNIXでは次のように入力します。

- ./runloadgen.sh bus_positions.prop

5. 次のようにバスが移動し、ブラウザにアラートが表示されることを確認します。

7.7.2 Oracle Spatialサンプルのビルドおよびデプロイ

Oracle Spatialサンプルのソース・ディレクトリには、Javaソースと、Oracle Spatialアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてspatial_domainドメインにデプロイするためのターゲットが含まれています。

詳細は、「Hello WorldをビルドするAntターゲットの説明」を参照してください。

Oracle Spatialサンプルのソース・ディレクトリからのビルドおよびデプロイ:

1. spatial_domain Oracle Stream Analyticsインスタンスがまだ実行されていない場合は、Oracle Spatialサンプルの実行の手順に従ってサーバーを起動します。

再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/spatialにあるOracle Spatialソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. 次のようにdeploy Antターゲットを実行して、アプリケーションJARファイルをOracle Stream Analyticsにデプロイします。

prompt> ant -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のOracle SpatialのアプリケーションJARファイルを上書きします。

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には、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図7-5 FXサンプルのイベント処理ネットワーク

このシナリオでは、ロード・ジェネレータを使用してシミュレートした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のインスタンスを起動します。

外国為替サンプルの実行:

1. コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/fx_domain/defaultserverにあるFXドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

3. 要求されたら、「ユーザー名」および「パスワード」にwlevsと入力します。
これで、FXアプリケーションでデータ・フィードからデータを受信する準備ができました。

4. アメリカのデータ・フィードをシミュレートするために、新しいコマンド・ウィンドウを開きます。

5. /Oracle/Middleware/my_oep/utils/load-generatorディレクトリに移動します。

6. fxAmer.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

a. Windowsの場合:

prompt> runloadgen.cmd fxAmer.prop

b. UNIXの場合:

prompt> ./runloadgen.sh fxAmer.prop

7. fxAsia.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、アジアのデータ・フィードをシミュレートします。

a. Windowsの場合:

prompt> runloadgen.cmd fxAsia.prop

b. UNIXの場合:

prompt> ./runloadgen.sh fxAsia.prop

8. fxEuro.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、ヨーロッパのデータ・フィードをシミュレートします。

a. Windowsの場合:

prompt> runloadgen.cmd fxEuro.prop

b. 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ドメインへデプロイを行うターゲットが含まれています。

ソース・ディレクトリからの外国為替サンプルのビルドおよびデプロイ:

1. FX Oracle Stream Analyticsインスタンスがまだ実行されていない場合は、外国為替サンプルの実行の手順に従ってサーバーを起動します。

再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/fxにあるFXソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. 次のようにdeploy Antターゲットを実行して、アプリケーションJARファイルをOracle Stream Analyticsにデプロイします。

prompt> ant -Dusername=wlevs -Dpassword=wlevs -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のFXアプリケーションJARファイルを上書きします。

5. FXアプリケーションが必要とするロード・ジェネレータが実行されていない場合は、「外国為替サンプルの実行」の説明に従って開始します。

サーバーの起動後、出力に次のメッセージが表示されます。

{crossRate=USDJPY, internalPrice=119.09934499999781}, {crossRate=USDGBP, internalPrice=0.5031949999999915}, {crossRate=USDJPY, internalPrice=117.73945624999783}

このメッセージは、FXのサンプルが再デプロイされ、正しく実行されていることを示しています。

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には、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図7-6 シグナル生成サンプルのイベント処理ネットワーク

アプリケーションは、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のインスタンスを起動します。

シグナル生成サンプルの実行:

1. コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/signalgeneration_domain/defaultserverにあるsignalgeneration_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

3. 要求されたら、「ユーザー名」および「パスワード」にwlevsと入力します。

4. 次のようなコンソール・メッセージが表示されるまで待機します。

<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
...

これで、シグナル生成アプリケーションでデータ・フィードからデータを受信する準備ができました。

次は、データ・フィードをシミュレートするために、このサンプル用にプログラミングされたロード・ジェネレータを使用します。

5. 新しいコマンド・ウィンドウを開きます。

6. /Oracle/Middleware/my_oep/examples/domains/signalgeneration_domain/defaultserver/utilsディレクトリに移動します。

7. startDataFeedコマンドを実行します。

a. Windowsの場合:

prompt> startDataFeed.cmd

b. UNIXの場合:

prompt> ./startDataFeed.sh

8. ブラウザを起動し、次のHTMLページを開いて、サンプルのダッシュボードを起動します。

http://host:9002/signalgeneration/dashboard.html

hostは、Oracle Stream Analyticsを実行しているコンピュータの名前に置き換え、ブラウザと同じコンピュータである場合は、localhostとすることができます。

9. ブラウザで、HTMLページの開始をクリックします。
次のように、このサンプル用に構成されたOracle CQLルールに一致するイベントの表示が開始されます。

7.9.2 ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ

シグナル生成サンプルのソース・ディレクトリには、Javaソースと、シグナル生成アプリケーションを構成する他の必須のリソース(構成XMLファイル、EPNアセンブリ・ファイル、DOJOクライアントJavaScriptライブラリなど)が含まれます。「シグナル生成をビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびsignalgeneration_domainドメインへデプロイを行うターゲットが含まれています。

ソース・ディレクトリからのシグナル生成サンプルのビルドおよびデプロイ:

1. シグナル生成Oracle Stream Analyticsインスタンスがまだ実行されていない場合は、シグナル生成サンプルの実行の手順に従ってサーバーを起動します。再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/signalgenerationにあるシグナル生成ソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. deploy Antターゲットを実行し、アプリケーションJARファイルを/Oracle/Middleware/my_oep/examples/domains/signalgeneration_domain/defaultserver/applications/signalgenerationディレクトリにデプロイします。

prompt> ant deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のシグナル生成アプリケーションJARファイルを上書きします。

5. シグナル生成アプリケーションが必要とするロード・ジェネレータが実行されていない場合は、「シグナル生成サンプルの実行」の説明に従って開始します。

6. 「シグナル生成サンプルの実行」で説明されているように、サンプル・ダッシュボードを起動します。

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には、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図7-7 イベントの記録および再生サンプルのイベント処理ネットワーク

このアプリケーションのイベント処理ネットワークには次の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アダプタがチャネルにパブリッシュするイベントのストリームを参照する方法を示します。

イベントの記録/再生サンプルの実行:

1. コマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/domains/recplay_domain/defaultserverにあるrecplay_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。

2. 適切なスクリプトに正しいコマンドライン引数を指定して実行し、Oracle Stream Analyticsを起動します。

a. Windowsの場合:

- prompt> startwlevs.cmd

b. UNIXの場合:

- prompt> ./startwlevs.sh

サーバーの起動後、出力に次のメッセージが表示されます。

SimpleEvent created at: 14:33:40.441

このメッセージは、Oracle Stream Analyticsサーバーが正しく起動し、simpleEventSourceコンポーネントがイベントを作成していることを示しています。

3. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Stream Analyticsが実行中のコンピュータ名を指し、portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

「ログオン」画面が表示されます。

4. 「ログオン」画面で、「ユーザー名」にoepadminを、「パスワード」にwelcome1を入力し、「ログイン」をクリックします。
Oracle Stream Analytics Visualizerのダッシュボードが表示されます。

5. 左パネルで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」→「recplay」→「ステージ」→「simpleEventSource」を選択します。

6. 次のように、右パネルで「記録」タブを選択します。

「データセット名」フィールドには、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>

7. 「記録」タブの下の「開始」をクリックします。
「アラート」ダイアログが表示されます。

8. 「OK」をクリックします。
現在のステータス・フィールドに記録中と表示されます。

「OK」をクリックするとすぐに、イベントがsimpleEventSourceコンポーネントから出力され始め、構成済のデータベースに格納されます。

「記録の開始」フィールドと「記録の停止」フィールドを使用すると、いつイベントを記録するかを構成できます。

9. 左パネルで、eventStreamを選択します。

10. 次のように、右パネルで「再生」タブを選択します。

11. タブの下の「開始」をクリックします。
図7-8に示すように、「アラート」ダイアログが表示されます。

図7-8 再生開始アラート・ダイアログ

12. 「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

再生されるイベントが記録される期間や再生速度などの再生パラメータをさらに構成できます。そのためには、適切なフィールドを更新し、パラメータの変更をクリックします。再生パラメータを変更した後、再生を再開する必要があります。

13. playbackHttpPublisher アダプタがチャネルにパブリッシュしているイベントを表示するには、次のステップを実行します:

a. 上パネルで、Viewstreamを選択します。
Viewstreamウィンドウが表示されます。

b. 右パネルで、「クライアントの初期化」をクリックします。

c. 「チャネルのサブスクライブ」テキスト・ボックスに/playbackchannelと入力します。

d. 「サブスクライブ」をクリックします。

「受信メッセージ」テキスト・ボックスに、再生されたイベントの詳細が表示されます。再生されたイベントは、イベントの作成時刻と再生時刻を示します。

7.10.2 イベントの記録/再生サンプルのビルドおよびデプロイ

記録と再生のサンプルのソース・ディレクトリには、Javaソースと、アプリケーションを構成する他の必須リソース(構成XMLファイル、EPNアセンブリ・ファイルなど)が含まれます。「記録および再生サンプルをビルドするAntターゲットの説明」で説明されているように、build.xml Antファイルには、アプリケーションのビルドおよびsignalgeneration_domainドメインへデプロイを行うターゲットが含まれています。

イベントの記録/再生サンプルのソース・ディレクトリからのビルドおよびデプロイ:

1. 記録/再生Oracle Stream Analyticsインスタンスがまだ実行されていない場合は、イベントの記録/再生サンプルの実行の手順に従ってサーバーを起動します。再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、/Oracle/Middleware/my_oep/oep/examples/source/applications/recplayにある記録/再生ソース・ディレクトリに移動します。

3. 次のようにall Antターゲットを実行してコンパイルを行い、アプリケーションJARファイルを作成します。

prompt> ant all

4. deploy Antターゲットを実行し、アプリケーションJARファイルを/Oracle/Middleware/my_oep/examples/domains/recplay_domain/defaultserver/applications/recplayディレクトリにデプロイします。

prompt> ant -Dusername=oepadmin -Dpassword=welcome1 -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のイベントの記録/再生アプリケーションのJARファイルを上書きします。

アプリケーション再デプロイ・メッセージの後、約1秒ごとに次のメッセージが出力先に出力されます。

SimpleEvent created at: 14:33:40.441

このメッセージは、記録と再生のサンプルが再デプロイされ、正しく実行されていることを示します。

5. イベントの記録/再生サンプルの実行の手順4以降に従って、Oracle Stream Analytics Visualizerを起動し、イベントの記録および再生を開始します。

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ファイルの説明は「イベントの記録/再生サンプルのビルドおよびデプロイ」を参照してください。