MEL 到 DataWeave 的转换

MEL to DataWeave conversion

我们正在将 Mule 3 应用程序迁移到 Mule 4,我们遇到了以下 MEL。关于如何将其转换为 DataWeave 的任何输入。

mel:prevProperties.get(payload.get("A1 - Roll Number")) == null ? prevProperties.put(payload.get("A1 - Roll Number"), payload.get("M7 - Detailed status")) : duplicateRecords.put(payload.get("A1 - Roll Number"),": Duplicate Name Found By ID")

所以这个脚本不能原样迁移到 mule 4,因为它使用了 DW 中不允许的副作用。

prevProperties.get(payload.get("A1 - Roll Number")) == null ?
        prevProperties.put(payload.get("A1 - Roll Number"), payload.get("M7 - Detailed status")) : 
        duplicateRecords.put(payload.get("A1 - Roll Number"),": Duplicate Name Found By ID")

因此,为了在语义上映射这一点,我们需要在您的流程中获得更多上下文。要在语法上映射,可以映射的部分将类似于

if(prevProperties[payload["A1 - Roll Number"]] == null) 
    prevProperties ++ {(payload["A1 - Roll Number"]): payload["M7 - Detailed status"]}
else duplicateRecords ++ {(payload["A1 - Roll Number"]) : ": Duplicate Name Found By ID"}

同样,这与 ++ 不修改而是创建一个新实例并不完全相同。