Processingアプリケーションの作成方法について説明します。途中で、主要な概念の概要を示します。この章の内容は次のとおりです。Processingアプリケーションを作成する基本について説明します。Processing概念の調査を目的とし、それぞれ詳細に調査できる出発点となります。このウォークスルーで作成するアプリケーションは、単純な株式取引アラート・システムをモデル化します。アプリケーションは、株式取引のデータのサンプルを受信し、特定の特性のデータを調査し、一部のデータをコンソールに出力します。次の図は、アプリケーションの終了したEPNダイアグラムを示します。図tradereport_finishedepn.pngの説明ここでは、次の内容について説明します。8.1.1項「このウォークスルーの主要な概念」8.1.2項「開始する前に」このウォークスルーは、8.2項「ワークスペースおよびプロジェクトの作成」で開始します。Processingアプリケーションの一部である次の概念について説明します。Processingアプリケーションの作成を容易にするよう設計されたIDE機能。イベント処理ネットワーク(EPN)としてのアプリケーションの作成、アプリケーションを通過する場合にストリーミング・データを受信し、そのデータを操作するアプリケーションの動作をモデル化するコア設計構築。イベントをモデル化するイベント・タイプの設計、アプリケーション内のコードとともに使用するイベント・データの正規化。アダプタを使用したストリーミング・データのソースを含む外部コンポーネントとのやり取りの管理。イベント処理ネットワーク内のイベントを送受信できるJavaクラスの実装。CQL)を使用したイベント内の特定のプロパティに基づいたイベントのフィルタ処理。IDEをインストールする必要があります。IDEを更新する必要があります。Processingに固有の機能を説明しますが、このウォークスルーは基本的なJavaプログラミングを理解していることを前提とします。詳細については、次のトピックを参照してください。ワークスペースおよびプロジェクトの作成この最初の手順では、IDEを使用してアプリケーションを開発するワークスペースおよびプロジェクトを作成します。Processingアプリケーション・プロジェクト・タイプを提供します。Processingアプリケーションで必要なアーティファクトおよび依存性が含まれます。JREの場所を認識するためにIDEプリファレンスをすでに構成している必要があります。ワークスペースを選択するプロンプトが表示されたら、walkthroughsと呼ばれるワークスペースを作成します。「ファイル」メニューから、「新規」>「プロジェクト」を選択して、新しいプロジェクトの作成を開始します。Processingアプリケーション・プロジェクト、「次」の順にクリックします。Processingアプリケーション・プロジェクト・ダイアログの「プロジェクト名」ボックスで、TradeReportを入力します。「デフォルトのロケーションを使用」チェック・ボックスを選択したままにして、作成したワークスペースの場所に新しいプロジェクトを作成します。「ターゲット・ランタイム」で、ランタイムがドロップダウンに表示されない場合は、次の手順を実行します。「新規」ボタンをクリックします。v11.1を選択して、「次」をクリックします。「次へ」をクリックします。Middlewareホーム・ディレクトリ」ボックスの横にある「参照」をクリックします。フォルダの参照ダイアログで、Middlewareホーム・ディレクトリを特定して、「OK」をクリックします。デフォルトでは、Middlewareホーム・ディレクトリはORACLE_HOME/Middlewareにあります。JREとともに使用するために最適化されます。Processingに付属するJREを特定します。インストールされているJREのプリファレンスリンクをクリックします。「プリファレンス」ダイアログで、インストールされているJREリストの横にある「追加」ボタンをクリックします。JREの追加ダイアログで、インストールされたJREタイプの下の標準VMを選択して、「次」をクリックします。JREの場所を参照します。フォルダの参照ダイアログで、Middlewareホーム・ディレクトリ、jrockit_160_29ディレクトリの順に展開し、JREディレクトリ、「OK」の順にクリックします。JREの追加ダイアログがJREホーム・ディレクトリ、名前およびシステム・ライブラリを表示した後、ダイアログの「終了」ボタンをクリックします。「プリファレンス」ダイアログで、追加したJREのチェック・ボックスを選択して、「OK」をクリックします。JREドロップダウンから新しいサーバー・ランタイム環境ダイアログで、追加したJREを選択します。「終了」をクリックします。v11.1ターゲット・ランタイムを選択したままにして、「次」をクリックします。Processingアプリケーションのコンテンツで、作成するプロジェクトのプロパティを確認します。「終了」をクリックします。プロジェクトを作成した後、IDEは、作成するイベント処理ネットワークの空のエディタとともにプロジェクトのアーティファクトの階層リストを含むプロジェクト・エクスプローラを表示します。Processingアプリケーションの中心の設計上の概念です。EPNは、ステージ間でイベントを移動するパスとともに、アプリケーションを構成するステージと呼ばれるコンポーネントを表します。アプリケーションを開発する場合、EPNエディタは追加するステージおよびステージ間の接続を表示します。概念的に、イベント・データは左側からアプリケーションに届き、右側にステージ間を移動します。EPNエディタで示す設計は、EPNの基礎となる構成のグラフィカル表現です。EPNエディタを介してステージまたは接続を追加する場合、IDEは、構成XMLを基礎となるアセンブリ・ファイルに書き込みます(XMLファイルを直接編集してEPNエディタのグラフィカル設計が更新されるのと同様)。EPNアセンブリ・ファイルには、各EPNステージのデフォルト構成が含まれます。これは、アプリケーションを再デプロイすることなく実行時にサーバーで変更できないデフォルト構成です。実行時に編集できる構成では、後で示すように別の種類の構成ファイルを使用できます。注意:EPNアセンブリ・ファイルのXMLスキーマは、Springフレームワーク構成ファイルの拡張です。Webサイトを参照してください。プロジェクト・エクスプローラを確認してください。次の図に示されているようなプロジェクト階層があります。図tradereport_projexp.pngの説明IDEを使用したことがある場合は、このほとんどの内容を理解できます。Javaソース・コード、JREシステム・ライブラリおよび作成出力の通常の場所以外に、次も確認します。Processingクラスパスを構成するJARファイル。Processingサーバーに必要な機能を提供します。Webサイトを参照)。開始するファイルは、作成するイベント処理ネットワークの内容および構造を示すEPNアセンブリXMLファイルです。EPNを作成する場合、ステージを追加および接続して、IDEはこのファイルで処理を取得します。ファイルを手動で編集することもできます。この時点で、ファイルでは、追加されるXMLのネームスペースを宣言するだけです。構成を実行時に編集できるコンポーネントを示すファイルのwlevsディレクトリ。ほとんどのコンポーネントは、wlevsディレクトリのコンポーネント構成ファイル内でオーバーライドできるデフォルト構成を持ちます。構成をこれらのファイルのいずれかに配置する必要があるコンポーネントはプロセッサのみです。Visualizerを使用して実行時に編集できます。複数のコンポーネントを構成する場合、1つまたは複数のコンポーネント構成ファイルを使用できます。それぞれが異なるコンポーネントを管理する開発者のチームの場合、ソース制御の競合を回避するためにコンポーネントごとに構成ファイルを持つことができます。プロジェクトを作成したので、8.3項「イベント・データを移動するイベント・タイプの作成」で、イベント処理ネットワークのアセンブルを開始します。アプリケーションのロジックの着信イベント・データを表すイベント・タイプの作成を開始します。Processingアプリケーションは、イベントを受信、処理および送信します。イベントは、ほぼすべての構造化された形式になる可能性があるイベント・データとして開始します。イベント・データはraw形式でアプリケーションに到着し、定義するイベント・タイプにバインドされます。CQL問合せ、Javaコードなどを含むアプリケーションの残りのコードのデータの処理を予測できます。(変換はアダプタによって実行されます。詳細は後で説明します。)そのため、イベント処理ネットワークを定義する早期タスクは、ソースからのデータの構造を明確にし、EPN内で使用するためにデータを変換する形式を定義します。この項では、株式取引データの例の構造から処理してデータがバインドされるイベント・タイプを定義します。ここで作成するアプリケーションの場合、サンプルの着信イベント・データはカンマ区切り値の行として到着します。各行には、発生した特定の対象(ここでは株式取引)のデータが含まれます。値の構造は行ごとに一貫性があります。いくつかの行の例を次に示します。IBM,15.5,3.333333333,3000,15SUN,10.8,-1.818181818,5000,11ORCL,14.1,0.714285714,6000,14GOOG,30,-6.25,4000,32YHOO,7.8,-2.5,1000,8CSVファイルでラベル付けされていませんが、次のように値をラベル付けできます。price着信取引イベント・データの構造です。アプリケーションのデータを処理する(問合せ、フィルタ処理、計算など)には、データをそれらの機能の実行をサポートする新しい構造に割り当てる必要があります。新しい構造は、特定のタイプのプロパティを指定する機能を持ちます。タイプが予測される値と一致すると、コードの値の処理が容易になります。データおよびラベルの例を確認すると、次のJavaタイプのプロパティにバインドされる各行の各値を想定できます。Processingは、新しいイベント・タイプのベースにできるいくつかの形式をサポートします。これらには、JavaBeanクラス、タプルおよびjava.util.Mapインスタンスが含まれます。JavaBeanクラスは新しいイベント・タイプのベスト・プラクティス・タイプなので、ここで取引イベントのために使用します。使用したことがない場合、JavaBeansが予測できるように設計された特定の標準ルールに従うJavaクラスであることがわかります。通常、クラスに対して内部にデータ(取引イベントの銘柄記号など)を保持する変数およびデータをクラスの外側のコードで取得または設定できるメソッドを提供します。"setSymbol"や"getSymbol"などの予測できる名前でメソッドに名前を付けると、クラスの外側のコードにクラスの内側のデータを使用する予測可能な方法を提供します。Processingで着信イベント・データをイベント・タイプにバインドする必要がある場合、イベント・タイプJavaBeanの新しいインスタンスを作成し、Beanの"set"メソッドを使用してクラスの内側の適切な場所のデータを設定します。CQLコードなどのアプリケーションの後のコードは、Beanの"get"メソッドを呼び出して再度データを抽出できます。次の項では、イベント・タイプの背後にあるコードとしてJavaBeanを作成し、イベント・タイプを構成してJavaBeanを使用します。JavaBeanクラスを作成します。IDEで、srcディレクトリを右クリックして、「新規」>「クラス」をクリックします。新規Javaクラスダイアログの「パッケージ」ボックスで、com.oracle.oep.example.tradereportを入力します。「名前」ボックスで、TradeEventを入力します。「終了」をクリックします。TradeEventクラスの宣言とともにTradeEvent.javaソース・コード・ウィンドウが表示されます。TradeEventクラスのTradeEventクラス宣言の下で、次の例に示すように必要な各プロパティのプライベート変数を追加します。volume;}すべての変数のコードを選択して、「ソース」メニューをクリックして、ゲッターおよびセッターの生成をクリックします。図tradereport_genaccess.pngの説明ゲッターおよびセッターの生成ダイアログで、選択した各変数のチェック・ボックス(つまり、すべて)を選択します。挿入ポイントドロップダウンで、最後のメンバーを選択します。「OK」をクリックします。TradeEventソース・コード・ウィンドウで、追加した変数の値を取得または設定するメソッドのペアを作成したことを確認します。TradeEvent.javaファイルを保存して、コード・ウィンドウを閉じます。これで、JavaBeanの作成は完了です(少なくともこの場合)。次の手順は、JavaBeanをイベント・タイプとして使用することをアプリケーションに通知します。JavaBeanをイベント・タイプとして使用することをTradeReportアプリケーションに通知します。EPNエディタが開いていることを確認します。TradeReportが表示されます。デザイナ・ウィンドウの下で、「イベント・タイプ」タブをクリックします。「イベント・タイプの定義」で、TradeReport.context.xmlを選択します。これがEPN設計の基礎となるEPNアセンブリ・ファイルです。これは、プロジェクト・エクスプローラのMETA-INF/springディレクトリで確認したファイルでもあります。構成するイベント・タイプがそのファイルで定義されていることを確認するため、ここで選択します。「イベント・タイプの定義」で、プラス記号をクリックして新しいイベント定義を追加します。作成されたnewEventエントリをクリックします。「イベント・タイプの詳細」の「タイプ名」ボックスで、イベント・タイプ名をTradeEventに変更します。(JavaBeanクラスと同じにする必要はありませんが、同じ名前を使用するとわかりやすくなります。Beanで定義されたプロパティ」オプションを選択します。他のオプションは、タプルとしてイベントを定義するために使用されます。「クラス」ボックスで、作成したJavaBeanクラスの名前のcom.oracle.oep.example.tradereport.TradeEventを入力します。図tradereport_eventdef.pngの説明イベント・タイプ定義で更新されたイベント・タイプ名を持つファイルを保存します。EPNアセンブリ・ファイルに追加した内容に関心がある場合は、ファイルを開きます。「TradeReport」>「META-INF」>「spring」>「TradeReport.context.xml」のプロジェクト・エクスプローラにあります。追加した部分は、次のように表示されます(エディタ・ウィンドウの下にある「ソース」タブをクリックする必要がある場合があります)。Processingはイベント・タイプ・リポジトリでイベント・タイプを管理します。JavaBeanクラスにマップされます。イベント・タイプを定義および構成したので、アプリケーションに着信イベント・データの監視方法を通知する必要があります。データを作成したTradeEventタイプに割り当てることを指定する必要もあります。8.4項「イベント・データを受信する入力アダプタの追加」で追加するアダプタを使用して、これらの処理を実行します。作成するイベント処理ネットワークを試行する前に、イベント・データが通過する方法を作成する必要があります。Processingアプリケーションで、アダプタは、外部コンポーネント間のトラフィックおよびイベント処理ネットワークの間隔を管理します。外部ソースから到着するイベント・データはアダプタを介してアプリケーションに届き、外部コンポーネントまたはアプリケーションに移動する途中でアプリケーションを離れるイベント・データはアダプタを介して終了します。(JMS)宛先、HTTPパブリッシュ・サブスクライブ・サーバーおよびCSVファイル)のアダプタが含まれます。csvgenと呼ばれるCSVファイルのアダプタは、開発段階のコードで試行する場合に役立ちます。充実した実際のイベント・データ・ソース用のアダプタを定義するタスクの軽量の選択肢です。固有のアプリケーションで、EPNを開始してロジックの一部を定義するまで、csvgenアダプタが使いやすい場合があります。csvgenアダプタのロジックは、CSVファイルから読み取られるイベント・データを定義したイベント・タイプに変換する方法を認識します。Processingに付属するロード・ジェネレータ・ユーティリティと組み合せてcsvgenアダプタを使用します(ロード・ジェネレータの詳細は、このウォークスルーの後半で説明します)。Processingにデフォルトで含まれるため、実行する必要がある手順は、構成コードを追加してEPNのステージとしてアダプタを宣言し、いくつかのプロパティを設定するだけです。コードを追加したCSVアダプタの構成この項では、イベント処理ネットワークのCSVアダプタの場所を作成する構成コードを追加します。コードを使用して、アダプタのランタイム動作を構成するために必要ないくつかのアダプタ・プロパティも設定します。アダプタがEPNに含まれてステージとしてEPNデザイナに表示されるよう、コードをEPNアセンブリ・ファイルに追加します。IDEで、EPNアセンブリ・ファイルを検索して開きます。プロジェクト・エクスプローラで、「TradeReport」>「META-INF」>「spring」>「TradeReport.context.xml」にあります。XMLスタンザの下で、次のXMLを追加してアダプタを宣言します。/></wlevs:adapter>このXMLスタンザは、csvgenアダプタのインスタンスを宣言し、EPNで使用するために構成する3つのプロパティを割り当てます。アダプタは、着信rawイベント・データから8.3項「イベント・データを移動するイベント・タイプの作成」で定義したイベント・タイプのプロパティにマップするプロパティを使用します。追加する値を次に示します。id属性値はアダプタの一意の識別子です。Processingに付属するcsvgen実装を参照するため、プロバイダ属性値を"csvgen"にする必要があります。portインスタンス・プロパティは、アダプタ・インスタンスに着信イベント・データをリスニングするポートを通知します。ここでの値9200は、ロード・ジェネレータがイベント・データを送信するポート番号に対応します(詳細は後述)。eventTypeNameインスタンス・プロパティは、インスタンスに着信イベント・データを割り当てるイベント・タイプの名前を通知します。ここで、以前に定義したTradeEventタイプの名前を指定します。eventPropertyNamesインスタンス・プロパティは、インスタンスにデータを割り当てるイベント・タイプ・プロパティの名前を通知します。この場合、eventPropertyNames属性値がイベント・タイプのJavaBeanで定義した同じプロパティのカンマ区切りリストであることを確認します。csvgenアダプタで着信値からイベント・タイプ・プロパティにマップするため、ここの名前はイベント・タイプと同じである必要があり、CSVファイルの各行の対応する値と同じ順序にする必要があります。内部のアダプタXMLとともにEPNアセンブリ・ファイルを保存して閉じます。開いていない場合、EPNエディタを「概要」タブで開きます。EPNエディタで、追加したcsvgenアダプタ・インスタンスを表すアイコンが表示されていることを確認します。アイコンは、構成コードで指定したアダプタid値でラベル付けされます。次の手順の8.5項「イベントを伝達するチャネルの追加」では、アダプタから今すぐ追加するロジックにイベントを移動する方法を追加します。イベントを伝達するチャネルの追加この手順では、8.4項「イベント・データを受信する入力アダプタの追加」で追加したアダプタを次の手順で追加する少しのロジックに接続する方法を追加します。後で、アプリケーションをテストします。Processingアプリケーションでは、チャネルを使用してEPNステージを接続します。チャネルは、EPNのある部分から別の部分にイベントを転送するパイプです。イベントの伝達はチャネルの主要な目的ですが、チャネル構成オプションによってアプリケーションをチューニングできる他のプロパティを指定する機会が提供されます。以下のものが含まれます。チャネルで非同期的にイベントを処理できるかどうか、およびこのためにバッファで取得できるサイズ。チャネルのイベントを処理するために使用されるスレッドの数(数が大きい場合、パフォーマンスを向上できます)。EPNの個別のダウンストリーム部分にイベントをディスパッチするため、プロパティに基づいてイベントをパーティション化するかどうか。これらの種類のチャネル構成プロパティはデフォルト値があるため、作成するアプリケーション用に設定する必要がありません。このアプリケーションでは、チャネル構成を単純なままにします。追加するチャネルの目的は、イベント・データを受信するアダプタから次の手順で追加するコードに新しく生成されたイベントを移動することです。AdapterOutputChannelの追加IDEで、EPNエディタが開いて作成するEPNが表示されることを確認します。EPNエディタを右クリックして、「新規」>「チャネル」をクリックします。チャネル・アイコンがEPNエディタに表示されます。エディタに表示されるチャネル・アイコンをダブルクリックして、EPNアセンブリ・ファイルのチャネルの構成XMLを表示します。アセンブリXMLファイルで、追加したチャネルのチャネルXMLスタンザを検索します。次のように表示されます。id="channel"></wlevs:channel>「チャネルは''event-type''値を宣言する必要があります。」という警告が通知される場合があります。次と一致するようにデフォルトのXMLを編集します(または保有するコードに次のコードを貼り付けます)。event-type="TradeEvent"></wlevs:channel>チャネルを構成するために追加する値を次に示します。channel要素は、チャネルの構成を表し、EPNにチャネルを配置します。id属性の値は、このEPNのチャネルの一意の識別子です。(別のチャネルを追加します。)event-type属性の値は、チャネルを構成して伝達するイベント・タイプの名前です。JavaBeanである以前に追加したイベント・タイプの名前のTradeEventに設定します。ここで追加する値がアセンブリ・ファイルの他の場所のevent-type要素のtype-name属性値と同じであることに注意してください。チャネル構成XMLの編集を終了した後、アセンブリ・ファイルを保存します。EPNエディタに戻ります。TradeReportタブをクリックしてEPNエディタを表示する必要がある場合があります。EPNエディタで、入力アダプタから追加したチャネルへの接続を作成します。これを行うには、「StockTradeCSVAdapter」アイコンをクリックして、「AdapterOutputChannel」アイコンにドラッグします。これにより、2つのアイコン間の接続線が作成されます。左から右に順番にアイコンを表示してEPNダイアグラムを整理するには、EPNエディタの右上の角にある「EPNのレイアウト」アイコンをクリックします。「StockTradeCSVAdapter」アイコンをダブルクリックして、アセンブリ・ファイルのアダプタの構成XMLを表示します。アセンブリ・ファイルで、アダプタとチャネル間の接続の作成によってlistener要素がアダプタXMLスタンザに追加されたことを確認します。この要素のref属性値は、チャネル要素のid属性に設定されます。このXMLは、EPNエディタにグラフィカルに表示される接続を定義します。結果となるEPNアセンブリXMLは次のように表示されます(コンポーネントを接続する側面は太字で表示されます)。</wlevs:channel></beans>TradeReport.context.xmlを保存して、ファイルを閉じます。この手順では、チャネルを追加して入力アダプタからイベントを伝達しました。次の手順の8.6項「イベントを受信およびレポートするリスナーの作成」では、イベントを移動するステージを追加します。イベントを受信およびレポートするリスナーの作成この手順では、イベント・データを使用してアプリケーションをテストできるよう、単純なイベント処理ネットワークを完了するステージを追加します。ステージは、EPNを通過する取引イベントを受信して取引の情報をレポートするよう設計されている「リスナー」Javaクラスです。Processingで認識される特定の種類のJavaクラスです。イベント・シンクは、EPNを通過する場合にイベントを受信できるコードです。イベント・シンクを使用してイベントをインターセプトすることによって、クラスのロジックを使用してイベントの内部を確認し、クラスの他のロジックの実行中にデータを使用できます。イベント・シンクを書き込む以外に、イベントをEPNのステージ・ダウンストリームに送信できるイベント・ソースを書き込むこともできます。そのため、イベントをインターセプトし、イベントの内容を変更するコードを実行(またはそれらから新しいイベントを作成)し、結果となるイベントを次のステージに送信する1つのJavaクラスなどを想定できます。そのようなコードにより、イベントの表示内容に基づいて(他のアプリケーションにある可能性がある)他のプロセスを開始することもできます。Javaインタフェースを実装します。イベント・シンクは、受信するイベントがストリームまたはリレーションの一部であるかどうかに応じて、2つのインタフェースcom.bea.wlevs.ede.api.StreamSinkおよびcom.bea.wlevs.ede.api.RelationSinkのいずれかを実装します。ストリームとリレーションの違いは、ここで作成するアプリケーションで基本的に重要ではありません(コードが違いに依存しません)。Processingを使用したイベント処理の仕組みを理解する重要な部分であるため、簡潔に説明する価値があります。ストリームは、時間に関して連続的である一連のイベントで、前のタイムスタンプのイベントが後のタイムスタンプのイベントの前に到着します。一方で、リレーションは、特定の基準を満たしているためにセットのイベントが選択された一連のイベントです。リレーションで実行するコードは、イベントの削除、挿入および更新になる可能性があります。実例として、ここで作成するアプリケーションよりも関連性がある株式取引アプリケーションの暗喩を想定してください。アプリケーションで受信する取引イベントが確認できないパイプを通過することを考えてみてください。イベントは、受信した順序(イベントの発生した順序が重要であるために考慮する順序)でパイプから到着します。捕捉するには、コードである株式取引が別の特定の株式取引の前の15秒以内に発生したかどうかを確認できるように、一度に取引の15秒分を捕捉するよう設計されたパイプの最後にバケットを配置します。パイプは、順序および隣接する品質が主要な特性であるストリームです。バケットは、特定の共有される特性がバケットの内容を定義するリレーションです。次の項では、イベントをリスニングするインタフェースを実装するJavaクラスを作成し、イベントBeanとしてそのクラスを構成してEPNの一部にします。リスナー・イベント・シンク・クラスの作成この項では、ストリームからイベントを受信できるJavaクラスを作成します。IDEのプロジェクト・エクスプローラで、srcディレクトリを右クリックして、「新規」>「クラス」をクリックします。新規Javaクラスダイアログの「パッケージ」ボックスで、com.oracle.oep.example.tradereportを入力します。「名前」ボックスで、TradeListenerを入力します。「インタフェース」ボックスの横にある「追加」ボタンをクリックして、リスナーでイベント・シンクとして実装する必要があるインタフェースを選択します。実装されているインタフェースの選択ダイアログのインタフェースの選択ボックスで、com.bea.wlevs.ede.api.StreamSinkを入力します。「一致するアイテム」ボックスでStreamSinkを選択して、「OK」をクリックします。新規Javaクラスダイアログの作成するメソッド・スタブで、継承された抽象メソッドチェック・ボックスが選択されている(その他の選択が解除されている)ことを確認します。「終了」をクリックします。TradeListener.javaソース・コード・ウィンドウが開き、TradeListenerクラスの宣言が表示されます。onInsertEventメソッドの宣言は、.javaファイルに存在する必要もあります。StreamSinkインタフェースを実装する場合、このメソッドが必要です。TradeListenerクラスでは、次のコードと一致するようにonInsertEventメソッドを編集します。Processingで使用するメソッドです。行う変更により、次を実行するメソッドを実装します。JavaBeanのインスタンスであることを確認します。(その他は無視されます。)イベントがTradeEventである場合、コードは銘柄記号および含まれる取引量を出力します。TradeListener.javaファイルを保存して閉じます。前述の項では、イベント・シンクを実装して特定のタイプのイベントをリスニングするクラスを作成しました。この項では、EPNの他の部分に接続できるイベントBeanとしてリスナーをEPNに追加します。イベントBeanは、JavaコードをEPNに追加する方法です。異なる管理機能を提供しますが、両方のBeanモデルは実装が書き込むJavaコードであるEPNステージを構成する手段を提供します。Processingサーバー機能とより詳細に統合します。Beanは適切な選択肢です。EPNエディタで、空の領域を右クリックして、「新規」>「イベントBean」をクリックします。新しい「eventBean」アイコンをダブルクリックして、アセンブルXMLファイルの構成コードを表示します。TradeReport.context.xmlソース・コードで、event-bean要素を検索し、次のように表示されるように編集します。/>このコードを使用して、一意の識別子"ListenerBean"を使用したイベントBeanおよび以前に作成したクラスの実装クラスを構成します。アセンブリXMLファイルを保存します。EPNエディタに戻り、新しいイベントBean名などの基礎となるXMLの変更を反映している設計であることを確認します。EPNエディタで、AdapterOutputChannelをクリックして選択します。ここでも、AdapterOutputChannelをクリックして、ListenerBeanイベントBeanアイコンにドラッグします。これにより、イベントをチャネルからイベントBeanに渡すことができる接続が作成されます。「EPNのレイアウト」アイコンをクリックして、ダイアグラムを整理します。図tradereport_eventbeanadded.pngの説明AdapterOutputChannelをダブルクリックして、基礎となるXMLを表示します。チャネルXMLスタンザには参照属性値が追加したイベントBeanのID値と同じであるリスナー要素が含まれることに注意してください。(ここでの両方の場所の用語「リスナー」は、便宜的な目的のみです。/>TradeReport.context.xmlを保存します。この手順では、イベント処理ネットワークを移動するイベントをリスニングするためにイベントBeanを追加しました。次の手順の8.7項「ロード・ジェネレータの設定およびテスト」では、作成するアプリケーションをテストします。Processingに付属するロード・ジェネレータ・ユーティリティを使用してサンプル・データを作成するアプリケーションにフィードします。Processingとともにインストールされたロード・ジェネレータ・ユーティリティは、プロジェクトのテストを簡単に開始する方法を提供します。CSVファイルを読み取り、イベント・データとしてファイルの行を構成で指定するポートに送信するよう特に設計されています。プロジェクトで、そのポートでリスニングするCSVアダプタは、行を受信し、データを定義したイベント・タイプのインスタンスに変換します。プロパティ・ファイルを介して、使用するCSVファイルおよびターゲット・ポート、ロード・ジェネレータの実行時間、イベント・データの送信速度などを含むロード・ジェネレータの特定の側面を構成できます。Processingサーバーのインスタンスを作成し、プロジェクトをデプロイするために構成し、ロード・ジェネレータを設定し、プロジェクトをテストします。Processingサーバー・インスタンスをTradeReportプロジェクトに追加します。サーバー・インスタンスの追加によって、IDEを使用してサーバーを起動および停止したり、変更および再テストを行うたびにプロジェクトを再デプロイする便利な方法が提供されます。Processingサーバーを認識します。(個別の手順としてサーバー・ランタイム環境を追加する必要がある場合があります。)IDEで、「サーバー」ビューが表示されることを確認します。表示されない場合、「ウィンドウ」>「ビューの表示」>「サーバー」をクリックして表示します。「サーバー」ビューで、右クリックしてコンテキスト・メニューを表示して、「新規」、「サーバー」の順にクリックします。v11.1をクリックします。ホスト名、サーバー名およびランタイム環境をそのままにし、「次」をクリックします。v11.1サーバーで、「ローカル・サーバー」オプションが選択されていることを確認し、「次」をクリックします。v11.1サーバーで、「ドメイン・ディレクトリ」をそのままにして、「次」をクリックします。追加と削除で、「使用可能」ボックスの「TradeReport」を選択して、「使用可能」および「構成済」ボックス間の「追加」ボタンをクリックします。TradeReportプロジェクト名を「構成済」リストに移動すると、作成するTradeReportプロジェクトを構成して追加するサーバーで実行することが指定されます。この単純な手順により、デバッグする場合にプロジェクトをサーバーに簡単にデプロイ(および再デプロイ)できます。「終了」をクリックします。v11.1として「サーバー」ビューにリストされます(停止)。エントリを展開して、TradeReportプロジェクトが構成されたプロジェクトのいずれかであることを確認します。テスト・データおよびロード・ジェネレータの設定テスト・データおよびロード・ジェネレータを実際に設定する必要はありません。Processingをインストールすると設定されます。それらを使用してプロジェクトをデバッグするため、次の手順を使用して確認します。Processingに付属するStockData.csvファイルを開きます。デフォルトでは、次のパスでこのファイルを確認します。ORACLE_HOME/Middleware/ocep_11.1/utils/load-generator/StockData.csvファイルの内容が基本的にデータのイベント・タイプを定義した際に例で確認した内容であることに注意してください。CSVファイルと同様に含まれる値の順序に関して行が均一であることに注意してください。テキスト・エディタで、StockData.propファイルを開きます。これはロード・ジェネレータの処理を構成するプロパティ・ファイルです。2つのプロパティtest.csvDataFileおよびtest.portがロード・ジェネレータの処理に必要です。他のプロパティは表面上オプションですが、ロード・ジェネレータがCSV形式の入力を認識するためにもう1つ設定する必要があります。TradeReportプロジェクトをデバッグするには、次のプロパティを設定する必要があります。ロード・ジェネレータが読み取るCSVファイルの名前。ここでの値をStockData.csvにする必要があります。ロード・ジェネレータがイベント・データを送信するポート番号。これは、CSVアダプタ・インスタンスを構成した場合に指定したポート値である必要があります(つまり、9200)。ロード・ジェネレータが処理する形式。この値はCSVである必要があります。プロジェクトのデバッグこのプロジェクトを実際にデバッグする必要はありません(ここで示されているすべてを実行する場合)。Processingサーバーの実行によって、処理の方法を確認する機会が提供されます。IDEで、以前の手順で作成したTradeListener.javaファイルを開きます。プロジェクト・エクスプローラで、「TradeReport」>「src」>「com.oracle.cep.example.tradereport」を展開して、ファイルを表示できます。TradeListener.javaで、次のコードの行にブレークポイントを設定します。v11.1を選択します。サーバーを選択したままにして、「サーバー」ビューの右上の角にあるデバッグ・モードでサーバーの起動ボタンをクリックします。サーバーが起動し、IDEがプロジェクトをコンパイルし、アプリケーションとしてTradeReportプロジェクトを実行中のサーバーにデプロイする場合に多少の待機時間が必要になる場合があります。この実行中に、「コンソール」ビューは、サーバーの起動の進行状況に関連するステータス・メッセージを表示します。「コンソール」ビューの出力が<サーバーの起動>または<"TradeReport"のアプリケーション・コンテキストは正常に起動しました>で終了する場合、サーバーがデバッグ・モードで実行されています。「サーバー」ビューで、プロジェクトをサーバーに再パブリッシュする必要がないことを確認します。「TradeReport」エントリが(再パブリッシュ)を示す場合、「TradeReport」エントリを右クリックして、「強制パブリッシュ」をクリックします。正常にデプロイされた後、エントリは(同期化)を示します。再パブリッシュ時にエラーが表示される場合、続行する前にプロジェクトを消去して再作成する必要があることがあります。Processingとともにインストールされたロード・ジェネレータ・ディレクトリにディレクトリを変更します。デフォルトでは、次のパスになります。ORACLE_HOME/Middleware/ocep_11.1/utils/load-generatorコマンド・プロンプトで、次を入力して、[Enter]を押してデプロイされたプロジェクトへのイベント・データの送信を開始します。StockData.propロード・ジェネレータがイベント・データの送信を開始すると、IDEはデバッグ・パースペクティブに切り替えて(IDEをそのように設定している場合)、リスナー・クラスで設定するブレークポイントで実行を一時停止します。実行がブレークポイントで一時停止している場合、「変数」ビューを参照して、リスナーが受信したイベントの内容を調査します。各イベントのプロパティをクリックして、CSVファイルからそれぞれに割り当てられた値を参照できます。「再開」ボタンを繰り返しクリックして、イベントからイベントに実行を進めて、それぞれの値を確認します。「コンソール」ウィンドウで、リスナー・コードが受信するイベントから銘柄記号および量を出力していることを確認します。Processingサーバーを選択して、サーバーの停止ボタンをクリックします。ロード・ジェネレータのコマンド・プロンプト・ウィンドウで、[CTRL]+[C]を押してロード・ジェネレータを停止します。Processingアプリケーションの作成およびテストが完了しました。CQLコードを追加してアプリケーションを少し詳細に検討します。CQLプロセッサの追加この手順では、特定の基準に基づいてイベントをフィルタ処理するプロセッサを追加します。CQL)コードを追加するステージです。Processingを使用して作成するイベント指向アプリケーションの実際のほとんどの機能を表します。CQLを使用すると、関心があるイベントのみのアプリケーションのロジックに集中して、イベントが到着する場合に複雑なロジックを実行できます。CQLの表示を理解しやすくなります。CQLは基本的にSQLと類似しています。同じキーワードおよび構文ルールを使用しますが、ストリーミング・データの一意の側面をサポートするために機能が追加されています。CQLを最大限に活用するのに非常に役立ちます。Processingイベント)はEPNが順番に受信するデータのストリームであることに注意してください。CQLの比較を続行すると、イベントはある意味でデータベース内の1行に相当すると言えます。重要な違いは、イベントではあるイベントは時間に関して常に別のイベントの前後であり、ストリームはほぼ無制限で常に変化することです。リレーショナル・データベースでは、データが比較的に静的である場合に行は有限集合であると言えます。リレーショナル・データベースでは、問合せによるデータの取得を待機します。イベント・データのストリームでは、到着時に調査する問合せの場合にデータは常にEPNに移動します。連続的な時系列のストリーミング・データを最大限に活用するため、CQLには次の機能があります。イベントを問い合せる特定の期間または範囲を指定します。これは5秒分の各イベントなどの可能性があります。問合せ対象に対して「行」と呼ばれる特定の数のイベントを指定します。これは、一連の10個のイベントである可能性があります。slideキーワードを使用して問合せをストリームに対して実行する頻度を指定します。問合せは次の5秒のイベントに5秒ごとに「スライド」できます。イベントの特定の特性に基づいて着信ストリームを複数のストリームに分割(パーティション化)します。問合せを使用して着信取引イベントの指定された銘柄記号ごとに新しいストリームを作成できます。CQLは、ビューおよび結合などの既知と思われるSQLの一般的な側面をサポートします。ストリーミング・イベント・データおよびリレーショナル・データベース表またはキャッシュのデータを含む結合を実行するCQLコードを書き込むことができます。CQLは、空間データ固有の計算およびJDBCデータ・ソースの問合せ用にJavaクラス内の機能を組み込む問合せのサポートを提供する付属のカートリッジを使用して、カートリッジを介して拡張できます。プロセッサおよびCQLを理解するため、ここで追加するコードを単純なままにします。AdapterOutputChannelからフィードされる特定のイベントを取得する問合せを追加します。問合せは、4000より大きい量の取引のみを取得するよう設計されています。問合せの結果のイベントはリスナーに渡されます。CQLコードの表示内容は次のとおりです。]]></query>「取引量が4000株を超えるAdapterOutputChannelからの各イベントに対して、記号および量の値を取得する」のように、この問合せを言い換えることができます。SQLを使用したことがある場合は、select、fromおよびwhere文を理解できます。now演算子は基本的に即時の期間を表します。各イベントを含みます。5]がある場合があります。(特定の取引が相互に5秒以内に発生したことを確認する場合に役立つことがあります。)この問合せの出力は、取引量が4000を超えるすべてのイベントを含むリレーション(シーケンスではなくセット)です。期間が[now]であるため、セットは常に1つのメンバーのみを持ちます。大きい範囲のリレーションは、セットに複数のメンバーがある場合があります。GetHighVolumeプロセッサおよび問合せの追加IDEのEPNエディタで、ダイアグラムの空の領域を右クリックして、「新規」>「プロセッサ」をクリックします。「新規プロセッサ」ダイアログの「プロセッサID」ボックスで、GetHighVolumeProcessorを入力します。「既存の構成ファイルの使用」オプションを選択します。各プロセッサの異なる構成ファイルを作成できることに注意してください。異なるユーザーがそれぞれ操作する場合に役立つことがあります。ドロップダウンで、config.xmlを選択したままにして、「OK」をクリックします。EPNエディタで、「GetHighVolumeProcessor」アイコンが作成されていることを確認します。「AdapterOutputChannel」アイコンから「ListenerBean」アイコンへのコネクタを右クリックして、「削除」をクリックします。「AdapterOutputChannel」アイコンをクリックして、「GetHighVolumeProcessor」アイコンにドラッグします。この接続の作成により、プロセッサはチャネルを認識します。チャネルをプロセッサに接続した後、CQLコードのID値でチャネルを参照できます。「GetHighVolumeProcessor」アイコンをダブルクリックして、config.xmlファイルの構成コードを開きます。config.xmlファイルで、問合せ要素を次の問合せXMLに置き換えます。]]></query>コード・ウィンドウは、以下のようになります。図tradereport_cqlcode.pngの説明EPNエディタで、ダイアグラムの空の領域を右クリックして、「新規」>「チャネル」をクリックします。新しいチャネルのアイコンを右クリックして、「名前の変更」をクリックします。ProcessorOutputChannelを入力して、[Enter]を押してチャネルの名前を変更します。「GetHighVolumeProcessor」アイコンをクリックし、新しいチャネル・アイコンにドラッグしてプロセッサおよびチャネルを接続します。「ProcessorOutputChannel」アイコンをクリックして、「ListenerBean」アイコンにドラッグしてチャネルをリスナーに接続します。順番に左から右にアイコンが連続して表示されるように、「EPNのレイアウト」ボタンをクリックしてダイアグラムを整理します。「ProcessorOutputChannel」アイコンをダブルクリックして、アセンブリXMLファイルのチャネルの構成を開きます。TradeReport.context.xmlで、デフォルトのチャネル構成を次のXMLに置き換えます。TradeEventがこのチャネルを通過するイベント・タイプであると指定していることに注意してください。/></wlevs:channel>プロジェクトのすべてのファイルを保存します。この時点で、再度アプリケーションをデバッグする準備が整いました。プロジェクトのデバッグこの項では、CQLコードで意図する結果を生成していることを確認するために再度デバッグします。IDEで、以前の手順で作成したTradeListener.javaファイルを開きます。プロジェクト・エクスプローラで、「TradeReport」>「src」>「com.oracle.cep.example.tradereport」を展開して、ファイルを表示できます。volumeProp);の行にブレークポイントがあることを確認します。正常にデバッグする前に、プロジェクトを再作成する必要がある場合があります。v11.1を選択します。サーバーを選択したままにして、「サーバー」ビューの右上の角にあるデバッグ・モードでサーバーの起動ボタンをクリックします。サーバーが起動し、IDEがプロジェクトをコンパイルし、アプリケーションとしてTradeReportプロジェクトを実行中のサーバーにデプロイする場合に多少の待機時間が必要になる場合があります。この実行中に、「コンソール」ビューは、サーバーの起動の進行状況に関連するステータス・メッセージを表示します。「コンソール」ビューの出力が<サーバーの起動>で終了する場合、サーバーはデバッグ・モードで実行されています。「サーバー」ビューで、プロジェクトをサーバーに再パブリッシュする必要がないことを確認します。TradeReportエントリが(再パブリッシュ)を示す場合、TradeReportエントリを右クリックして、「強制パブリッシュ」をクリックします。正常にデプロイされた後、エントリは(同期化)を示します。Processingとともにインストールされたload-generatorディレクトリにディレクトリを変更します。デフォルトでは、次のパスになります。ORACLE_HOME/Middleware/ocep_v11.1/utils/load-generatorコマンド・プロンプトで、次を入力して、[Enter]を押してデプロイされたプロジェクトへのイベント・データの送信を開始します。StockData.propロード・ジェネレータがイベント・データの送信を開始すると、IDEはデバッグ・パースペクティブに切り替えて(IDEをそのように設定している場合)、リスナー・クラスで設定するブレークポイントで実行を一時停止します。実行がブレークポイントで一時停止している場合、「変数」ビューを参照して、リスナーが受信したイベントの内容を調査します。各イベントのプロパティをクリックして、CSVファイルからそれぞれに割り当てられた値を参照できます。イベントに2つの値(記号および量)が含まれていることに注意してください。そのため、問合せはプロセッサを通過するイベントから2つの値のみを選択しています。「再開」ボタンを繰り返しクリックして、イベントからイベントに実行を進めて、それぞれの値を確認します。「コンソール」ウィンドウで、リスナー・コードが受信するイベントから銘柄記号および量を出力していることを確認します。問合せを正しくコード化した場合、すべての量の値は4000より大きくなります。Processingサーバーを選択して、サーバーの停止ボタンをクリックします。ロード・ジェネレータのコマンド・プロンプト・ウィンドウで、[CTRL]+[C]を押してロード・ジェネレータを停止します。これで、このアプリケーションを終了します。単純なアプリケーションのウォークスルー」を参照してください。単純なアプリケーションのウォークスルーこの項では、8.1項「単純なアプリケーションのウォークスルーの概要」から開始される単純なアプリケーションのウォークスルーを要約します。Processingアプリケーションを作成します。イベント処理ネットワークをアセンブルしてイベントを受信し、特定の基準を満たすイベントをレポートしました。Processingアプリケーションの作成の概要」を参照してください。Processingアプリケーションの開発の最も基本的な側面を説明しました。次の概念が含まれます。Processingアプリケーションの作成を容易にするよう設計されたIDE機能。Eclipseの概要」を参照してください。イベント処理ネットワーク(EPN)としてのアプリケーションの作成。Processingアプリケーションの仕組み」を参照してください。イベントをモデル化するイベント・タイプの設計。Processingイベント・タイプの概要」を参照してください。アダプタを使用した外部コンポーネントとのやり取りの管理。Processingには、アダプタが含まれます。独自のアダプタを作成することもできます。詳細は、次の項を参照してください。第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」イベントを送受信できるJavaクラスの実装。イベント・シンクおよびイベント・ソースの書込みの詳細は、第16章「ソースおよびシンクでのイベントの処理」を参照してください。イベント処理ネットワークを通過する場合のイベントを処理するモデルとしてのイベント・ストリームおよびリレーション。ストリームおよびリレーションの概要は、1.3項「イベント、ストリームおよびリレーションの概要」を参照してください。CQL)を使用したイベントの検出およびフィルタ処理。CQLでのイベント・ストリームの問合せ」を参照してください。reserved.法律上の。