mule - 条件表达式在 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 '')]
表达式在 mule 4 中默认使用 Dataweave 2.0,而不是 MEL。所以你不能再使用java方法调用。而是使用 uuid() dataweave 函数和 replace dataweave 函数
您可以使用 default 而不是 if else 检查
推荐阅读
- javascript - 为什么我的没有
- 扩大宽度以覆盖所有内容?
- python - 如何将两条不同范围的曲线组合成一个图?
- python - 使用 LogisticRegression、多项式特征和管道的问题
- c# - 无法在流中保存和重新创建 Aspose jpeg 图像
- c++ - cout vs printf C++
- sql - ASP 页面上的求和函数
- python - 从文件中读取并添加到字典中时,如何将值添加到键中
- typescript - TypeScript this: new () => T parameter with protected constructor
- python - type.__getattribute__ 是静态的吗?
- keras - Keras UNET 实现预测非常糟糕