首页 > 解决方案 > 条件表达式在 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?

谢谢

标签: muleanypoint-studiodataweave

解决方案


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

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


推荐阅读