2

我必须将随机生成的数字与 dataweave 中请求的字段连接起来。

NUMBR: "AA" ++ $.Load.Reference.*Reference ++ RandomNumber

如何在 Mule Dataweave 中实现这一点

4

5 回答 5

2

不确定您可以在 Datawevae 中做什么来执行此操作,但您可以在 flowVariable 中设置一个随机数并从您的 Dataweave 脚本中调用它,如下所示:

<set-variable variableName="random"
    value="#[new java.util.Random().nextInt(100)]" doc:name="Variable" />

<dw:transform-message doc:name="Transform Message">
    <dw:input-variable doc:sample="unknown.dwl" variableName="random" />
    <dw:set-payload>
    <![CDATA[%dw 1.0
        %output application/dw
        ---
        {
            "data": ("22" as :number + flowVars.random)
        } ]]>
    </dw:set-payload>
</dw:transform-message>
于 2015-10-23T10:23:46.567 回答
1

您不能在纯 DataWeave 中执行此操作,但您可以使用两种方法在应用程序的其他位置生成数字:

  1. 您可以从 DataWeave 调用全局 MEL 函数:https ://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#global-mel-functions
  2. 您可以调用返回值的流程:https ://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#expressions-that-c​​all-external-flows
于 2015-12-30T14:46:35.427 回答
1

您还可以使用表达式组件将其分配给有效负载或变量,然后连接

<flow name="random-numbersFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/random" allowedMethods="GET" doc:name="HTTP"/>
    <expression-component doc:name="Expression"><![CDATA[payload = new java.util.Random().nextInt(100)]]></expression-component>
    <dw:transform-message doc:name="Transform Message">
        <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
    data: payload
}]]></dw:set-payload>
    </dw:transform-message>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
于 2015-10-24T21:18:55.350 回答
0

在 Mule 4 Dataweave 2 中,函数 radom()

返回大于等于 0.0 且小于 1.0 的伪随机数

MULE 4 文档: https ://docs.mulesoft.com/mule-runtime/4.3/dw-core-functions-random

示例:%dw 2.0 输出应用程序/json

{价格:随机()* 1000 }

于 2020-06-17T17:40:23.900 回答
0

只需将 Java 生成的随机值设置为流变量

<set-variable variableName="Random_Variable" value="#[java.util.Random().nextInt(10)]" doc:name="Random Variable"/>

然后在您的 Dataweave 转换中使用该流变量。

<dw:transform-message doc:name="Transform Message" metadata:id="8098b24c-30c1-4e9e-a3ce-9e8aaaec7bd1">
            <dw:input-variable mimeType="application/java" variableName="Random_Variable"/>
            <dw:set-payload><![CDATA[%dw 2.0
%output application/json
---
{
    NUMBR: "AA" ++ $.Load.Reference.*Reference ++ flowVars.Random_Variable
}]]></dw:set-payload>
</dw:transform-message>
于 2019-02-06T12:21:07.903 回答