次の方法で共有


オーケストレーションでの SOAP ヘッダーの使用

オーケストレーションでは、プロパティ スキーマを使用して SOAP ヘッダー コンテキストプロパティを定義します。 BizTalk エディターを使用して、SOAP ヘッダー コンテキストのプロパティを設定します。

プロパティ スキーマを使用した SOAP ヘッダー コンテキスト プロパティの定義

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

プロパティ スキーマの名前空間は、ターゲット スキーマ (http://schemas.microsoft.com/BizTalk/2003/SOAPHeader) の名前空間とは異なります。 名前空間には任意の文字列を指定できます。ただし、通常は既定でプロジェクトの名前になります。

次のコードは、プロパティ スキーマ名前空間が ORigDest のプロパティ名を持つ SOAPHeader である SOAP ヘッダー コンテキスト プロパティの割り当てを示しています。

requestMessageInstance(SOAPHeader.OrigDest) = stringVar;  

プロパティ スキーマとコンテキスト プロパティの詳細については、「 プロパティ スキーマ」を参照してください。

BizTalk エディターを使用して SOAP ヘッダー コンテキストプロパティを設定する

オーケストレーションの場合、SOAP ヘッダー コンテキストプロパティは XML データを含む文字列に設定されます。 これらの文字列は、メッセージの割り当て または 図形の中で、BizTalk 式エディターを使用して設定します。

次の例は、コンテキスト プロパティを設定する文字列を示しています。

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

BizTalk エディターを使用して SOAP ヘッダー ルート要素のインスタンスを作成する

SOAP ヘッダーを正しい文字列に設定するのは困難な場合があります。 BizTalk プロジェクトに Web 参照を追加すると、すべての複雑な Web メッセージ パーツがルート要素として Reference.xsd に追加されます。 Reference.xsd には、定義された各 SOAP ヘッダーのルート要素も含まれています。 SOAP ヘッダーを正しい文字列で設定するには、BizTalk エディターを使用して Reference.xsd の SOAP ヘッダー ルート要素のインスタンスを作成する必要があります。 生成されたインスタンス データを直接使用することも、インスタンス データを使用して実際のデータを格納することもできます。

BizTalk エディターを使用してインスタンス データを生成する方法の詳細については、「 インスタンス メッセージを生成する方法」を参照してください。

XmlDocument を作成してコンテキスト プロパティを設定する

XmlDocument を作成し、XmlDocument の文字列値をコンテキスト プロパティに書き込むことで、コンテキスト プロパティを設定できます。 XMLDocument 型の変数を宣言し、XML データを割り当てます。

XMLDocument 型の変数を宣言し、XML データを割り当てる例を次に示します。

xmlDoc.LoadXml("<?xml version=\"1.0\"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination>Home</Origination><Destination>Work</Destination></OrigDest>");  

次の例は、コンテキスト プロパティの設定を示しています。

RequestMessageInstance(SOAPHeader.OrigDest) = xmlDoc.OuterXml;  

BizTalk 式エディターの使用方法の詳細については、「 式の要件と制限事項」を参照してください。 .NET クラスの呼び出しの詳細については、「 ユーザー コードでのメッセージの構築」を参照してください。

SOAP リクエスト用のヘッダーを作成する

SOAP 要求の SOAP ヘッダーを作成するときは、SOAP ヘッダーが正しく作成されていることを確認する必要があります。 SOAP アダプターは、SOAP ヘッダー コンテキスト プロパティの内容を検証しません。

SOAP ヘッダーが正しくない場合、BizTalk は WEB サービスに SOAP 要求を送信できません。

BizTalk が Web サービスに返す SOAP 応答にも SOAP ヘッダーが含まれている場合があります。 これらの SOAP ヘッダーにアクセスできるのは、SOAP ヘッダーが定義されている場合のみです。

使用される Web サービスでは、定義済みの SOAP ヘッダーのみがサポートされます。

定義済みの SOAP ヘッダーの詳細については、「 SOAP ヘッダーの使用」を参照してください。 応答 SOAP ヘッダーは、要求 SOAP ヘッダーと同じ構文を使用してコンテキスト プロパティに設定されます。

次のコードは、応答 SOAP ヘッダーにアクセスする方法を示しています。

stringVar = ResponseMessageInstance(SOAPHeader.OrigDest);  

コンテキスト プロパティに含まれる値は、XML データを含む文字列です。 これらの文字列は、メッセージの割り当て または 図形で BizTalk 式エディターを使用して設定します。 XmlDocument に文字列を読み込み、XPath クエリを使用して特定のフィールドにアクセスします。

BizTalk 式エディターでの XML ドキュメントの作成の詳細については、「 XLANG-s 言語」を参照してください。

こちらもご覧ください

XLANG-s 言語
使用された Web サービスを含む SOAP ヘッダー