如何在 Mule 4 变量中存储当前日期和消息 ID?

How to store the current date and message id in Mule 4 variable?

就我而言,我正在从 Mule 3 迁移到 Mule 4。

我想将当前日期和消息 ID 存储在 mule 4 变量中。

日期 甲酸盐是 "yyyyMMddHHmmssSSS"

中的当前日期

Message_id是日期++(随机id(大小为6个字符))

mule 3 中的代码:

<set-variable variableName="messageDateF" value="#[server.dateTime.format('yyyyMMddHHmmssSSS')]" doc:name="set messageDateF"/>
<set-variable variableName="messageId" value="#[flowVars.messageDateF]#[UUID.randomUUID().toString().replace('-', '').substring(0,5)]" doc:name="set messageId"/>

预期输出:

20220202024435724ddebd

请帮助我。

你好,在 mule4 中,我们使用 DWL,因此您可以使用转换消息替换 Mule 4 中的代码,并将输出设置为名称为“messageId”的变量

注意:我使用的是 4.4.0 mule 运行时,作为 substring 在 DataWeave 版本 2.4.0 中引入。根据官方文件 link

%dw 2.0
import * from dw::core::Strings
output application/json
var messageDateF = now() as String {format: "yyyyMMddHHmmssSSS"}
var messageId= messageDateF ++ "" ++ substring ((uuid() replace ("-") with ""),0,5)
---
messageId

这相当于 Mule 4.3 的 set-variable。请注意,我只使用了一个变量。如果确实需要,您可以分成两个变量。

<set-variable variableName="messageId" value="#[now() as String {format: "yyyyMMddHHmmssSSS"} ++ (uuid() replace ("-") with "")[0 to 5]]" doc:name="set messageId"/>