Mulesoft Dataweave - 不能在 "otherwise" 子句中使用 "Using" 运算符中定义的变量

Mulesoft Dataweave - can't use variable defined in "Using" operator in an "otherwise" clause

为什么这在 Dataweave 1.0 中不起作用?

dw( ' using (zone="Z1,Z2") (zone splitBy ",")[0] when "NJ,NY" contains "MA" otherwise (zone splitBy ",")[1] ' )

如果我输入 contains "NJ"contains "NY",它会毫无问题地执行 when 子句,但是 otherwise 在引用我的时会产生错误zone变量。

这是一个范围界定的事情吗? zone 不适用于 otherwise 子句?

我在 using 上找不到任何像样的文档。

您在本地化声明(即 zone)之后缺少一组括号来指示其范围。

我在 Transform Message 处理器中尝试了您的代码,正确缩进后应该是这样的:

%dw 1.0
%output application/dw
---
using (
    zone="Z1,Z2"
) (
    (zone splitBy ",")[0] when "NJ,NY" contains "MA" otherwise (zone splitBy ",")[1]
)

总是这样写usingusing (<declarations>) (<expression>)

你的代码应该这样写:

#[dw( ' using (zone="Z1,Z2") ((zone splitBy ",")[0] when "NJ,NY" contains "MA" otherwise (zone splitBy ",")[1]) ' )]

这是文档所在的位置:https://docs.mulesoft.com/mule-runtime/3.9/dataweave-language-introduction#scoped-variables