E メッセージ・ヘッダーを介した正規化メッセージ・プロパティの伝播
この付録の内容は次のとおりです。
E.1 正規化されたメッセージの概要
ヘッダーの操作と伝播は、重要なビジネス統合メッセージング要件です。Oracle BPEL Process Manager、Oracle Mediator、Oracle JCAアダプタ、RESTアダプタ、Oracle B2Bなどのコンポーネントは、顧客の統合ニーズを解決するためにヘッダー・サポートに大きく依存しています。たとえば、メッセージ・ヘッダーを介してファイル名を伝播することで、そのファイル名をソース・ディレクトリからターゲット・ディレクトリに保存できます。Oracle BPEL Process ManagerとOracle Mediatorでは、様々なユーザー・インタフェース・サポート・レベルでヘッダーにアクセスし、操作して設定できます。
正規化されたメッセージは、プロパティとペイロードという2つの部分のみを持つように簡素化されています。
通常、プロパティはスカラー型の名前-値のペアです。既存の複雑なヘッダーをプロパティに合せるために、プロパティはスカラー型にフラット化されています。
複雑なプロパティは事前に決定されているため、設計時にヘッダーを操作する際のユーザー操作は合理化されています。メディエータ・エディタまたはOracle BPELデザイナでは、なんらかの予約済キーワードを使用してヘッダーを操作できます。
ただし、この方法はユーザー入力に基づいて動的に生成されるプロパティに対処していません。選択内容に基づいてヘッダーが定義されます。これらの定義は事前に決定されていないため、事前決定済のプロパティ定義のリストでは考慮できません。動的プロパティが定義される前に、動的プロパティのヘッダー操作を設計することはできません。この制限に対応するには、必要なすべてのサービス(コンポジット・エントリ・ポイント)と参照を生成する必要があります。この制約は、動的プロパティを生成することが想定されるサービスに適用されます。動的プロパティが生成された後、コンポジットごとに格納される必要があります。その後にのみ、メディエータ・エディタまたはOracle BPELデザイナで動的プロパティを操作できます。
JCAアダプタとOracle B2Bの正規化メッセージ・プロパティについては、『テクノロジ・アダプタの理解』と『Oracle B2Bの使用』を参照してください。
E.1.1 Oracle Web Services Addressingのプロパティ
表E-1に、Web Services Addressing (WS-Addressing)の正規化メッセージに対して事前に決定されているプロパティを示します。受信SOAPリクエストのWS-Addressingヘッダーは、正規化メッセージ・プロパティを使用してOracle SOA Suite内に伝播されます。ただし、アウトバウンドSOAPメッセージでは、これらの正規化メッセージ・プロパティを使用したWS-Addressingヘッダーのオーバーライドはサポートされていません。
表E-1 Oracle Web Services Addressingのプロパティ
プロパティ名 | 伝播可能(はい/いいえ) | 方向(インバウンド/アウトバウンド) | データ型 | 有効な値の範囲 | 説明 |
---|---|---|---|---|---|
|
いいえ |
インバウンド |
文字列 |
URI形式 |
このプロパティは、メッセージの識別子と、そのメッセージに対する応答の送信先であるエンドポイントをエンドポイント参照として指定します。 |
|
いいえ |
インバウンド |
文字列 |
URI形式 |
このオプションの(繰返し)要素情報アイテムは、1つの抽象リレーションシップ・プロパティ値を |
|
いいえ |
インバウンド |
文字列 |
URI形式 |
非同期で通信する2つのコンポーネント間の規約を表します。 |
|
いいえ |
インバウンド |
QName |
任意のQName |
この値は、サービスのコールバックの |
|
いいえ |
インバウンド |
QName |
任意のQName |
この値は、サービスのコールバックのサービスを構成するためにWebサービスに渡されます。WS-Addressingコールバックのエンドポイント参照の |
|
いいえ |
インバウンド |
文字列 |
URI形式 |
この必須要素(コンテンツが |
|
いいえ |
インバウンド |
文字列 |
URI形式 |
このオプション要素(コンテンツが |
E.1.2 メッセージ・ヘッダー内で正規化メッセージ・プロパティを設定する方法
メッセージ・ヘッダー内で正規化メッセージ・プロパティを設定するには:
-
選択したアクティビティのダイアログ内で、「プロパティ」タブをクリックします。
-
BPEL 2.0プロジェクトの場合は、次の作業を実行します。
-
「追加」アイコンをクリックします。
-
「名前」リストから、プロパティを選択します。図E-1に詳細を示します。
-
プロパティの値を選択します。
選択 実行するステップ 式
-
「検索」をクリックして「XPath式ビルダー」ダイアログを起動します。
-
XPath式を作成して、「OK」をクリックします。
-
「OK」をクリックします。
変数
-
「検索」をクリックして「変数XPathビルダー」ダイアログを起動します。
-
変数を選択して、「OK」をクリックします。
-
「OK」をクリックします。
-
定義されたプロパティが表示されます。
-
-
BPEL 1.1プロジェクトの場合は、次の作業を実行します。
-
下にスクロールしてプロパティを選択します。
-
「値」列で、ダブルクリックして省略記号を表示します。
-
省略記号をクリックします。
「アダプタ・プロパティ値」ダイアログが表示されます。
-
値として変数名を入力し、「OK」をクリックします。
-
「タイプ」列があるアクティビティ(たとえば、invokeアクティビティ)の場合は、プロパティの行をクリックします。
-
表示されるリストから、メッセージの方向として「入力」または「出力」を選択します。
-
「適用」をクリックし、「OK」をクリックします。
-
E.2 bpelx拡張による正規化されたメッセージのプロパティの操作
Oracle BPEL Process Managerはbpelx
拡張を使用して、メッセージ交換処理で、正規化されたメッセージのプロパティを操作します。構文は、BPELプロジェクトでBPELバージョン1.1と2.0のどちらがサポートされているかによって異なります。
E.2.1 BPEL 2.0のbpelx拡張構文
次の例は、BPEL 2.0におけるbpelx
拡張構文を示しています。
<invoke ...> <bpelx:fromProperties>? <bpelx:fromProperty name="NCName" .../>+ </bpelx:fromProperties> <bpelx:toProperties>? <bpelx:toProperty name="NCName" .../>+ </bpelx:toProperties> </invoke> <receive ...> <bpelx:fromProperties>? <bpelx:fromProperty name="NCName" .../>+ </bpelx:toProperties> </receive> <onEvent ...> <bpelx:fromProperties>? <bpelx:fromProperty name="NCName" .../>+ </bpelx:fromProperties> </onEvent> <reply...> <bpelx:toProperties>? <bpelx:toProperty name="NCName" .../>+ </bpelx:toProperties> </reply> <reply ...> <bpelx:toProperties> <bpelx:toProperty name="NCName" .../> </bpelx:toProperties> </reply>
次の詳細に注意してください。
-
toProperty
はfrom-spec
です。from-spec
から、指定した名前のプロパティに値をコピーします。 -
fromProperty
はto-spec
です。プロパティからto-spec
に値をコピーします。
E.2.2 BPEL 1.1のbpelx拡張構文
次の例は、BPEL 1.1におけるbpelx
拡張構文を示しています。
<invoke ...> <bpelx:inputProperty name="NCName" expression="string" variable="NCName" part="NCName" query="string"/>* <bpelx:outputProperty name="NCName" expression="string" variable="NCName" part="NCName" query="string"/>* </invoke> <receive ...> <bpelx:property name="NCName" expression="string" variable="NCName" part="NCName" query="string"/>* </receive> <onMessage...> <bpelx:property name="NCName" expression="string" variable="NCName" part="NCName" query="string"/>* </onMessage> <reply ...> <bpelx:property name="NCName" expression="string" variable="NCName" part="NCName" query="string"/>* </reply>