【发布时间】:2011-12-21 16:24:57
【问题描述】:
简介: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 中使用循环计数器来增加这个放置在表达式对象末尾的值,其中nLoopCount = nLoopCount + 1; 作为表达式。
第二个架构(名称:SalesOrderDetail_V2_2.xsd)的详细结构与第一个(名称:SalesOrderRequest_V2_2.xsd)相同,但删除了所有标题标签。
以及下面的 SalesOrderRequest_V2_2.xsd
似乎方形钉正试图映射到圆孔。我曾尝试对此进行调试,但在 file0.cs 中的以下代码处失败,如下所示;
我在编排调试中也找不到任何有用的东西。 任何人都可以进一步了解我在使用 Xpath 时可能遗漏的内容吗?
完整的工程已经压缩,可在以下地址下载
请查看此链接以获取可能的修复。如果我更改架构结构 (XSD) 文件,我已经设法获得了一个可行的解决方案。
【问题讨论】:
-
您好 Filburt,现实情况是,上述项目和结构与简单的 XSD 模式定义配合良好,在详细节点下只有五个元素,没有其他标题元素。如果我增加 XSD 模式的复杂性,如屏幕截图所示,在标头节点以及详细节点中有许多节点和元素,那么我会遇到异常错误的情况。据我所见,带有详细节点的两个模式是相同的。
-
在调试中,我可以看到 nRecordCount 变量在 GetRecordCount 表达式中填充了正确数量的详细信息元素。它进入 MessageLoop 但在“SingleInput = xpath(Input, sXPath);”处失败表达式被执行。 SingleInput 消息基于 SalesOrderDetail 模式,sXPath 是从表达式“System.String.Format(”/*[local-name()='ProcessSalesOrder' and namespace.......”中检索的结果.
-
我相信使用 xpath 函数存在一些不匹配,我无法使用我拥有的这个 Orchestration 版本中的复杂模式来解决。它一定很简单,但我似乎对这个视而不见。
标签: .net biztalk biztalk-2009 biztalk-orchestrations