使用DataWeave组合CSV有效负载

时间:2016-04-05 16:31:30

标签: csv mule dataweave

我有一个Mule应用程序需要生成一些CSV输出,如下所示:

new \ReflectionClass($provider);

如您所见,我有4个CSV有效载荷的组合,每个有效载荷都有不同的结构。这两个有效载荷中的前两个是单行和硬编码。第三个是从输入文件派生的,第四个是从数据库中提取的。

我的问题是:DataWeave是否适合实现这一目标,还是应该探索替代方法(例如分散聚集)?我试图在DataWeave中实现这一点而没有运气,因为我正在努力克服必须定义输出结构的限制。

请注意:最终输出的顺序必须是有效载荷1然后是2然后是3然后4.此顺序不能混淆。

1 个答案:

答案 0 :(得分:0)

只要映射的数据结构与输出指令中定义的MIME类型兼容,就不必在DataWeave中定义输出结构。

您可以使用Message Enricher获取Payload 4作为应用程序/ java对象,并将其分配给流变量,例如additionalData。

然后您可以使用这样的DataWeave转换,假设输入有效负载是从输入文件(即Payload 3)派生的:

%dw 1.0
%output text/csv separator="|", header=false
---


 {p1-fld1: "Data", p1-fld2: "Data", p1-fld3: "Data"}  +
(
    {p2-fld1: "Data", p2-fld2: "Data", p2-fld3: "Data",
    p2-fld4: "Data", p2-fld5: "Data", p2-fld6: "Data",
    p2-fld7: "Data", p2-fld8: "Data", p2-fld9: "Data"
  } + 
  (payload + flowVars.additionalData ) 
  )

这应该产生您需要的目标格式(Payload 1和Payload 2是转换中的硬编码对象)。