数据编织 1.0 到 2.0

Dataweave 1.0 to 2.0

尝试将以下数据编织从 1.0 转换为 2.0,但我尝试的所有操作都出现以下错误之一。关于如何在 dataweave 2.0 中编写相同的内容有什么想法吗?

无效输入“地图{实体:$.VENDOR_SITE_CODE[0..2”,应为 PropertyName 或? 无效输入“过滤器(($.VENDOR_SITE_CODE[0..3”,应为 PropertyName 或?

%dw 1.0
%output application/java
%function checkNull(value) '' when value == null otherwise value
---
payload.MMAP_SUPPLIER_DETAILS_OBJ_TYPE.SITES.*MMAP_SUPPLIER_SITE_OBJ_TYPE 
    filter (($.VENDOR_SITE_CODE[0..3] == 'CHN '
             or $.VENDOR_SITE_CODE[0..3] == 'FDL '
             or $.VENDOR_SITE_CODE[0..3] == 'HPP '
             or $.VENDOR_SITE_CODE[0..3] == 'MEX '
             or $.VENDOR_SITE_CODE[0..3] == 'P&A '
             or $.VENDOR_SITE_CODE[0..3] == 'STC ')
             and ($.ORG_ID == '116' or $.ORG_ID == '5195')
            and checkNull($.INACTIVE_DATE) == '')
    map {
        Entity: $.VENDOR_SITE_CODE[0..2]
    }


%dw 2.0
output application/java
fun checkNull(value) = if (value == null) '' else value
---
payload.MMAP_SUPPLIER_DETAILS_OBJ_TYPE.SITES.*MMAP_SUPPLIER_SITE_OBJ_TYPE
    filter (($.VENDOR_SITE_CODE[0..3] == 'CHN '
             or $.VENDOR_SITE_CODE[0..3] == 'FDL '
             or $.VENDOR_SITE_CODE[0..3] == 'HPP '
             or $.VENDOR_SITE_CODE[0..3] == 'MEX '
             or $.VENDOR_SITE_CODE[0..3] == 'P&A '
             or $.VENDOR_SITE_CODE[0..3] == 'STC ')
            and ($.ORG_ID == '116' or $.ORG_ID == '5195')
            and checkNull($.INACTIVE_DATE) == '')
    map {
        Entity: $.VENDOR_SITE_CODE[0..2]
    }

有些事情发生了变化。首先,输出没有以 % 开头,并且 if 语句现在采用 if (condition) result else otherResult 格式。现在也使用 START to FINISH 指定范围,例如:0 to -1 选择整个范围。

试试这个:

%dw 2.0
output application/java
fun checkNull(value) = if (value == null) '' else value
---
payload.MMAP_SUPPLIER_DETAILS_OBJ_TYPE.SITES.*MMAP_SUPPLIER_SITE_OBJ_TYPE 
    filter (($.VENDOR_SITE_CODE[0 to 3] == 'CHN '
             or $.VENDOR_SITE_CODE[0 to 3] == 'FDL '
             or $.VENDOR_SITE_CODE[0 to 3] == 'HPP '
             or $.VENDOR_SITE_CODE[0 to 3] == 'MEX '
             or $.VENDOR_SITE_CODE[0 to 3] == 'P&A '
             or $.VENDOR_SITE_CODE[0 to 3] == 'STC ')
             and ($.ORG_ID == '116' or $.ORG_ID == '5195')
            and checkNull($.INACTIVE_DATE) == '')
    map {
        Entity: $.VENDOR_SITE_CODE[0 to 2]
    }

就像@aled 提到的那样,尽管查看输入和预期输出会很有帮助。