【问题标题】:Generating random numbers in mule dataweave在 mule dataweave 中生成随机数
【发布时间】:2020-06-29 22:34:43
【问题描述】:

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

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

如何在 Mule Dataweave 中实现这一点

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    不确定您可以在 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>
    

    【讨论】:

      【解决方案2】:

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

      <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>
      

      【讨论】:

        【解决方案3】:

        您不能在纯 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-call-external-flows

        【讨论】:

          【解决方案4】:

          只需将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>
          

          【讨论】:

            【解决方案5】:

            在 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 }

            【讨论】:

            • 这应该是现在接受的答案
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-01-03
            • 2011-09-05
            • 2012-12-16
            • 2019-05-15
            • 2014-09-13
            相关资源
            最近更新 更多