Mulesoft 3如何声明多个流变量

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

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

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

mule anypoint-studio
3个回答
1
投票

The 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')"/>
...

The 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这个特定的转换消息组件正在设置多个变量:

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.