Biztalk---根据特定逻辑在Pipeline中拆分消息

目前,XML/Flat File Disassembler都支持消息的拆分。但是,它们的局限性在于只能在xsd模型层进行拆分。如果需要针对输入文件的数据,按照特定的逻辑来拆分,它们是不支持这种功能的。

举个例子,如果一个输入文本文件中包含包含数据,每行数据是一个PO Item。每个PO Item中有个PONum信息。使用Flat File Disassembler来可以实现每行拆分为一个新消息(也可以实现每2行拆分为一个消息,取决于xsd设置)。 如果需求是把PO Num相同的若干PO Item合到一起拆分为一个消息,Flat File Disassembler是无法完成这种功能的。因为这种拆分逻辑不仅仅包含了模式层的逻辑,而且包含了数据层的逻辑。

思路:根据数据逻辑,把原始输入文件转化为一个临时文件(所有相同PO Num的PO Item位于一个节点中),然后对临时文件进行模式层拆分。简单点说,把数据拆分逻辑放到XML/Flat File Disassembler的输入前置中实现。

一站实现方法:使用一个Receive Pipeline,XLST Transform Component+XML Disassembler。
二站实现方法:使用Input, map,output,对output进行管道拆分。

你可能感兴趣的:(pipeline)