条件表达式在 Mule 4 中不起作用

Conditional expression is not working in Mule 4

我在 Mule 中设置变量值时有这个表达式:

#[(message.inboundProperties['message-id'] != null) ? message.inboundProperties['message-id'] : java.util.UUID.randomUUID().toString().replace('-', '')]

基本上,如果消息没有分配给它的 id,那么它会创建一个。

我已经转到 Mule 4 和 Anypoint 7,这个表达式不再有效。我知道 inboundProperties 已更改为属性,因此进行了以下更改:

#[(attributes.headers.'message-id' != null) ? attributes.headers.'message-id' : java.util.UUID.randomUUID().toString().replace('-', '')]

对于这两个表达式,我都收到错误消息“输入‘(’时没有可行的选择。

我怎样才能使这个语句适用于 Mule 4?

谢谢

#[attributes.headers.'message-id' default (uuid()  replace '-' with '')]
  1. expression 在 mule 4 中默认使用 Dataweave 2.0,而不是 MEL。所以你不能再使用 java 方法调用。而是使用 uuid() 数据编织函数和替换数据编织函数

  2. 您可以使用 default 而不是 if else 检查