プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c リリース1 (12.2.1.1.0)
E77338-02
目次へ移動
目次

前
前
次
次

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のプロパティ

プロパティ名 伝播可能(はい/いいえ) 方向(インバウンド/アウトバウンド) データ型 有効な値の範囲 説明

wsa.messageId

いいえ

インバウンド

文字列

URI形式

このプロパティは、メッセージの識別子と、そのメッセージに対する応答の送信先であるエンドポイントをエンドポイント参照として指定します。

wsa.relatesTo

いいえ

インバウンド

文字列

URI形式

このオプションの(繰返し)要素情報アイテムは、1つの抽象リレーションシップ・プロパティ値を(IRI, IRI)ペアの形式で提供します。この要素のコンテンツ(xs:anyURIタイプ)は、関連メッセージのメッセージIDを伝達します。

wsa.replyToAddress

いいえ

インバウンド

文字列

URI形式

非同期で通信する2つのコンポーネント間の規約を表します。

wsa.replyToPortType

いいえ

インバウンド

QName

任意のQName

この値は、サービスのコールバックのportTypeを構成するためにWebサービスに渡されます。WS-Addressingコールバックのエンドポイント参照のPortType要素に変換されます。

wsa.replyToService

いいえ

インバウンド

QName

任意のQName

この値は、サービスのコールバックのサービスを構成するためにWebサービスに渡されます。WS-Addressingコールバックのエンドポイント参照のServiceName要素に変換されます。

wsa.action

いいえ

インバウンド

文字列

URI形式

この必須要素(コンテンツがxs:anyURIタイプ)は、アクション・プロパティの値を伝達します。

wsa.to

いいえ

インバウンド

文字列

URI形式

このオプション要素(コンテンツがxs:anyURIタイプ)は、宛先プロパティの値を提供します。この要素が指定されない場合、宛先プロパティの値はhttp://www.w3.org/2005/08/addressing/anonymousになります。

E.1.2 メッセージ・ヘッダー内で正規化メッセージ・プロパティを設定する方法

メッセージ・ヘッダー内で正規化メッセージ・プロパティを設定する手順は、次のとおりです。

  1. 選択したアクティビティのダイアログ内で、「プロパティ」タブをクリックします。

  2. BPEL 2.0プロジェクトの場合は、次の作業を実行します。

    1. 「追加」アイコンをクリックします。

    2. 「名前」リストから、プロパティを選択します。図E-1に詳細を示します。

      図E-1 正規化されたメッセージ・ヘッダー・プロパティの「プロパティ」タブ

      図E-1の説明が続きます
      「図E-1 正規化されたメッセージ・ヘッダー・プロパティの「プロパティ」タブ」の説明
    3. プロパティの値を選択します。


      選択 実行する手順

      式

      1. 「検索」をクリックして「XPath式ビルダー」ダイアログを起動します。

      2. XPath式を作成して、「OK」をクリックします。

      3. 「OK」をクリックします。

      変数

      1. 「検索」をクリックして「変数XPathビルダー」ダイアログを起動します。

      2. 変数を選択して、「OK」をクリックします。

      3. 「OK」をクリックします。


    定義されたプロパティが表示されます。

  3. BPEL 1.1プロジェクトの場合は、次の作業を実行します。

    1. 下にスクロールしてプロパティを選択します。

    2. 「値」列で、ダブルクリックして省略記号を表示します。

    3. 省略記号をクリックします。

      「アダプタ・プロパティ値」ダイアログが表示されます。

    4. 値として変数名を入力し、「OK」をクリックします。

    5. 「タイプ」列があるアクティビティ(たとえば、invokeアクティビティ)の場合は、プロパティの行をクリックします。

    6. 表示されるリストから、メッセージの方向として「入力」または「出力」を選択します。

    7. 「適用」をクリックし、「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>