2011-10-21 5 views
0

私はエンベロープメッセージ(EM)を持っていますが、このEMにはコンテキスト上でプロモートされる要素(ルーティング用)と、さらに使用するための実際のスキーマインスタンス(他のオーケストレーションはそのPayloadインスタンスにサブスクライブしています)。エンベロープスキーマからMessageBoxに任意の要素を公開する方法

これは、要求メッセージを受信し、応答メッセージ(要求のいくつかの要素を持ち、新たに生成された一意のトランザクションIDを持つ)と障害メッセージ(該当する場合)を返す汎用サービス(WCF、要求応答)です。

EMのいくつかのコンテキストプロパティを使用して、ペイロードをMessageBox(直接バインディング)に公開する必要があります。

これはどのようにして効果的に行うことができますか?

答えて

0

受信パイプライン内でxml逆アセンブラコンポーネントを使用してエンベロープスキーマを処理する方法をご存知ですか?これを試したことがあるかどうか、あるいはこれがあなたが直面している課題でさえあれば、あなたの質問からは分かりません。

そして、ここで読んでいない場合は、次のhttp://msdn.microsoft.com/en-us/library/aa546772(v=BTS.20).aspx

0

は、私はちょうど確認することができ

  1. WCFクライアントを使用すると、1つのまたは複数のペイロードメッセージにエンベロープスキーマをデバッチしたい封筒スキーマ
  2. に一致するメッセージを送信ペイロード処理オーケストレーションのために内部に含まれています。
  3. ?成功/失敗応答(つまり、応答はペイロードメッセージの完了に依存している)でWCFクライアントに返答するまで、すべてのペイロードメッセージが処理されるまで待つ必要がありますか?

ポイント3が必要ない場合、WCFオーケストレーションは、ペイロードに何が起こるか心配することなく、「はい」メッセージをWCFクライアントに送り返すことができます。あなたはポイント3に問題がないといけない場合

あなたのWCFの標準XMLReceive受信場所がある限り、それはエンベロープスキーマとしてそれを認識して自動的にメッセージをデバッチすることができるはずです、つまりは、しかし

<b:schemaInfo is_envelope="yes" xmlns:b="somexmlns"/> 
<b:recordInfo body_xpath="xpathtoroot"/> 

が含まれています私が見ることができるのは、WCF要求応答を使用しているため、ペイロード処理に応じてクライアントが同期応答を返すことになるということです。ペイロード処理の進行状況と結果をWCF orchに関連付ける必要があるため、標準のエンベロープデバッチ処理を使用してこれを行うことは困難です。代わりに、外側(エンベロープ)スキーマを非エンベロープにしておき、 WCF orchでカスタム受信パイプラインを使用してメッセージを分割し、それぞれをループしてペイロード処理オーケストレーションに呼び出します。

http://mstecharchitect.blogspot.com/2008/12/debatching-biztalk-xml-messages.html

関連する問題