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

时间:2019-02-08 07:30:58

标签: mule anypoint-studio

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

如果有多个变量,是否有任何方法可以在一个组件中声明和初始化变量,而不用单独的Set Variable组件来声明它?

3 个答案:

答案 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得知此特定的转换消息组件正在设置多个变量:

enter image description here

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

希望获得帮助。