この付録の内容は次のとおりです。
ヘッダーの操作と伝播は、重要なビジネス統合メッセージング要件です。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に、Web Services Addressing (WS-Addressing)の正規化メッセージに対して事前に決定されているプロパティを示します。受信SOAPリクエストのWS-Addressingヘッダーは、正規化メッセージ・プロパティを使用してOracle SOA Suite内に伝播されます。ただし、アウトバウンドSOAPメッセージでは、これらの正規化メッセージ・プロパティを使用したWS-Addressingヘッダーのオーバーライドはサポートされていません。
表E-1 Oracle Web Services Addressingのプロパティ
|
メッセージ・ヘッダー内で正規化メッセージ・プロパティを設定する手順は、次のとおりです。
選択したアクティビティのダイアログ内で、「プロパティ」タブをクリックします。
BPEL 2.0プロジェクトの場合は、次の作業を実行します。
「追加」アイコンをクリックします。
「名前」リストから、プロパティを選択します。図E-1に詳細を示します。
プロパティの値を選択します。
選択 | 実行する手順 |
---|---|
式 |
|
変数 |
|
定義されたプロパティが表示されます。
BPEL 1.1プロジェクトの場合は、次の作業を実行します。
下にスクロールしてプロパティを選択します。
「値」列で、ダブルクリックして省略記号を表示します。
省略記号をクリックします。
「アダプタ・プロパティ値」ダイアログが表示されます。
値として変数名を入力し、「OK」をクリックします。
「タイプ」列があるアクティビティ(たとえば、invokeアクティビティ)の場合は、プロパティの行をクリックします。
表示されるリストから、メッセージの方向として「入力」または「出力」を選択します。
「適用」をクリックし、「OK」をクリックします。
Oracle BPEL Process Managerはbpelx
拡張を使用して、メッセージ交換処理で、正規化されたメッセージのプロパティを操作します。構文は、BPELプロジェクトでBPELバージョン1.1と2.0のどちらがサポートされているかによって異なります。
次の例は、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
に値をコピーします。
次の例は、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>