1

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

我使用 for 循环和以下

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

当 XPath 在为第一个接收消息路径[i]

这是正确的方法吗?

4

1 回答 1

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

如果您不使用信封模式,您将为传入消息(包含多条记录)启动单个编排实例。在您的业务流程中的表达式形状中,您可以使用 XPath(和其他一些魔法)循环每个记录,并将每个记录提取到一个业务流程变量(然后您可以映射等)

查看以下链接,这些链接将帮助您通过 XPath 进行提取:

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

于 2013-07-05T10:27:00.880 回答