オーケストレーションでは、プロパティ スキーマを使用して 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 言語」を参照してください。