我有一个变量名="一个#[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
答案 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"/>