【问题标题】:Using DataWeave to combine CSV payloads使用 DataWeave 组合 CSV 有效负载
【发布时间】:2016-04-05 16:31:30
【问题描述】:

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

[CSV Payload 1]
Data|Data|Data
[CSV Payload 2]
Data|Data|Data|Data|Data|Data|Data|Data|Data
[CSV Payload 3]
Data|Data|Data|Data
[CSV Payload 4]
Data|Data|Data|Data|Data|Data

如您所见,我有 4 个 CSV 有效负载的组合,每个都有不同的结构。这些有效载荷中的前两个是单行的并且是硬编码的。第三个来自输入文件,第四个来自数据库。

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

请注意:最终输出的顺序需要是Payload 1 then 2 then 3 then 4。这个顺序不能混用。

【问题讨论】:

    标签: csv mule dataweave


    【解决方案1】:

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

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

    然后您可以使用这样的 DataWeave 转换,假设输入有效负载来自输入文件(即有效负载 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 ) 
      )
    

    这应该会生成您需要的目标格式(有效负载 1 和有效负载 2 是转换中的硬编码对象)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多