从 Orchestration Send 将 XML 消息拆分为不同的平面文件

Split XML Message into different Flat Files from Orchestration Send

我有一个将订单消息发送到 SOAP 服务的销售订单编排。该消息包含订单 header 元素以及一组重复的订单行项目。示例:

<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 调用失败时引入一个 "backup plan"(无论是什么原因,例如网络问题等)。我被要求接收 XML 消息并将其转换为一组代表订单 header 和订单行的平面文件(以竖线分隔),然后将文件发送到共享由导入到与 SOAP 服务相同的后端系统的另一个进程按计划清扫。

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

我看到很多帖子都在谈论分批处理等,但其中 none 似乎符合上述情况。

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

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

有两个新端口订阅消息。

有一个映射到您的平面文件头架构的映射和一个到 assemble 头平面文件的管道

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

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