我遇到了 BizTalk 2010 的另一个问题。我应该收到 XML 格式的记录集合。我收到的 XML 是一个信封,里面有多个记录。我的简单任务是在不使用编排的情况下对 XML 中的记录进行分批并将它们放入不同的文件夹中。我创建了一个保存记录结构的 xsd,然后创建了另一个 xsd,它是包含我导入的前一个 xsd 的信封。我确实有一个指向 xsd 信封的 xpath-body。到目前为止,一切似乎都运行良好,因为我已经从带有信封的 xsd 生成了一个 XML,并且确实使用 xmldasm.exe 对其进行了测试。结果令人满意,因为 XML 按预期分批成 XML 格式的多个记录。
然后,我只使用 XML 反汇编程序创建了一个自定义接收管道并设置了正确的文档,然后成功部署了项目。从管理控制台,我配置了我的应用程序,创建了 FILE 类型的接收端口和发送端口。从发送端口,我将过滤器设置为BTS.MessageType == MyTestProject.MyXsdRoot
.
最后,我已经成功启动了我的应用程序。
但是,当我在 InputFolder 中删除一个包含多个记录的测试信封 XML(我使用上面的 xmlDasm.exe 测试过的那个)时,文件夹中的 XML 被消耗,但在 OutputFolder 中没有生成任何内容。从控制台,我看到了一个路由错误(可恢复)。显然,由于缺乏 BizTalk 经验,我忽略了一些事情。
有更多知识的人可以指出哪里出了问题,或者我应该怎么做才能找出问题所在?
更新:
- - - - 信封 - - - - - - - - - - - - - - - - -
<?xml version="1.0" encoding="utf-16" ?>
- <xs:schema xmlns="http://UsingOrchestration.SetOfProcedures" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ns0="http://UsingOrchestration.Procedures" targetNamespace="http://UsingOrchestration.SetOfProcedures" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UsingOrchestration.Procedure" namespace="http://UsingOrchestration.Procedures" />
- <xs:annotation>
- <xs:appinfo>
<b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
- <b:references>
<b:reference targetNamespace="http://UsingOrchestration.Procedures" />
</b:references>
</xs:appinfo>
</xs:annotation>
- <xs:element name="SetOfProcedures">
- <xs:annotation>
- <xs:appinfo>
<b:recordInfo body_xpath="/*[local-name()='SetOfProcedures' and namespace-uri()='http://UsingOrchestration.SetOfProcedures']" />
</xs:appinfo>
</xs:annotation>
- <xs:complexType>
- <xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="ns0:ProcedureCompleted" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
---------------------实际信息------------------
<?xml version="1.0" encoding="utf-16" ?>
- <xs:schema xmlns="http://UsingOrchestration.Procedures" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://UsingOrchestration.Procedures" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:element name="ProcedureCompleted">
- <xs:complexType>
- <xs:sequence>
<xs:element name="AltID" type="xs:string" />
<xs:element name="RotationName" type="xs:string" />
<xs:element name="ProcedureID" type="xs:string" />
<xs:element name="ProcedureFee" type="xs:string" />
<xs:element name="Comment" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
--------- Test xml------------------------------------------
<ns0:SetOfProcedures xmlns:ns0="http://UsingOrchestration.SetOfProcedures">
<ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
<AltID>AltID_0</AltID>
<RotationName>RotationName_0</RotationName>
<ProcedureID>ProcedureID_0</ProcedureID>
<ProcedureFee>ProcedureFee_0</ProcedureFee>
<Comment>Comment_0</Comment>
</ns1:ProcedureCompleted>
<ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
<AltID>AltID_1</AltID>
<RotationName>RotationName_1</RotationName>
<ProcedureID>ProcedureID_1</ProcedureID>
<ProcedureFee>ProcedureFee_1</ProcedureFee>
<Comment>Comment_1</Comment>
</ns1:ProcedureCompleted>
<ns1:ProcedureCompleted xmlns:ns1="http://UsingOrchestration.Procedures">
<AltID>AltID_2</AltID>
<RotationName>RotationName_2</RotationName>
<ProcedureID>ProcedureID_2</ProcedureID>
<ProcedureFee>ProcedureFee_2</ProcedureFee>
<Comment>Comment_2</Comment>
</ns1:ProcedureCompleted>
</ns0:SetOfProcedures>
使用完全相同的 XML,我可以过滤它BTS.ReceivePortName
,该集合已正确分批,但是当我过滤它时根本不会处理它BTS.MessageType
。我一定错过了什么,只是不知道是什么。