次の方法で共有


オーケストレーションでの SOAP ヘッダーへのアクセス

定義された SOAP ヘッダーや未知の SOAP ヘッダーのオーケストレーションでは、SOAP ヘッダー コンテキスト プロパティにアクセスできます。 プロパティ スキーマとコンテキスト プロパティの詳細については、「 プロパティ スキーマ」を参照してください。

定義済みの SOAP ヘッダー コンテキスト プロパティ

オーケストレーションで定義された SOAP ヘッダー コンテキスト プロパティには、プロパティ スキーマが必要です。 プロパティ スキーマには、ターゲット名前空間 http://schemas.microsoft.com/BizTalk/2003/SOAPHeaderが必要です。 プロパティ スキーマ ベース プロパティは MessageContextPropertyBase に設定されている必要があります。 プロパティ スキーマ内の各ルート要素名は、定義済みの SOAP ヘッダーのルート要素名と一致する必要があります。 その後、プロパティ スキーマの名前空間とプロパティ名を使用して、コンテキスト プロパティの値にアクセスできます。 プロパティ スキーマの名前空間は、上記のターゲット名前空間とは異なります。 プロパティ スキーマの名前空間には任意の文字列を指定できますが、通常は既定でプロジェクトの名前になります。

次の例は、プロパティ スキーマ名前空間、 SOAPHeader、およびプロパティ名 OrigDest の SOAP ヘッダー コンテキスト プロパティへのアクセスを示しています。

stringVar = requestMessageInstance(SOAPHeader.OrigDest);  

定義済みの SOAP ヘッダーは、"in" または "out" ヘッダーとして扱われます。 ウィザードで要求メッセージと応答メッセージに同じ SOAP ヘッダーが定義されている場合、ウィザードは応答の受信値を自動的に返しません。 要求メッセージの SOAP ヘッダー コンテキスト プロパティを、応答メッセージの SOAP ヘッダー コンテキスト プロパティに明示的にコピーする必要があります。

受信メッセージの SOAP ヘッダー コンテキスト プロパティのコピー

受信メッセージの SOAP ヘッダー コンテキスト プロパティを、応答メッセージの同じ SOAP ヘッダー コンテキスト プロパティにコピーできます。

次の例は、SOAP ヘッダー コンテキスト プロパティのコピーを示しています。

ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);  

SOAP 応答の SOAP ヘッダーを作成するときは、必ず SOAP ヘッダーを正しく作成してください。 SOAP アダプターは、SOAP ヘッダー コンテキスト プロパティの内容を検証しません。 応答 SOAP ヘッダーの値が正しくない場合、SOAP アダプターは Web サービスのコンシューマーに応答メッセージを送信できません。

不明な SOAP ヘッダー コンテキスト プロパティ

不明な SOAP ヘッダー コンテキスト プロパティには、プロパティ スキーマは必要ありません。 このグローバル コンテキスト プロパティ SOAP.UnknownHeadersにアクセスできます。

次の例は、不明な SOAP ヘッダー コンテキスト プロパティ SOAP.UnknownHeaders にアクセスする方法を示しています。

stringVar = RequestMessageInstance(SOAP.UnknownHeaders);  

コンテキスト プロパティに含まれる値は、XML データを含む文字列です。 このデータにアクセスする最も簡単な方法は、 メッセージの割り当て または の図形で BizTalk 式エディターを使用し、 XmlDocument に文字列を読み込み、XPATH クエリを使用して特定のフィールドにアクセスすることです。 BizTalk 式エディターでの XML ドキュメントの作成の詳細については、「 XLANG-s 言語」を参照してください。

コンテキスト プロパティは、特定のメッセージに関連付けられます。 メッセージング エンジンは、要求メッセージから応答メッセージに既知の SOAP ヘッダーの値を自動的にマップしません。 Web サービスの応答メッセージを作成するときは、SOAP ヘッダー値を具体的に設定する必要があります。 次のコマンドは、SOAP ヘッダー コンテキスト プロパティを設定する最も簡単な方法です。

ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"  

これを実現するには、 XmlDocument を作成し、 XmlDocument の文字列値をコンテキスト プロパティに書き込みます。

SOAP の場合 。UnknownHeaders プロパティが null の場合、BIZTalk は SOAP 要求で受信した不明なヘッダーを SOAP 応答に自動的に返します。 SOAP の場合 。応答メッセージの UnknownHeaders コンテキスト プロパティが null でない場合、BizTalk はその値を SOAP 応答に返します。

こちらもご覧ください

発行済み Web サービスを使用した SOAP ヘッダー