Oracle Fusion Middleware Oracle SOA Suiteアプリケーションの作成および実行のためのチュートリアル 11g リリース1(11.1.1) B56240-01 |
|
戻る |
次へ |
ビジネス・イベントは、ビジネス環境における状態変化の結果として送信されるメッセージ・データで構成されます。ビジネス・イベントがパブリッシュされると、他のサービス・コンポーネントはそのビジネス・イベントをサブスクライブできます。
この章では、Oracle Mediatorを使用してビジネス・イベントにサブスクライブする方法を説明します。 次のタスクを実行します。
NewOrderSubmitted
ビジネス・イベントをサブスクライブするOrderPendingEvent
メディエータ・サービス・コンポーネントを作成し、ルーティング・ルールを介して注文を処理するOrderProcessor
BPELプロセスを開始します。
この章の内容は次のとおりです。
第7.2項「タスク2: NewOrderSubmittedビジネス・イベントをサブスクライブするメディエータ・サービス・コンポーネントの作成」
第7.3項「タスク3: OrderProcessor BPELプロセスへのOrderPendingEventメディエータ・サービス・コンポーネントのルーティング」
NewOrderSubmitted
ビジネス・イベントを作成する手順は、次のとおりです。
「composite.xml」タブをクリックして、SOAコンポジット・エディタを表示します。
イベント定義の作成ウィザードを、次の方法のいずれかで起動します。
SOAコンポジット・エディタで、デザイナの上にある「イベント定義の作成」アイコンをクリックします。
「ファイル」メイン・メニューから、「新規作成」→「SOA層」→「サービス・コンポーネント」→「イベント定義」の順に選択します。
「イベント定義の作成」ダイアログが表示されます。
「イベント定義名」フィールドにOrderEO
と入力します。 Oracle JDeveloperによりNewOrderSubmitted
イベントがorderEO.edl
ファイルに保存されます。
「ネームスペース」フィールドのデフォルト設定はそのままにします。
「イベントの追加」アイコンをクリックしてイベントを追加します。
「イベントの追加」ダイアログが表示されます。
次の値を入力します。
要素 | 値 |
---|---|
要素 |
|
名前 | NewOrderSubmitted |
「OK」をクリックします。
「イベント定義の作成」ダイアログで、「OK」をクリックします。
NewOrderSubmitted
イベントがあるビジネス・イベント・エディタが表示されます。
「ファイル」メイン・メニューから「すべて保存」を選択して、作業内容を保存します。
「OrderEO.edl」タブの「X」をクリックして、定義ファイルを閉じます。
ビジネス・イベントはMDSにパブリッシュされ、SOAコンポジット・エディタに戻ります。
NewOrderSubmitted
ビジネス・イベントをサブスクライブしてOrderProcessor
BPELプロセスを開始する手順は、次のとおりです。
「メディエータ」サービス・コンポーネントを、SOAコンポジット・エディタにドラッグします。このサービス・コンポーネントを使用して、ビジネス・イベントをサブスクライブできます。
「テンプレート」リストから、「イベントのサブスクライブ」を選択します。
ウィンドウがリフレッシュされ、イベント・テーブルが表示されます。
「新規イベントのサブスクライブ」アイコンをクリックして、「イベント・チューザ」ダイアログを表示します。
「NewOrderSubmitted」イベントが選択されている状態で、「OK」をクリックします。
「メディエータの作成」ダイアログに戻ります。
「1つのみ」という項目は、独自のグローバルな(つまり、JTA)トランザクションでイベントがサブスクライバに配信されることを指定します。 イベント処理が完了すると、そのトランザクションのコンテキスト内でサブスクライバによって行われた変更はすべてコミットされます。サブスクライバが失敗すると、トランザクションはロールバックされます。失敗したイベントは、ホスピタル・キューに配信されるまで、設定された回数だけ再試行されます。
「$publisher」は、イベントにセキュリティ・ロールが必要であることを指定します。
「メディエータの作成」ダイアログで、「OK」をクリックします。
SOAコンポジット・エディタにOrderPendingEvent
メディエータが表示されます。左側のアイコンは、メディエータがイベント・サブスクリプションに対して構成されていることを示しています。
「ソース」をクリックします。
次のソース・コードには、メディエータ・サービス・コンポーネントのサブスクライブされたイベントの詳細があります。
<component name="OrderPendingEvent"> <implementation.mediator src="OrderPendingEvent.mplan"/> <business-events> <subscribe xmlns:sub1="http://schemas.oracle.com/events/edl/OrderEO" name="sub1:NewOrderSubmitted" consistency="oneAndOnlyOne" runAsRoles="$publisher"/> </business-events> </component>
OrderPendingEvent
メディエータ・サービス・コンポーネントからOrderProcessor
BPELプロセスへのルーティング・ルールを作成する手順は、次のとおりです。
「設計」タブに戻り、「OrderPendingEvent」からOrderProcessor 参照ハンドルにワイヤをドラッグします。
「OrderPendingEvent」タブをダブルクリックして「メディエータ」エディタにルールを表示します。
OrderPendingEvent
メディエータ・サービス・コンポーネントに使用されるトランスフォーメーションを変更し、OrderProcessor
BPELプロセスがNewOrderSubmitted
ビジネス・イベントから入力を受信するようにします。
「次を使用して変換」フィールドの隣のトランスフォーメーション・アイコンをクリックします。
「イベント・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、付随するフィールドでデフォルト名のNewOrderSubmitted_To_WarehouseRequest.xsl
を使用して、「OK」をクリックします。
データ・マッパーが表示されます。
「ソース: OrderEO.xsd」(左)側の「OrderID」をクリックし、「XSLTファイル: OrderProcessor.wsdl」(右)側の「ns1:WarehousreRequest」→「ns1:orderId」にドラッグします。 ネームスペース番号の値(例: ns1、ns2)は異なる場合があります。
データ・マッパー・ダイアログは、次のように表示されます。
「ファイル」メイン・メニューから「すべて保存」を選択して、作業内容を保存します。
「NewOrderSubmitted_To_WarehouseRequest.xsl」タブの「X」をクリックして、データ・マッパーを閉じます。
「OrderPendingEvent.mplan」タブに戻ると、「ルーティング・ルール」セクションでは、トランスフォーメーションが次のように更新されて表示されています。