我是Mulesoft的新手,正在使用Mulesoft版本3。我们可以使用Set Variable
组件设置变量的值。使用表达式组件,我们可以一次设置多个变量。但是表达式组件不允许Declare
流变量。因此,我必须首先使用3个Set Variable
组件,然后使用expression一次性设置它们(如果需要更改)。
如果有多个变量,是否有任何方法可以在一个组件中声明和初始化变量,而不用单独的Set Variable
组件来声明它?
答案 0 :(得分:1)
Message Properties
变压器如果您想在Mule 3的单个组件中设置多个流量变量,并且不需要事先进行任何转换,scope="invocation"
转换器可能是最简洁的做到这一点的方法。我喜欢它,因为除了能够在单个组件中设置多个流变量外,XML清晰易懂,而且当您在AP Studio中单击该组件时,UI立刻表明您正在使用单个组件。只要确保使用<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>
,就可以设置流变量:
...
<add-message-property key="varName1" value="dw('payload map $.id')"/>
...
如果需要进行小的转换,可以随时从MEL调用DataWeave。这是一个示例:
Transform Message
Transform Message
组件(DataWeave)您也可以在DataWeave中使用<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>
组件来执行此操作。我确实有几点缺点,但我应该指出。首先是XML更冗长且难以阅读:
def checknumber(num):
a = []
a = list(num)
print(a)
for iter in range(0,len(a)):
if int(a[iter])%2 ==0:
print(a[iter])
print("yes")
return 6
else :
print("No")
return 7
def inc(number,step1=0):
number1 = int(number)
number1=number1 + 1
print(step1)
step1= step1+1
print(step1)
if(checknumber(str(number1))==7):
inc(number1,step1)
else:
return step1
此外,没有明显的方法可以从AP Studio UI得知此特定的转换消息组件正在设置多个变量:
答案 1 :(得分:0)
如果您使用的是企业版,请使用dataweave在一个组件中设置多个变量。
运行时4.1
https://docs.mulesoft.com/mule-runtime/4.1/dataweave-variables
运行时3.8
答案 2 :(得分:0)
我想知道为什么您只需要声明变量。无论如何,如果您在声明时只需要将其留空,则只需将其设置如下。
<expression-component doc:name="Expression">
<![CDATA[flowVars.var1 ="" ;
flowVars.var2="";]]>
</expression-component>
希望获得帮助。