0

BizTalk オーケストレーションで並列図形を使用しています。シェイプには 4 つの並列ブランチがあり、各ブランチでスコープ シェイプ (トランザクション タイプ = なし) を使用しており、その後に catch ブロックがあり、実行ロジックはスコープ シェイプに配置されています。

この並列 Shape は、対応する catch ブロックを含むオーケストレーションのスコープ (Transaction Type = None ) にも含まれています。

ブランチの 1 つで実行が失敗した場合、想定される動作は何ですか? 私によれば、1 つのブランチの実行が失敗した場合、他のブランチの実行が行われているはずです。

しかし、私のオーケストレーションでは、1 つのブランチの実行が失敗すると、他のブランチの実行も開始されません。前の分岐コードが正常に実行された後に、他の分岐開始が実行されるようです。

この動作の原因として考えられるものを教えてください。

4

2 に答える 2

1

MSDN によると、Parallel シェイプではすべてのブランチが独立して実行されます。MSDN: http://msdn.microsoft.com/en-us/library/ee253584(v=bts.10).aspxを参照

ただし、これはビジネス プロセスの観点からのものであり、技術的な観点からのものではありません。ブランチの 1 つが失敗した場合、他のブランチが実行されない可能性は十分にあります。私の知る限り、実行順序を制御することはできません (ただし、その順序についてはわかりません)。

詳細については、次の小さなブログ投稿を参照してください: http://blogs.msdn.com/b/pkelcey/archive/2006/08/22/705171.aspx

ここでは、特定の状況に応じて、アグリゲーター パターンを使用することをお勧めします。状況を完全に制御できるようになります。

于 2014-11-13T09:20:02.033 に答える
0

基本的に、ブランチの 1 つが失敗すると、すべてのブランチが失敗します。覚えておくべき重要なポイントは次のとおりです。

All branches come together at the end of the Parallel Actions shape, and processing does not continue until all have completed.

そのため、then 分岐の 1 つが失敗した場合、収束することはありません。1 つのブランチで例外がスローされると、catch ブロックがそれをキャッチし、他のすべてのブランチは着信メッセージの処理を停止します。並列ブランチは、続行できるようにするために複数のメッセージが到着するのを待つ必要がある状況のメッセージ相関で主に使用されることを理解しています。ブランチの実行順序は、各ブランチが期待する受信メッセージの順序によって決まります。

于 2014-12-25T07:15:19.467 に答える