是否可以使用MEL来创建动态变量名称或其他名称?

时间:2014-07-21 21:18:41

标签: mule

我有一个变量名="一个#[ticket]"值=" 0"

名称为a123456789,值为0

但是,如果我只打印一个#[票证],如何访问此值我将拥有a123456789,我需要的是#[a123456789]所以它会给我0。

到目前为止的代码:

<set-session-variable variableName="ticketId" value="a#[message.inboundProperties['ticket']]" doc:name="Variable"/>
<set-session-variable variableName="#[ticketId]" value="0" doc:name="Variable"/>

<logger message="#[#[ticketId]]" level="INFO" doc:name="messageID2"/>

并且最后一行会失败,但我不知道如何调用该动态变量...

- &gt; mule version 3.4

2 个答案:

答案 0 :(得分:1)

您应该能够执行以下操作:

<expression-component>t=message.inboundProperties['ticket'];flowVars['a'+t]='0'</expression-component>

设置一个以&#34; a&#34;的串联命名的flow-var。以及&#34;票的价值&#34;入境财产。

要阅读它,请使用:

#[t=message.inboundProperties['ticket'];flowVars['a'+t]]

请注意,如果您使用以下内容复制flowVar中的ticket入站属性:

<set-variable variableName="ticket" value="#[message.inboundProperties['ticket']]" />

然后分配的语法变为:

<expression-component>flowVars['a'+ticket]='0'</expression-component>

并阅读:

#[flowVars['a'+ticket]]

答案 1 :(得分:0)

要设置动态变量名称并将其与表达式或记录器一起使用,您需要执行以下操作:

<set-session-variable variableName="a#[message.inboundProperties['ticket']]" value="0" doc:name="Variable"/>

这将根据INBOUND消息中发送的票证为变量设置动态名称

他们使用脚本将其放在msgId:

    <scripting:component doc:name="Groovy">
        <scripting:script engine="Groovy">
            def String ticket = 'a' + message.getProperty('ticket', org.mule.api.transport.PropertyScope.INBOUND);
            return ["msgId":this[ticket]]
        </scripting:script>
    </scripting:component>

这样我可以访问变量值:

<logger message="#[msgId]" level="INFO" doc:name="variableValue"/>
相关问题