1

配置文件:Windows 2008 Server SP2(开发平台)上的 Biztalk 2009 更新 4 嗨,当使用 xpath 使用带有以下代码的消息构造和消息分配映射我的输出时:

    sXPath = System.String.Format("/*[local-name()='ProcessSalesOrder' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas']/*[local-name()='header' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas']/*[local-name()='detail' and namespace-uri()='http://www.TestSchemas.net/TestSchemas_V2_2/schemas' and position()={0}]", nLoopCount);
    System.Diagnostics.Debug.WriteLine(sXPath);
    SingleInput = xpath(Input, sXPath);

我在事件查看器中遇到异常;

    Exception thrown from: segment 1, progress 15
    Inner exception: The part 'part' of message 'SingleInput' contained a null value at the end of the construct block.

    Exception type: NullPartException
    Source: Microsoft.XLANGs.Engine
    Target Site: Void ConstructionCompleteEvent(Boolean)

我有一个简单的编排,一个接收端口一个发送端口使用两个模式。我将无界“详细信息”的记录计数放入一个名为的变量nRecordCount中,并且我在 中使用循环计数器MessageLoop来增加这个放在 Expression 对象末尾的nLoopCount = nLoopCount + 1;作为表达式的值。

编排

第二个模式(名称:SalesOrderDetail_V2_2.xsd)的详细结构与第一个(名称:SalesOrderRequest_V2_2.xsd)相同,但删除了所有标题标签。

在此处输入图像描述

和下面的 SalesOrderRequest_V2_2.xsd

在此处输入图像描述

似乎方形钉正试图映射到圆孔。我曾尝试对此进行调试,但在 file0.cs 中的以下代码中失败,如下所示;

在此处输入图像描述

我在编排调试中也找不到任何有用的东西。任何人都可以进一步了解我在使用 Xpath 时可能遗漏的内容吗?

完整的工程已经压缩,可在以下地址下载

https://skydrive.live.com/redir.aspx?cid=533fd5a521c8c878&resid=533FD5A521C8C878!1848&parid=533FD5A521C8C878!119&authkey=!AE4gYqCoqmZd8xs

请参阅此链接以获取可能的修复。如果我更改架构结构 (XSD) 文件,我已经设法获得了一个可行的解决方案。

这是链接: xpath - 如何让方法 B 工作?

4

1 回答 1

0

我最近有一个非常相似的场景(从单个输入消息创建一批消息),最终得到的解决方案略有不同:

在循环内部,我创建了一个简单的计数器消息,分配当前计数器值。

接下来在 Construct Message 形状中,我有一个 Map,它使用 Counter 消息和原始源消息作为输入消息,并将批处理消息模式作为输出。

在地图内部,我使用“调用 Xslt 模板”脚本函数,它从计数器消息中接收计数器值作为 Xslt 参数。我使用这个参数来提取所需的源节点,它与您的 XPath 基本相同(即 position()=$param)。

我知道仅仅由于大量的字段,使用 Call Xslt Template 可能不是您的选择。

我没有准备好 BizTalk 开发环境的 atm,但也应该可以使用“普通”functoids 而不是调用 Xslt 模板来提取序列节点。

于 2011-12-21T17:04:12.930 回答