次の各項で、Oracle Event ProcessingタスクをOracle JDeveloperで実行する方法を説明します。
この章の構成は、次のとおりです。
Oracle Event Processing Eclipseプロジェクトは、バンドルとしてOracle JDeveloperにインポートできます。バンドルとは、アーカイブ(zip)またはJARファイルとしてエクスポート可能なOracle Event Processing Eclipseプロジェクトです。EclipseプロジェクトをOracle JDeveloperにインポートするコマンドライン・コマンドはありません。
EclipseプロジェクトのOracle JDeveloperへのインポート
複数のアプリケーションまたはプロジェクトで構成されているEclipseプロジェクトはインポートできないことに注意する必要があります。インポートするEclipseプロジェクトは、Oracle Event Processingプロジェクトとしてのみインポートできます。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 Event Processingアプリケーション・プロジェクトのインポートは可能ですが、Oracle JDeveloperはコンパイルの問題には対処しません。この場合、コンパイルの問題が発生した際は自己責任で対処します。
Eclipseで、EclipseプロジェクトをzipまたはJARファイルとしてエクスポートします。
ソース・ファイルとリソースを含めていることを確認します。
Oracle JDeveloperで、「ファイル」→「インポート」→「新規プロジェクトへのOEPバンドル」の順に選択します。
手順は、既存のOracle JDeveloperアプリケーションの有無によって異なります。
既存のアプリケーションがある場合、バンドルをアクティブなアプリケーションにインポートするための「プロジェクトとしてのOEPバンドルのインポート - ステップ1/2」ダイアログが表示されます。
「ステップ1/2」ダイアログで、プロジェクトの名前を入力し、ディレクトリ名を使用するか変更し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ3/3」ダイアログが表示されます。
「ステップ2/2」ダイアログでエクスポートしたEclipse zipファイルを探して選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション」にプロジェクトが表示されます。
既存のアプリケーションがない場合、プロジェクト用のアプリケーションを作成するための「プロジェクトとしてのOEPバンドルのインポート - ステップ1/3」ダイアログが表示されます。
「ステップ1/3」ダイアログで、アプリケーションの名前および場所を入力し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ2/3」ダイアログが表示されます。
「ステップ2/3」ダイアログで、プロジェクトの名前を入力し、ディレクトリ名を使用するか変更し、「次へ」をクリックします。
「プロジェクトとしてのOEPバンドルのインポート - ステップ3/3」ダイアログが表示されます。
「ステップ3/3」ダイアログでエクスポートしたEclipse zipファイルを探して選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション」にプロジェクトが表示されます。
インポートしたプロジェクトのビルド
インポートしたアプリケーションを選択し、「ビルド」→<プロジェクト名>
を選択します。
ログ・ウィンドウにクラスパスに追加JARファイルが必要だというエラーが表示された場合、トップレベルのプロジェクト・フォルダを選択し、「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログが表示されます。
「プロジェクト・プロパティ」ダイアログの左パネルで、「ライブラリとクラスパス」を選択します。
「ライブラリとクラスパス」ダイアログが表示されます。
「ライブラリとクラスパス」ダイアログで、「Jar/ディレクトリの追加」をクリックします。
「アーカイブまたはディレクトリの追加」ダイアログが表示されます。
「Jar/ディレクトリの追加」ダイアログで、追加する必要があるJARファイルを探します。
「OK」をクリックします。
プロジェクトを再ビルドします。
すべての必要なファイルを探して追加できるまでこのプロセスを繰り返します。
ソース・コードに問題を見つけた場合は、クイック修正を使用してインポートの編成および追加を行います。
Oracle Event Processingサーバーの起動
「Oracle JDeveloperおよびサーバーの起動と停止」を参照してください。
デプロイ
プロジェクトを右クリックします。
コンテキスト・メニューが表示されます。
コンテキスト・メニューから、「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログが表示されます。
「デプロイメント・プロファイルの作成」ダイアログで、「OEPプロジェクト・デプロイメント・プロファイル」などのデプロイメント・プロファイルを選択し、名前を付けます。
「OK」をクリックします。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログが表示されます。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログでは、新規Oracle Event Processingサーバー接続を作成または既存の接続を選択できます。
既存の接続を選択するには、次のようにします。
OEPサーバーへの接続ドロップダウン・リストで、使用する既存の接続を選択します。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログで、デフォルトを使用または要求されるプロファイルの詳細を入力します。
「OK」をクリックします。
新規接続を作成するには、次のようにします。
「追加」(+)ボタンをクリックし、Oracle Event Processingサーバー接続を作成します。
「OEPサーバー接続の作成」ダイアログが表示されます。
「OEPサーバー接続の作成」ダイアログで、接続の詳細を入力します。
「OEPサーバー接続名」: SampleOEPConnection 「OEPサーバー・ホーム・パス」: /Oracle/Middleware/my_oep/ 「デフォルト値の使用」: 未チェックOEPサーバー・プロジェクト・ディレクトリ: user_projects/domains/sample_domain/defaultserverUse デフォルト値の使用: 未チェック ホスト: localhost ポート: 9002 デフォルト値の使用: 未チェック ユーザー名: oepadmin ユーザー・パスワード: welcome1 OEPサーバーの追加パラメータ: 空白
「OEPサーバー接続の作成」ダイアログで、「接続のテスト」をクリックします。
問題がない場合、「接続のテスト」ボタンの下のメッセージ・ボックスに「成功」と表示されます。エラーとなった場合は、エラーを探して修正し、再試行します。
「成功」と表示されたら、「OK」をクリックします。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログが表示されます。
「OEPプロジェクト・デプロイメント・プロファイル」ダイアログで、デフォルトを使用または要求されるプロファイルの詳細を入力します。
「OK」をクリックします。
MANIFEXT.MF
を生成する手順:
MANIFEXT.MFの再作成ボタンをクリックして、マニフェスト・ファイルを再生成します。
マニフェスト・ファイルとインポートおよびエクスポートされたパッケージが再生成されます。
プロジェクトを右クリックし、選択または作成したデプロイメント・プロファイルを選択します。
「<プロファイル名>のデプロイ」ダイアログが表示されます。
「<プロファイル名>のデプロイ」ダイアログで、「OSGiバンドルのターゲット・プラットフォームへのデプロイ」を選択して「次へ」をクリックします。
「Summary」ダイアログ・ボックスが表示されます。
「サマリー」ダイアログで設定を確認し、「終了」をクリックします。
デプロイが終了するまで、しばらく待ちます。
「デプロイメント - ログ」タブに、デプロイが完了したというメッセージが表示されます。アプリケーションの開始に問題がある場合は、自動的にアンデプロイされます。
サーバー・ログおよびデプロイ済アプリケーションのリストを参照します。
サーバー・ログの参照:
「リソース」ウィンドウが開いていない場合は、「ウィンドウ」→「リソース」の順に選択します。
「リソース」ウィンドウが表示されます。
「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。
「OEPサーバー」を展開し、OEPサーバー接続のリストを表示します。
接続を右クリックします。
コンテキスト・メニューが表示されます。
コンテキスト・メニューから、「OEPサーバー・ログ・ページを開く」を選択します。
OEPサーバー・ログ・ページが開き、サーバー・ログ・メッセージを確認できます。
デプロイ済のアプリケーションのリストの参照:
「リソース」ウィンドウが開いていない場合は、「ウィンドウ」→「リソース」の順に選択します。
「リソース」ウィンドウが表示されます。
「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。
「OEPサーバー」を展開し、OEPサーバー接続のリストを表示します。
「リソース」ウィンドウ→「IDE接続」→「OEPサーバー」に移動します。
OEPサーバー接続のリストが表示されます。
「OEPサーバー」で、先ほどデプロイしたアプリケーションへの接続を展開します。
-OEP Server
-SampleOEPConnection
+Applications
展開した接続で、「アプリケーション」を展開します。
デプロイ済アプリケーションの一覧とそれぞれのステータスが表示されます。たとえば、次のようなリストが表示されます。
application1 [RUNNING] my_application2 [SUSPENDED}
アプリケーション・ライブラリを作成して、同じドメインで実行するアプリケーション間で共有できます。
Oracle Event Processingライブラリ・プロジェクトの作成
Oracle JDeveloperで、「ファイル」→「ギャラリから新規作成」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」ダイアログの左ウィンドウの「OEP層」を、右ウィンドウで「OEPライブラリ・プロジェクト」を選択します。
「OK」をクリックします。
「OEPライブラリ・プロジェクトの作成 - ステップ1/2」ダイアログが表示されます。
「OEPライブラリ・プロジェクトの作成 - ステップ1/2」ダイアログで、プロジェクト名を入力し、オプションでディレクトリの場所を入力します。
「次へ」をクリックします。
「OEPライブラリ・プロジェクトの作成 - ステップ3/2」ダイアログが表示されます。
「OEPライブラリ・プロジェクトの作成 - ステップ2/2」ダイアログで、ライブラリ・プロジェクトに含めるJARファイルを探します。
「OEPライブラリ・プロジェクトの作成 - ステップ2/2」ダイアログで、その他の情報を入力またはデフォルトを使用し、「終了」をクリックします。
ライブラリがドライバの場合、ライブラリが正しい順番でアクティブ化されるように「Library Extensionsへのデプロイ」チェック・ボックスをチェックします。
ライブラリ・プロジェクトがアプリケーションの「プロジェクト」に表示されます。
デプロイメント・プロファイルの作成およびデプロイ
コンポーネントを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を参照する場合は、同じ文字を使用してください。
このガイドの説明には、学習用のサンプルとなるアセンブリ・ファイルおよび構成ファイルが付いています。
Oracle JDeveloperでは、「コンポーネント」ウィンドウから開いている構成ファイルにコンポーネントをドラッグできます。これは、アセンブリ・ファイルでは動作しません。
コンポーネントをEPNに追加する場合、カスタム構成設定を使用することもデフォルト構成を使用することもできます。デフォルト構成を使用する場合、Oracle JDeveloperは構成ファイルにそのコンポーネントのエントリを追加しません。また、構成プロセスで新しい構成ファイル名を指定した場合でも、Oracle JDeveloperは構成ファイルを作成しません。
後でデフォルト設定を使用することに決定した場合、「アセンブリ・ファイルおよび構成ファイル」に説明があるように構成ファイルを作成して完全なコンポーネント構成を追加するか、デフォルトのprocessor.xml
ファイル内の構成を生成する必要があります。
次の例は、processor.xml
ファイル内のAdapterOutputChannel用の構成エントリの生成方法を示しています。
チャネル構成の追加
デフォルトのチャネルは、名前、ID、システム・タイムスタンプ、および100ミリ秒(100,000,000ナノ秒)のタイムアウトのデフォルトのハートビートを持つ、シングル・スレッドのストリーム・チャネルです。詳細は、Oracle Event Processingアプリケーションの開発のチャネルの構成を参照してください。アセンブリ・ファイルにis-relation="true"
要素および属性を追加して、デフォルトのチャネルをリレーションに変更できます。
リレーション・チャネルは挿入、削除および更新操作をサポートしています。
アプリケーションがチャネルにタイムスタンプを付けるように構成できます。この場合、イベントのタイムスタンプは、構成可能なwlevs:expression
要素によって判定されます。標準的な式の例として、イベントでのプロパティへの参照があります。イベントに式がない場合、タイムスタンプは前のイベントから伝播されます。たとえば、別のダウンストリームOracle CQLプロセッサのアプリケーション・タイムスタンプ・チャネルにイベントを送信する、Oracle CQLプロセッサのシステム・タイムスタンプ・チャネルがある場合などです。
イベント・タイプが作成済である必要があります。チャネルは、データを正しいステージに送信するために、イベント・タイプを認識している必要があります。
イベント・タイプを追加するOracle JDeveloperプロジェクトを選択します。
引数なしのpublicコンストラクタを持つJavaBeanを作成します。
オプション。Oracle Coherenceでイベントをキャッシュする場合は、クラスをシリアライズ可能にします。
JavaBeanにprivateフィールドおよびアクセッサ・メソッドを追加します。
Oracle JDeveloperのEPNダイアグラムを開いた状態で、「イベント」タブを使用してJavaBeanの名前などのイベント・タイプのプロパティを構成します。
「イベント」タブを使用すると、イベント・タイプの宣言および編集が可能です。作成または編集したイベント・タイプは、「イベント」タブを閉じる際にアプリケーション・アセンブリ・ファイルの対応するイベント・タイプ・リポジトリ・セクションに登録されます。
「イベント・タイプの定義」でアプリケーション・アセンブリ・ファイルを選択します。
「追加」(+)ボタンをクリックします。
「イベント・タイプの詳細」パネルが左側に表示されます。
「イベント・タイプの詳細」で「JavaBeanで定義されるプロパティ」を選択します。
JavaBeanクラスの名前を入力します。
この手順では、Oracle Event Processing IDEのイベント・タイプ・リポジトリ・エディタを使用してタプルとしてのOracle Event Processingイベント・タイプを作成および登録する方法について説明します。イベントを設計する際は、設計を『Oracle Fusion Middleware Oracle Event Processingアプリケーションの開発』で説明されているイベント・データのタイプに限る必要があります。
Oracle JDeveloperでのタプル・イベント・タイプの作成
イベント・タイプを追加するOracle JDeveloperプロジェクトを選択します。
Oracle JDeveloperのEPNダイアグラムを開いた状態で、「イベント」タブを使用してJavaBeanの名前などのイベント・タイプのプロパティを構成します。
「イベント」タブを使用すると、イベント・タイプの宣言および編集が可能です。作成または編集したイベント・タイプは、「イベント」タブを閉じる際にアプリケーション・アセンブリ・ファイルの対応するイベント・タイプ・リポジトリ・セクションに登録されます。
「イベント・タイプの定義」でアプリケーション・アセンブリ・ファイルを選択します。
「追加」(+)ボタンをクリックします。
「イベント・タイプの詳細」パネルが左側に表示されます。
「イベント・タイプの詳細」で「宣言的プロパティ」を選択します。
「タイプ名」フィールドで、新しいイベント・タイプの名前を入力します。
「イベント・タイプのプロパティ」で、「追加」(+)ボタンを使用して「イベント・タイプのプロパティ」リストにプロパティ行を追加します。
「名前」列にカーソルを置き、プロパティ名を編集します。
「タイプ」列にカーソルを置き、ドロップダウン・リストからデータ型を選択します。
charデータ型のデフォルトの長さは256文字ですが、「文字の長さ」列にカーソルを置いて編集できます。
イベントBeanは、通過するイベントにロジックを適用するEPNコンポーネントです。イベントBeanのロジックは、JavaBeanイベント・タイプによって定義されます。
例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>
イベント処理ネットワークにクラスを含めるためにSpring BeanとしてJavaクラスを構成できます。これは、EPNに組み込む既存のSpring Beanがある場合、またはSpringの機能をJavaコードに組み込む場合の適切なオプションです。
表ソース・コンポーネントをアプリケーションに追加することによって、Oracle CQL問合せからリレーショナル・データベース表の中のデータにアクセスできます。表ソースを追加する場合、表ソースをリレーショナル・データベース表への読取りアクセス用のデータ・ソースと関連付けます。Oracle Event Processingリレーショナル表ソースはプル・データ・ソースです。Oracle Event Processingはデータベースの読取りを行うために、定期的にイベント・ソースの新しいデータを確認します。
ストリームの結合は、NOW
ウィンドウでのみ行うことができます。
表ソースの変更はストリーム・データに対してタイムリに調整できないため、表ソースとイベント・ストリームはNow
ウィンドウでのみ結合できます。
複数のデータベース表またはビューを結合できます。
Oracle JDBCデータ・カートリッジを使用すると、Oracle CQL問合せを使用して複雑なSQL問合せと複数の表およびデータ・ソースを自由に統合できます。Oracle CQLデータ・カートリッジによるアプリケーションの開発のOracle JDBCカートリッジを参照してください。
注意:
Oracle CQL文からリレーショナル・データベース表にアクセスするにはOracle JDBCデータ・カートリッジを使用することをお薦めします。
NOW
ウィンドウとデータ・カートリッジのどちらを使用する場合でも、Oracle Event Processingサーバー・ファイルに表ソースを定義する必要があります。
表ソースの作成
Oracle JDeveloperでEPNダイアグラムを開きます。
「コンポーネント」ウィンドウの「基本コンポーネント」で、「表」コンポーネントをEPNの空白領域にドラッグします。
「新規表」ウィザードが開きます。
「新規表」ウィザードで、次の値を入力して「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
プロパティは表ソースに対してサポートされていません。
データ・ソースの作成
例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
ウィンドウを使用してイベント・ストリームにのみ結合でき、また単一のデータベース表にのみ結合できます。
表シンク・コンポーネントをアプリケーションに追加すると、Oracle CQL問合せからリレーショナル・データベース表のデータを更新および削除できます。表シンクは上位コンポーネントからデータを受信し、受信したデータに応じて基礎となるリレーショナル・データベース表の更新操作および削除操作を行います。
表シンク・コンポーネントをアプリケーションに追加すると、受信したイベントをリレーショナル・データベースに格納できます。イベントが表シンクに入ると、データベースで永続化されてから下位のステージに送信されます。Oracle Event Processingはデータベース表の作成は行いません。アプリケーションを実行する前にデータベース表を作成する必要があります。また、必要に応じて表のメンテナンスおよびバックアップを行う必要があります。
表シンクは、表ソースと同様の方法で作成できます。「表」コンポーネントを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
アプリケーションで簡単に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から開始します。
Oracle CQLパターンを格納するプロセッサを指定します。
プロセッサがすでにEPNに存在する場合、パターンを既存のプロセッサにドラッグ・アンド・ドロップします。
プロセッサがEPNに存在しない場合、EPNダイアグラムの空のスポットにパターンをドラッグします。
対象のパターンの2段階のウィザードのステップ1で、デフォルト値が表示されます。
「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パターン構成をプロセッサと同じファイルに格納するため、「ファイル名」フィールドは使用できません。
「次へ」をクリックします。
該当する場合、対象のパターンの2段階のウィザードのステップ2で、デフォルト値が表示されます。
「Oracle CQLパターン・ウィザード, ステップ2/2」画面で、適切な場合はデフォルト値を使用し、必要な場合は値を入力します。
フィールドの有効な値の詳細は、フィールドにカーソルを置いて右パネルのプロパティの説明を読むか、「ヘルプ」をクリックします。
ステップ2の上部にはパラメータ・セクションがあり、下部にはOracle CQL文テンプレートがあります。上部セクションでパラメータを指定すると、次の図のようにテンプレートに色付きのコードで入力が反映されます。
「終了」をクリックします。
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
Oracle Coherenceキャッシング・システムおよびキャッシュを使用するようにアプリケーションを構成できます。アプリケーションをマルチサーバー・ドメインにデプロイしようとする場合は、このキャッシング・システムを使用します。Oracle Coherenceを使用して構成すると、第1キャッシュ・システムのみがサーバー内に構成されます。構成済の他のキャッシュ・システムは、Oracle Event Processingサーバーに無視されます。
注意:
合法的にOracle CoherenceをOracle Event Processingとともに使用するには、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キャッシュ・システムおよびキャッシュを構成します。このキャッシュは、イベント・タイプを使用してリレーショナル・データベースの表の行を特定するキー・プロパティを指定します。このキャッシング・システムは公開されており、他のアプリケーションからキャッシュのデータにアクセスできます。
例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 Coherenceキャッシュが同じOracle Event Processingサーバーにデプロイされている1つ以上のアプリケーションのEPNアセンブリ・ファイルに存在する場合は、ローダーまたはストアを持つ同じキャッシュの複数のインスタンスを構成しないでください。
各EPNアセンブリ・ファイル内でローダーまたはストアを使用して同一のOracle Coherenceキャッシュをそれぞれ構成する、複数のアプリケーションを使用することによって、これを不注意で行う可能性があります。ローダーまたはストアのある同じキャッシュの複数のインスタンスを構成すると、Oracle Event Processingは例外をスローします。
例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 Event Processing Oracle Coherenceファクトリを宣言する必要があります。cachestore-scheme
要素にファクトリを指定し、Oracle CoherenceがOracle Event Processingを呼び出し、キャッシュ用に構成されたローダーまたはストアへの参照を取得することを可能にするファクトリ・クラスを含めます。ローダーまたはストアの構成における唯一の差異は、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 Event Processingサーバーのconfig
ディレクトリに置きます。
注意:
Oracle Coherenceをクラスタリングに使用する場合は、tangosol-coherence-override.xml
ファイルを含めないでください。
次のXMLをOracle Coherence構成ファイルに追加し、tangosol-coherence-override.xml
ファイルを参照します。Oracle Event Processingの起動時にOracle Coherenceが既存のOracle Coherenceクラスタへの参加を試行しないように、cluster-name
要素を含めます。これが発生すると、問題が発生してOracle Event Processingが起動できなくなる場合があります。
...
<coherence xml-override="/tangosol-coherence-override.xml">
<cluster-config>
<member-identity>
<cluster-name>com.bea.wlevs.example.provider</cluster-name>
</member-identity>
...
</coherence>
Oracle Event Processingクラスタの詳細は、Oracle Event Processingの管理のネイティブ・クラスタリングを参照してください。
アプリケーションを構成して、Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュを使用できます。Oracle Event Processingローカル・キャッシュ・システムは、アプリケーションをマルチサーバー・ドメインにデプロイしない場合に最適です。アプリケーションをマルチサーバー・ドメインにデプロイする計画がある場合は、Oracle Coherenceキャッシュを使用します。
ローカル・キャッシュ・システムおよびキャッシュの作成
この手順では、通知されるローカルOracle Event Processingキャッシュを作成します。
例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>
ローカルまたはリモートOracle Event Processingサーバー上で、Oracle Event ProcessingアプリケーションのJavaクラスをデバッグできます。
サーバー接続の作成
「ファイル」→「新規」→「ギャラリから」の順に選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」ダイアログの左ウィンドウで、「カテゴリ」→「一般」→「接続」の順に選択します。
「新規ギャラリ」ダイアログの右ウィンドウで、「OEP接続」を選択します。
「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 Event Processingプロジェクトを作成します。
Oracle JDeveloperで、「ファイル」→「新規」→「プロジェクト」を選択します。
「新規ギャラリ」ダイアログで、「OEPプロジェクト」を選択して「OK」をクリックします。
OEPプロジェクトの作成ウィザードで、名前にHelloWorldProjectと入力し、「OEPスイート」を選択して「次へ」をクリックします。
Java設定の構成ダイアログで、「次へ」をクリックしてデフォルトを使用します。
OEPテクノロジ設定の構成ダイアログの「OEPアプリケーション・テンプレート名」ドロップダウン・リストで、HelloWorldを選択します。
OEPテクノロジ設定の構成ダイアログの「OEPサーバー接続」ドロップダウン・リストで、LocalCon1を選択します。
「終了」をクリックします。
既存のプロジェクトの接続をLocalCon1に変更するには、次のようにします。
プロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。
「プロジェクト・プロパティ」ダイアログの左ウィンドウで、「デプロイメント」を選択します。
「デプロイメント」ウィンドウでユーザー・プロジェクト設定ラジオ・ボタンを選択したままにし、「デプロイメント・プロファイル」で編集するプロファイルを選択します。
「編集」をクリックします。
「デプロイメント・プロパティ」パネルのOEPサーバーへの接続ドロップダウン・リストで、LocalCon1を選択します。
「OK」をクリックします。
サーバーの起動およびデバッグ・モードでのLoclCon1の実行
-debug
オプションを指定してOracle Event Processingサーバーを起動します。
/Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserver
に移動します。
適切な起動スクリプトを実行します。
Windowsの場合:
startwlevs.cmd -debug
UNIXの場合:
./startwlevs.sh -debug
プロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。
次のメッセージが「メッセージ - ログ」ウィンドウに表示されます。
Listening for transport dt_socket at address 8453 8453 is the default port.
「プロジェクト・プロパティ」ダイアログの左ウィンドウで、「実行/デバッグ」を選択します。
「実行/デバッグ」の右パネルで、デフォルトの設定を使用して「編集」をクリックします。
新しい実行構成を作成する場合、最初に「新規」をクリックすることも可能です。
左ウィンドウで「起動設定」を選択し、右ウィンドウで「リモート・デバッグ」チェック・ボックスを選択します。
左ウィンドウで「ツール設定」→「デバッガ」→「リモート」の順に選択し、右パネルでホストおよびポート・パラメータを設定します。
この例では、ホストはLocalHostでポートは8453です。
「OK」をクリックした後、再度「OK」をクリックし、ダイアログを閉じます。
ブレークポイントの設定
ブレークポイントを設定するには、プロジェクトのJavaクラスを開きます。
HellowWorldプロジェクトでは、HelloWorldBean.java
のソース・コード・ファイルを開きます。
メソッドを選択し、[F5]を押してブレークポイントをONに切り替えます。
HelloWorldBean.java
ソース・コードでは、onInsertEvent
メソッドを選択します。
プロジェクトのデプロイ
プロジェクトを右クリックし、コンテキスト・メニューから「デプロイ」→「新規デプロイメント・プロファイル」の順に選択します。
「デプロイメント・プロファイルの作成」ダイアログの「プロファイル・タイプ」ドロップダウン・リストで、「OEPプロジェクト・デプロイメント・プロファイル」を選択します。
「デプロイメント・プロファイルの作成」ダイアログの「デプロイメント・プロファイル名」フィールドにプロファイルの一意な名前を入力します。
HellowWorldプロジェクトでは、プロファイル名はHelloWorldProfileなどとします。
「OK」をクリックします。
「デプロイメント・プロパティ」ダイアログで、情報が正しいことを確認します。
必要に応じて、修正を行います。
「OK」をクリックします。
Javaクラスのデバッグ
デバッグするプロジェクトを選択し、[Shift] + [F9]を押します。
JPDAデバッガへの接続ダイアログが表示されます。
ツール・バーの「デバッグ」ボタン(赤いテントウムシのアイコン)を選択することもできます。
JPDAデバッガへの接続ダイアログで、情報が正しいことを確認します。
「OK」をクリックします。
「デバッグ中 <Project-Name> - ログ」パネルに、デバッガがサーバーに接続したことを示すメッセージが表示されます。
リモート・スタンドアロンOEPのデバッグは、「ローカルOracle Event Processingサーバーのデバッグ」と同様ですが、リモート・ホストで-debug
フラグを使用して手動でOracle Event Processingサーバーをデバッグ・モードで実行する必要がある点のみが異なります。Oracle JDeveloperでデバッガへの接続を定義する際には、リモート・ホストのアドレスを指定します。
WLSでのOEPのデバッグは、「ローカルOracle Event Processingサーバーでのデバッグ」と同様ですが、WLSをデバッグ・モードで手動で起動し、デバッグ・ポートをチェックするする必要がある点のみが異なります。
コンポーネント構成ファイルで、ローカルまたはリモートHTTPパブリッシュ/サブスクライブ・サーバーのイベント・インスペクタ・サービスを構成します。コンポーネント構成ファイルで、イベント・インスペクタHTTPパブリッシュ/サブスクライブ・サーバーを構成します。サーバーで定義されているHTTPパブリッシュ/サブスクライブ・サーバーが1つのみで、ローカルまたはリモートHTTPパブリッシュ/サブスクライブ・サーバーを指定しない場合、イベント・インスペクタ・サービスはデフォルトでローカルHTTPパブリッシュ/サブスクライブ・サーバーを使用します。
ローカルHTTPパブリッシュ/サブスクライブ・サーバー
Oracle Event Processing IDEでEPNエディタを開きます。
構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。
次の例のように、event-inspector
name
要素を追加します。
<event-inspector> <name>myEventInspectorConfig</name> <pubsub-server-name>myPubSub</pubsub-server-name> </event-inspector>
pubsub-server-name
の値であるmyPubSub
は、次の例のようにローカルOracle Event Processingサーバー・ファイルで定義されている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>
保存してファイルを閉じます。
リモートHTTPパブリッシュ/サブスクライブ・サーバー
コンポーネント構成ファイルに、リモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。または、ローカルHTTPパブリッシュ/サブスクライブ・サーバーを構成します。
Oracle JDeveloperからOracle WebLogic Serverを起動および停止できます。コマンドラインまたはOracle JDeveloperからOracle Event Processingを起動または停止できます。
Oracle JDeveloperの起動
/Oracle/Middleware/soa/jdeveloper/jdev/bin
に移動します。
./jdev
と入力します。
「ロールの選択」ダイアログが表示されます。
「ロールの選択」ダイアログで「Studio開発者(すべての機能)」を選択し、「OK」クリックします。
Oracle JDeveloperが起動するまで、しばらく待ちます。
Oracle JDeveloperの停止
すべての作業を保存します。
「ファイル」→「終了」の順に選択します。
Oracle Event Processingの起動
/Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserver
に移動します。
適切な起動スクリプトを実行します。
Windowsの場合:
startwlevs.cmd
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 Event Processingサーバーの起動は完了です。
また、Oracle Event Processingサーバーへの接続を定義すると、Oracle JDeveloperからOracle Event Processingを起動できます。その場合、「接続」
フォルダを展開すると、「アプリケーション・リソース」からOracle Event Processingサーバーを起動できます。
Oracle Event Processingの停止
/Oracle/Middleware/my_oep/user_projects/domains/<domain>/defaultserver
に移動します。
該当する停止スクリプトを実行します。
Windowsの場合:
stopwlevs.cmd
UNIXの場合:
./stopwlevs.sh
サーバーが起動すると、ターミナル・パネルにメッセージが表示されます。<The application context for "com.bea.wlevs.dataservices" was started successfully
>と表示されると、Oracle Event Processingサーバーの起動は完了です。