跳过BizTalk平面文件程序集中的元素?

时间:2018-10-18 12:46:26

标签: xsd biztalk flatfiledestination

我的任务是映射输入xml(实际上是SAP idoc xml),并生成许多平面文件。每个输入xml可能会产生多个输出文件(每个批号一个输出文件),因此我将根据批号在映射中使用xsl:key和key()函数

问题是,批号本身将不在文件本身中,但是输出文件名需要包含该批号值。

所以问题确实是:我可以将批号映射到xml,并让平面文件汇编器在生成文件时跳过它吗?还是有另一种方法可以将批号用作程序集的文件名,而不用放在文件本身中?

2 个答案:

答案 0 :(得分:2)

在业务流程中,您可以为每个输出消息设置上下文属性:

msgOutput(FILE.ReceivedFileName) = "DynamicStuff";

msgOutput然后转到发送形状。 在发送端口中,您可以这样设置输出文件:

FixedStuff_%SourceFileName%.xml

结果:

FixedStuff_DynamicStuff.xml

答案 1 :(得分:1)

  1. 如果消息内容中不需要该值,请不要映射它。就是这样。
  2. 要在文件名(批号)中的值处插入,在这种情况下,您需要将该值提升为FILE.ReceivedFileName上下文属性。然后,您可以将%SourceFileName%宏用作“发送端口”中名称设置的一部分。您可以通过Orchestration中的Property Promotion或xpath()来设置FILE.ReceivedFileName。

奖金:在xslt中进行排序和分组非常笨拙,这就是为什么我不再这样做了。相反,您可以使用SQL:BizTalk: Sorting and Grouping Flat File Data In SQL Instead of XSL