我是Mulesoft的新手,我正在使用Mulesoft版本3.我们可以使用Set Variable
组件设置变量值。使用表达式组件,我们可以一次设置多个变量。但表达式组件不允许Declare
为流量变量。所以我必须首先使用3个Set Variable
组件,然后使用表达式一次性设置它们(如果需要更改)。
在多个变量的情况下,有没有办法在一个组件中声明和初始化变量,而不是使用单独的Set Variable
组件来声明它?
Message Properties
Transformer如果要在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
Component (DataWeave)您也可以使用Transform Message
组件在DataWeave中执行此操作。不过,我确实觉得它有几个缺点。首先是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这个特定的转换消息组件正在设置多个变量:
如果您使用的是企业版,请使用dataweave在一个组件中设置多个变量。
运行时4.1
https://docs.mulesoft.com/mule-runtime/4.1/dataweave-variables
运行时3.8
我想知道为什么你需要声明变量。无论如何,如果您在声明时只需要空白,您可以简单地设置如下。
<expression-component doc:name="Expression">
<![CDATA[flowVars.var1 ="" ;
flowVars.var2="";]]>
</expression-component>
希望这有帮助。