BizTalk Server中的并行形状

BizTalk Server中的并行形状,biztalk,biztalk-2010,biztalk-2013,biztalk-orchestrations,Biztalk,Biztalk 2010,Biztalk 2013,Biztalk Orchestrations,我正在BizTalk业务流程中使用并行形状。该形状中有四个并行分支,在每个分支中,我使用范围形状(事务类型=无)和后续catch块,执行逻辑放置在范围形状中 此并行形状还包含在业务流程中具有相应catch块的作用域(事务类型=None)中 现在,如果其中一个分支中的执行失败,那么假定的行为是什么?根据我的说法,如果一个分支的执行失败,另一个分支的执行应该已经发生 但在我的编排中,如果一个分支执行失败,另一个分支执行甚至不会启动。似乎其他分支在前一个分支代码成功执行后开始执行 请告诉我这种行为的可

我正在BizTalk业务流程中使用并行形状。该形状中有四个并行分支,在每个分支中,我使用范围形状(事务类型=无)和后续catch块,执行逻辑放置在范围形状中

此并行形状还包含在业务流程中具有相应catch块的作用域(事务类型=None)中

现在,如果其中一个分支中的执行失败,那么假定的行为是什么?根据我的说法,如果一个分支的执行失败,另一个分支的执行应该已经发生

但在我的编排中,如果一个分支执行失败,另一个分支执行甚至不会启动。似乎其他分支在前一个分支代码成功执行后开始执行


请告诉我这种行为的可能来源是什么?

根据MSDN,平行形状的所有分支都将独立运行。请参见MSDN:

然而,这是从业务流程的角度,而不是从技术角度。如果您的一个分支失败,那么其他分支很可能不会执行。据我所知,你对执行的顺序没有任何控制权(尽管不确定)

有关更多信息,请参阅此小博文:


根据您的具体情况,聚合器模式可能是一个好主意。它可以让您完全控制情况。

基本上,如果其中一个分支失败,那么所有分支都会失败。要记住的关键点是:

All branches come together at the end of the Parallel Actions shape, and processing does not continue until all have completed.
因此,如果其中一个分支失败,那么它们将永远不会收敛。如果在一个分支上抛出异常,catch块将捕获它,所有其他分支将停止处理任何传入消息。据我所知,并行分支主要用于消息关联,用于需要等待多条消息到达才能继续的情况。分支执行的顺序由每个分支预期收到的消息的顺序决定