ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Stream Explorerイベント処理スタート・ガイド
12cリリース(12.2.1)
E72519-01
  目次へ移動
目次

前
次
 

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

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

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

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

基本的なOracle Stream Explorerアプリケーションは、簡単な株式取引の警告システムのモデルとなります。このアプリケーションは、株式取引に関するサンプル・データの受信や、データのある特性の監視を行い、その結果に基づいて一部のデータをコンソールに表示します。次の図は、このアプリケーションの完成したイベント処理ネットワーク(EPN)ダイアグラムです。

4.2 始める前に

この説明を実行するには、Oracle JDeveloperおよびOracle Stream Explorer JDeveloperプラグインを含む12cバージョンのOracle Stream Explorerのダウンロードおよびインストールが必要です。ダウンロードに同梱されているインストール手順に従って正しく設定を行っていることを確認します。

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 Explorer JDeveloperプラグインは、ローカルOracle Stream Explorerサーバーの検出にこの変数を使用します。

注意:

この説明ではOracle Stream Explorerに特有の機能を紹介しますが、読者が基本的な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 Explorerアプリケーションの基本構造を提供します。

    「OEPサーバー接続」: 空白のまま。後の手順で、Oracle Stream Explorerサーバー接続を作成します。

  9. 「終了」をクリックしてデフォルトを使用します。

    Oracle Stream Explorer 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 Explorer Visualizerで編集できる構成を持つコンポーネントについて記述しています。Oracle JDeveloperを使用してコンポーネントを作成する際は、構成をprocessor.xmlファイルに入れることも、別のコンポーネント構成ファイルを指定して同じファイルにコンポーネント・タイプをグループ化することもできます。構成ファイルを手動で編集することもできます。

  • EPNダイアグラムはアプリケーションを構成しているコンポーネントを示しています。イベント・データはダイアグラムの左からアプリケーションに入り、右に向かってステージからステージに移動します。

    EPNダイアグラムは、基礎となるEPN構成のグラフィック表示です。EPNにコンポーネントを追加する際に、Oracle JDeveloperはTradeReport.context.xmlアセンブリ・ファイルおよび構成ファイルに情報を書き込みます。

  • MANIFEST.MFは、Oracle Stream ExplorerサーバーにデプロイするOSGiバンドルの内容についての記述です。

「リソース」ウィンドウ

Oracle JDeveloperの右側の「IDE接続」の下にある「リソース」ウィンドウは、実行中のサーバー接続についての情報を提供しています。

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

Oracle Stream Explorerアプリケーションでは、すべてのイベントがイベント・タイプを持っています。イベント・タイプとは、イベントが取ることのできる値セットと、そのデータに対して行うことができる操作という形で、特定の種類のイベント・データを定義する構造です。

Oracle Stream Explorerは、新しいイベント・タイプの作成用にいくつかのデータ構造をサポートしています。そのデータ構造とは、JavaBeanクラス、タプル、およびjava.util.Mapクラスです。JavaBeanクラスは新しいイベント・タイプの最善の構造で、この説明で取引イベントを定義するために使用されています。

生のイベント・データがOracle Stream Explorerアプリケーションに到着すると、アプリケーションはそのデータを特定のイベント・タイプのイベントにバインドします。イベント・タイプは、保持できるデータのセットと、そのセット内の各データに必要となるタイプという形で定義できます。

この説明では、イベント・データは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 Explorerでは、イベント・タイプを定義する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 Explorerはイベント・タイプをイベント・タイプ・リポジトリで管理し、TradeEventイベント・タイプにはtradereport.TradeEventクラスが含まれ(マッピングされ)ていることがわかります。

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

アダプタは、EPNを出入りするデータを管理します。この例では、ロード・ジェネレータ・ユーティリティと協調し、アプリケーションをテストするためのデータ・フィードをシミュレートするcsvgenアダプタを使用します。ロード・ジェネレータは、サンプル・データ・フィード情報を含むASCIIファイルを読み取り、ポート順に各行のデータを送信します。csvgenアダプタは同じポートでデータをリスニングします。csvgenアダプタ・ロジックは、CSVファイルから読み取ったデータをTradeEventイベント・タイプのイベントに変換します。

注意:

アプリケーションを最終の本番環境にデプロイする前に、アプリケーションが本番環境で受信する着信データのタイプを読み取れるよう、入力アダプタを切り替える必要があります。

使用可能な入力および出力アダプタの詳細は、Oracle Stream Explorerによるイベント処理のためのアプリケーション開発を参照してください。

この手順では、アダプタを宣言し、プロパティを設定します。完了すると、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 Explorerに含まれる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 Explorerは取得したイベントを出力チャネルに渡し、イベントは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 Explorerでは、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 Explorerドメインの作成

ドメインを作成するために、Oracle Stream Explorer構成ウィザードを開始します。

  1. 構成ウィザードを起動します。

    1. Windowsでは、\Oracle\Middleware\my_oep\oep\common\bin\に移動し、config.cmdを実行します。

    2. 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 Explorerサーバーの起動

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

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

    1. Windowsの場合:

      • prompt> startwlevs.cmd
        
    2. UNIXの場合:

      • prompt> ./startwlevs.sh
        

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

Oracle Stream Explorerサーバー接続の作成

  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 Explorerアプリケーションが本番環境にデプロイされた際の動作を確認することが可能です。

通常は、アプリケーションをデプロイしてからロード・ジェネレータを起動します。ロード・ジェネレータをデプロイ前に起動することも可能ですが、ポート9200にリスナーがないというメッセージが表示されます。アプリケーションをデプロイすると、メッセージは消えます。

テスト・データの参照

  1. 任意のテキスト・エディタでインストール済のOracle Stream Explorerに含まれるStockData.csvファイルを開きます。

    デフォルトで、ファイルは次の場所にあります。

    /Oracle/Middleware/my_oep/oep/utils/load-generator/StockData.csv

  2. StockData.csvファイルを表示します。カンマ区切り値の行が複数含まれ、各行は1件の取引を表しています。

    注意:

    StockData.csvファイルのイベント・プロパティの順番は、csvgenアダプタの作成およびプロパティの設定で指定したイベント・プロパティの順番と一致している必要があります。

ロード・ジェネレータ・プロパティの検証

  1. 任意のテキスト・エディタでインストール済のOracle Stream Explorerに含まれる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プロパティ・ファイルを使用して、ロード・ジェネレータを実行します。

    1. Windowsの場合:

      prompt> runloadgen.cmd StockData.prop
      
    2. UNIXの場合:

      prompt> ./runloadgen.sh StockData.prop

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

サンプルの作業を終えたら、ロード・ジェネレータおよびOracle Stream Explorerサーバーを停止できます。

ロード・ジェネレータの停止

  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コマンドを実行します。