配置文件: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中的以下代码中失败了;
我在Orchestration Debug中找不到任何有用的东西。 任何人都可以进一步了解使用Xpath时可能缺少的内容吗?
整个项目已经压缩,可从以下地址下载
请参阅此链接以获取可能的解决方法。如果我更改架构结构(XSD)文件,我已设法获得可行的解决方案。
答案 0 :(得分:0)
我最近有一个非常类似的场景(从单个输入消息创建一批消息),最终只有一个稍微不同的解决方案:
在循环内部,我创建一个简单的Counter消息,分配当前计数器值。
接下来,在Construct Message形状中,我有一个Map,它使用Counter消息和原始源消息作为输入消息,批处理消息模式作为输出。
在地图内部我使用“调用Xslt模板”脚本函数,该函数从计数器消息接收计数器值作为Xslt参数。我用这个参数来提取所需的源节点,使用基本相同的XPath(即position()= $ param)。
我知道使用Call Xslt Template可能不是一个选项,因为有大量的字段。
我没有准备好我的BizTalk开发环境,但是也可以使用“普通”functoid代替Call Xslt Template来提取序列节点。