BizTalk オーケストレーションを動的に呼び出す方法
-
09-06-2019 - |
質問
オーケストレーション名を知って BizTalk オーケストレーションを動的に呼び出すにはどうすればよいですか?
呼び出しオーケストレーション シェイプは、設計時にオーケストレーションの名前とパラメータを知っている必要があります。「call」XLangキーワードを使用しようとしましたが、式の形状と同様にデザインタイムとしてオーケストレーション名も必要でした。次のように書くことができます。
call BizTalkApplication1.Orchestration1(param1,param2);
受信メッセージまたは SSO 構成ストアから呼び出し元のオーケストレーション名を指定する何らかの方法を探しています。
編集:BizTalk 2006 R1 について考えています (ESB ガイダンスは R2 用であり、問題をどのように解決できるかわかりませんでした)
解決
私が過去に同様のことを達成した方法は、オーケストレーションで直接バインディング ポートを使用し、MsgBox に面倒な作業を行わせることでした。基本的には次のようになります。
- 呼び出し可能なオーケストレーションが、アクティブ化された受信シェイプに接続された直接バインド ポートを使用するようにします。
- カスタムのコンテキストベースのプロパティを使用してアクティブ化する受信シェイプにフィルター式を設定し、それをオーケストレーションを一意に識別する値 (オーケストレーション名など) に設定します。
- 呼び出し元のオーケストレーションで、新しいオーケストレーションを起動するために使用するメッセージを作成します。そのメッセージで、カスタム コンテキスト プロパティを、起動する特定のオーケストレーションで使用されるフィルターに一致する値に設定します。
- 直接バインドされた送信ポートを介してメッセージを送信すると、メッセージは MsgBox に直接送信され、BizTalk の Pub/Sub メカニズムが残りを処理します。
ステップ 4 で注意すべき点が 1 つあります。これを正しく機能させるには、カスタム コンテキスト プロパティを含む新しい相関セット タイプを作成し、直接バインドされた送信ポートが送信時の相関セットに「従う」ことを確認する必要があります。そうしないと、カスタム プロパティは msg コンテキストに書き込まれるだけ (昇格されず) になり、ルーティングは失敗します。
お役に立てれば!
他のヒント
ESB ガイダンス (www.codeplex.com/esb) を参照してください。このパッケージは、探している機能を提供します。
所属していません StackOverflow