我有一个Mule应用程序需要生成一些CSV输出,如下所示:
new \ReflectionClass($provider);
如您所见,我有4个CSV有效载荷的组合,每个有效载荷都有不同的结构。这两个有效载荷中的前两个是单行和硬编码。第三个是从输入文件派生的,第四个是从数据库中提取的。
我的问题是:DataWeave是否适合实现这一目标,还是应该探索替代方法(例如分散聚集)?我试图在DataWeave中实现这一点而没有运气,因为我正在努力克服必须定义输出结构的限制。
请注意:最终输出的顺序必须是有效载荷1然后是2然后是3然后4.此顺序不能混淆。
答案 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是转换中的硬编码对象)。