从业务流程发送中将XML消息拆分为不同的平面文件

时间:2015-08-25 23:58:09

标签: xml soap biztalk flat-file biztalk-orchestrations

我有一个销售订单编排,可以将订单消息发送到SOAP服务。该消息包含订单标题元素以及重复的订单行项目集。例如:

<Order>
   <Customer>cust123</Customer>
   <Foo>bar</Foo>
   <OrderLines>
      <Line>
         <ItemSku>123134</ItemSku>
         <Quantity>5</Quantity>
      </Line>
      <Line>
         <ItemSku>56789</ItemSku>
         <Quantity>8</Quantity>
      </Line>
   </OrderLines>
</Order>

我需要为SOAP调用失败时引入“备份计划”(无论原因是什么,例如网络问题等)。我被要求获取XML消息并转换为一组代表订单标题和订单行的平面文件(管道分隔),然后将文件发送到共享,该共享将由另一个进程按计划扫描导入与SOAP服务相同的后端系统。

换句话说,我需要将XML分解/分割成单独的文件,因为一个文件用于订单头,另一个文件用于订单行项。请注意,我的实际场景中还有其他文件在顺序中重复节点,但场景与订单行项完全相同,所以我在这里保持简单。

我看过很多关于debatching等的帖子,但它们似乎都不符合上述情况。

在BizTalk 2013 R2中实现此目的的最佳方法是什么?它可以在发送端口完成,还是涉及自定义编码?请提供步骤,并尽可能提供指向任何相关文章资源的链接。谢谢!

1 个答案:

答案 0 :(得分:4)

可以在发送端口级别完成。

有两个订阅该邮件的新端口。

有一个映射到您的平面文件头架构的地图和一个用于汇总标题平面文件的管道

将第二个端口映射到您的详细订单行平面文件架构和管道以组装详细信息平面文件。

然后,只需在SOAP失败时将消息发布到消息框即可。您可能需要在具有决策形状的业务流程中执行此操作。