如何循环编排BizTalk 2010

use*_*552 1 biztalk biztalk-2010 biztalk-orchestrations

我正在寻找循环从wcf-sql适配器收到的SQL Server数据的数据.

我用于循环和以下

itostring=i.ToString();
MessageOne=xpath(MessagePolling,"/*[local-name()='MainData' and namespace-uri()='http..["+itostring+"]");
Run Code Online (Sandbox Code Playgroud)

当XPath进入第一个接收消息路径[i]

这是正确的方法吗?

Nic*_*ton 6

有两种方法可以循环BizTalk接收的Xml消息中包含的多个记录:

信封模式

定义表示消息的架构时,请将其标记为信封架构.这告诉接收管道反汇编程序为传入消息中的每个记录(在您的情况下从WCF-SQL适配器)创建(并发布)一条消息到BizTalk消息框.这将导致为传入消息中的每个记录启动单个Orchestration实例.

Richard Seroter在WCF-SQL适配器上有一篇很棒的博客文章 - http://seroter.wordpress.com/2010/04/08/debatching-inbound-messages-from-biztalk-wcf-sql-adapter/

请注意,使用这种方法,您不希望从传入的消息中取消批量数万条记录,因为BizTalk将停止运行:-)

业务流程中的XPath

如果不使用信封架构,则将为传入消息启动单个Orchestration实例(包含多个记录).在Orchestration中的Expression Shape中,您可以使用XPath(以及其他一些魔法)循环每个记录,每个记录都提取一个Orchestration变量(然后您可以在其上映射等)

看看以下链接,它们将帮助您通过XPath提取:

^还有第三种方法可以实现这一点,因为BizTalk Server 2009(我认为 - 似乎很久以前)可以在Orchestration中执行接收管道,因此您可以在Orch中执行Envelope de-batching,而不是接收位置的接收管道.

  • 嘿user2541552,如果这回答了你的问题,请'标记为已答复'.谢谢! (2认同)