Mule 3如何声明多个流量变量

问题描述 投票:0回答:3

我是Mule的新手,我正在使用Mule 3.x版。我们可以使用Set Variable组件设置变量的值。使用表达式组件,我们可以一次设置多个变量。但是表达式组件不允许Declare流变量。因此,我必须首先使用3 Set Variable组件,然后使用表达式将它们一次性设置(如果需要更改)。

如果有多个变量,有没有办法在一个组件中声明和初始化变量,而不用单独的Set Variable组件来声明它?

mule anypoint-studio
3个回答
2
投票

Message Properties变压器

如果您想在Mule 3的单个组件中设置多个流量变量,并且您无需事先进行任何转换,则Message Properties转换器可能是最简洁的方法。我喜欢它,因为除了能够在单个组件中设置多个流变量外,XML清晰易懂,而且当您在AP Studio中单击该组件时,UI立刻表明您正在使用一个单一组件。只要确保使用scope="invocation",就可以设置流量变量:

<message-properties-transformer scope="invocation" doc:name="Set flowVars">
    <add-message-property key="varName1" value="1"/>
    <add-message-property key="varName2" value="2"/>
    <add-message-property key="varName3" value="2"/>
</message-properties-transformer>

如果需要进行小的转换,则始终可以从MEL调用DataWeave。这是一个例子:

...
<add-message-property key="varName1" value="dw('payload map $.id')"/>
...

Transform Message组件(DataWeave)

您也可以在DataWeave中使用Transform Message组件来执行此操作。我确实有几点缺点,但我应该指出。首先是XML更冗长且难以阅读:

<dw:transform-message doc:name="Transform Message">
    <dw:set-variable variableName="varName1"><![CDATA[%dw 1.0
%output application/java
---
1]]></dw:set-variable>
    <dw:set-variable variableName="varName2"><![CDATA[%dw 1.0
%output application/java
---
2]]></dw:set-variable>
    <dw:set-variable variableName="varName3"><![CDATA[%dw 1.0
%output application/java
---
3]]></dw:set-variable>
</dw:transform-message>

此外,没有明显的方法可以从AP Studio UI得知此特定的转换消息组件正在设置多个变量:

enter image description here


0
投票

如果使用的是企业版,请使用dataweave在一个组件中设置多个变量。

运行时4.1

https://docs.mulesoft.com/mule-runtime/4.1/dataweave-variables

运行时3.8

https://docs.mulesoft.com/mule-runtime/3.8/dataweave


0
投票

我想知道为什么只需要声明变量。无论如何,如果您在声明时只需要将其留空,则可以将其设置如下。

<expression-component doc:name="Expression">
    <![CDATA[flowVars.var1 ="" ;
             flowVars.var2="";]]>
</expression-component>

希望获得帮助。

© www.soinside.com 2019 - 2024. All rights reserved.