- Oracle SOAスイートでのSOAアプリケーションの開発
- サービス・コンポーネント間の共有機能
- ビジネス・イベントおよびイベント配信ネットワークの使用
- BPELプロセス・サービス・コンポーネントからのビジネス・イベントのサブスクライブまたは公開
- ビジネス・イベントをサブスクライブする方法
ビジネス・イベントをサブスクライブする方法
ビジネス・イベントをサブスクライブするには:
- 「コンポーネント」ウィンドウからSOAコンポジット・エディタに、BPELプロセス・サービス・コンポーネントをドラッグします。
- 「名前」フィールドに、名前を入力します。他のデフォルトの選択は変更せずに、「OK」をクリックします。
BPELプロセス・サービス・コンポーネントが作成されます。
- BPELプロセス・サービス・コンポーネントをダブルクリックします。Oracle BPELデザイナが開きます。または、BPELプロセス・サービス・コンポーネントを右クリックして「編集」をクリックすることもできます。
- 「コンポーネント」ウィンドウからSOAコンポジット・エディタのreceiveInputアクティビティの下に、receiveアクティビティをドラッグします。
ノート:
pickアクティビティのonMessageブランチは、EDNからイベントを受信するように設定することもできます。onMessageブランチの詳細は、「pickアクティビティのプロセスの待機または継続の選択」を参照してください。
- receiveアクティビティをダブルクリックします。「Receive」ダイアログが開きます。または、receiveアクティビティを右クリックして「編集」をクリックすることもできます。
- 「名前」フィールドに、名前を入力します。
- 「相互作用タイプ」リストから「イベント」を選択します。「Receive」ダイアログのレイアウトが変更されます。
- 「イベント」フィールドの右側にある「イベントの参照」アイコンをクリックします。図43-5に示すように、「サブスクライブ済イベント」ダイアログが表示されます。
- 「追加」アイコンをクリックして、イベントを選択します。
図43-6に示すように、「イベント・チューザ」ダイアログが表示されます。
- 作成したイベントを選択し、「OK」をクリックします。
「サブスクライブ済イベント」ダイアログが再び表示されます。
- イベントと一貫性がある配信のレベルを選択します。表43-7に詳細を示します。
表43-7 「サブスクライブ済イベント」ダイアログのイベント表
要素 説明 一貫性
「一貫性」列内をクリックし、イベントに対する配信一貫性のレベルを選択します。
-
唯一
イベントは、それ自体のグローバル(つまりJTA)トランザクションのサブスクライバに配信されます。イベント処理が完了すると、そのトランザクション内でサブスクライバが行ったあらゆる変更がコミットされます。サブスクライバが失敗すると、トランザクションはロールバックされます。再試行可能例外で失敗したイベントは、リカバリのために「エラー・ホスピタル」に移動される(手動再試行の対象となる)前に、構成された回数だけ自動的に再試行されます。再試行不能な例外で失敗したイベントは、自動再試行せずに「エラー・ホスピタル」に移動され、リカバリできません。
-
保証付き
ローカルJMSトランザクションでサブスクライバにイベントを配信します。サブスクライバは、処理用にサブスクライバ自体のローカル・トランザクションの作成を選択できますが、他のイベント処理とは個別にコミットされます。「保証付き」一貫性レベルは、ローカル・トランザクションがグローバル・トランザクションのかわりに使用されるため、「唯一」よりも低品質のサービス・オプションです。再試行可能な例外で失敗したイベントは、リカバリ可能な「エラー・ホスピタル」に移動される(手動再試行の対象となる)前に、構成された回数が自動的に再試行されます。再試行不能な例外で失敗したイベントは、自動再試行せずに「エラー・ホスピタル」に移動され、リカバリできません。
「エラー・ホスピタル」の詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のエラー・ホスピタルでのフォルトからのリカバリに関する項を参照してください。
恒久
恒久サブスクリプションでは、パブリッシャ、サブスクライバおよびフレームワークのライフ・サイクルの相違によるメッセージ・ロスを防ぎます。オプションを選択します:
-
はい: サブスクライバが実行中でない場合、イベントが保持されます。これはデフォルト選択です。
-
いいえ: サブスクライバが実行中でない場合、イベントが削除されます。
パブリッシャとして実行
セキュリティ公開オプションを選択します。
-
はい: サブスクライバにイベント・パブリッシャのセキュリティIDがあります。これはデフォルト選択です。
-
いいえ: サブスクライバにイベント・パブリッシャのセキュリティIDがありません。
フィルタ
イベントをフィルタリングするには、選択したイベントの「フィルタ」列をダブルクリックするか、またはイベントを選択して、表の上の「フィルタ」アイコン(最初のアイコン)をクリックします。これにより「式ビルダー」ダイアログが表示されます。このダイアログで、XPathフィルタ式を指定できます。フィルタ式では、サービスの起動前にメッセージのコンテンツ(ペイロードまたはヘッダー)が分析されるように指定します。たとえば、メッセージに顧客IDが含まれている場合のみサービスを起動することを指定するフィルタ式を適用できます。
式のロジックが満たされると、イベントの配信が可能になります。
フィルタの詳細は、「メッセージをフィルタリングする式の指定方法」を参照してください。
-
- 「OK」をクリックして、「サブスクライブ済イベント」ダイアログを閉じます。
「Receive」ダイアログが再び表示されます。
ノート:
このreceiveアクティビティがBPELプロセス・サービス・コンポーネント・インスタンスを起動する起動receiveアクティビティの場合は、必要に応じて「インスタンスの作成」チェック・ボックスを選択できます。この操作によって、すべての起動に対して新しいBPELプロセス・サービス・コンポーネント・インスタンスを作成できます。
この receive アクティビティが中間プロセスの receive アクティビティで、BPELインスタンスがすでに起動されている場合、この receive アクティビティは、そのBPELインスタンスの実行を続行するために、別のイベントを待機します。
- 「OK」をクリックします。
図43-7に、イベント・サブスクリプション用に構成されたBPELプロセス・サービス・コンポーネントを示します。