我们如何将 Mule 4 datawevae 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... by 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