BizTalk业务流程是否从双向发送端口从XMLReceive管道接收多条消息?

BizTalk业务流程是否从双向发送端口从XMLReceive管道接收多条消息?,biztalk,biztalk-2016,biztalk-orchestrations,Biztalk,Biztalk 2016,Biztalk Orchestrations,我有一个带有双向发送端口的编排,用于从数据库检索一个或多个项目。我使用WCF-SQL适配器,并成功地将传入的结果降级到单独的StoredProcedureResultSet0消息中。但是,编排只处理一条消息并结束 接收业务流程是否有方法在结束前循环返回的消息 我现在收到的未处理消息的错误消息: 实例已完成,但未使用其所有消息。实例及其未使用的消息已挂起 我知道有些人已经开始使用配器中的管道进行去匹配。我认为最好是在尽可能接近源头的地方进行脱毛 想法?您必须有一个相关集,其中第一个接收形状初始化相

我有一个带有双向发送端口的编排,用于从数据库检索一个或多个项目。我使用WCF-SQL适配器,并成功地将传入的结果降级到单独的StoredProcedureResultSet0消息中。但是,编排只处理一条消息并结束

接收业务流程是否有方法在结束前循环返回的消息

我现在收到的未处理消息的错误消息:

实例已完成,但未使用其所有消息。实例及其未使用的消息已挂起

我知道有些人已经开始使用配器中的管道进行去匹配。我认为最好是在尽可能接近源头的地方进行脱毛


想法?

您必须有一个相关集,其中第一个接收形状初始化相关集,然后在循环中有一个接收,该接收具有以下相关集。棘手的部分将是确定您可以关联什么和循环的退出条件。这就是为什么在编排中使用管道或映射来解除对位通常更容易的原因。

您必须有一个相关集,其中第一个接收形状初始化相关集,然后在循环中有一个接收,该接收具有以下相关集。棘手的部分将是确定您可以关联什么和循环的退出条件。这就是为什么在编排中使用管道或映射来解除匹配通常更容易的原因。

最终的解决方案是直接在接收管道中进行解除匹配。在编排中使用XPath会带来性能风险,而使用相关集(如@Dijkgraaf)也会带来风险

然而,在尝试实施choosen解决方案时,我遇到了以下问题:

如果存储过程未返回任何结果,则XMLReceive管道无法解除消息的对位。这是因为如果没有返回任何行,WCF-SQL适配器将忽略结果元素,并且取消匹配(主体XPath)要求它存在。此外,即使使用XPath函数count()没有结果,也尝试让主体XPath工作,但BizTalk不允许“复杂”XPath表达式(由错误消息给出,未找到引用)


因此,我必须开发一个接收-解码自定义管道组件,以便在缺少元素时添加该元素。然后,即使元素为空,XML Disassmebler也会工作并使用消息。

最终的解决方案是在接收管道中直接进行去匹配。在编排中使用XPath会带来性能风险,而使用相关集(如@Dijkgraaf)也会带来风险

然而,在尝试实施choosen解决方案时,我遇到了以下问题:

如果存储过程未返回任何结果,则XMLReceive管道无法解除消息的对位。这是因为如果没有返回任何行,WCF-SQL适配器将忽略结果元素,并且取消匹配(主体XPath)要求它存在。此外,即使使用XPath函数count()没有结果,也尝试让主体XPath工作,但BizTalk不允许“复杂”XPath表达式(由错误消息给出,未找到引用)

因此,我必须开发一个接收-解码自定义管道组件,以便在缺少元素时添加该元素。然后,即使元素为空,XML Disassmebler也会工作并使用消息