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

时间:2018-07-17 11:06:56

标签: mule anypoint-studio dataweave mel

在Mule中设置变量的值时,我具有以下表达式:

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

基本上,如果邮件尚未分配ID,则将创建一个ID。

我已移至Mule 4和Anypoint 7,此表达式不再起作用。我知道inboundProperties已更改为属性,因此进行了以下更改:

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

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

如何解决此声明以适用于Mule 4?

谢谢

1 个答案:

答案 0 :(得分:3)

#[attributes.headers.'message-id' default (uuid()  replace '-' with '')]
  1. 表达式在m子4中默认使用Dataweave 2.0,而不是MEL。因此,您不能再使用Java方法调用。而是使用uuid()dataweave函数和replace dataweave函数

  2. 您可以使用default代替if else check