繁体   English   中英

我们如何将 Mule 4 dataweave 2.0 代码转换为 Mule 3 dataweave 1.0?

[英]How can we convert Mule 4 datawevae 2.0 code to Mule 3 dataweave 1.0?

我在 Mule 4 中有以下 dataweave 2.0 代码,我在 Mule 3 dataweave 1.0 中需要此代码。 有人可以帮我如何将此代码转换为 dw 1.0 吗?

    Dataweave step 1

%dw 2.0
output application/json
fun prepareList(list:Array, maxSize: Number) = if(sizeOf(list) >= maxSize )
list
else
prepareList(list ++ [(sizeOf(list) + 1) as Number],maxSize)
---
(payload map (row, index) -> ({
    dummy : prepareList([],sizeOf(row))  map (irow, icounter) -> {

        ((row[icounter] splitBy "=")[0]) : (row[icounter] splitBy "=")[1] 
    } 

})) 



Dataweave step 2

%dw 2.0
output application/json
---
((payload reduce ((item, acc) -> acc ++ item)).*dummy map (row, index) -> ({
    index : row reduce ((item2, acc2) -> acc2 ++ item2)
})).*index

大多数操作,如 map、reduce、splitBy 在 DataWeave 1.0 中的工作方式基本相同,可能需要很少或不需要更改。 *选择器是相同的。

您必须将if...else...替换为when...otherwise...

您还必须更改---分隔符之前的声明以匹配 DataWeave 1.0 约定。

例子:

%dw 1.0
%output application/json
%function prepareList(list, maxSize) 
              list when ( sizeOf(list) >= maxSize ) 
                   otherwise prepareList(list ++ [(sizeOf(list) + 1) as Number],maxSize)
---

你不能。 它看起来很相似,但 DW 2 比 DW 1 强大得多。就像将 C++ 更改为 C 一样。 看起来一样,但概念不同。

相反的方式是正确的。 https://simpleflatservice.com/mule4/Mule3toMule4Transformation.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM