在骡子流中,我需要比较输入字符串消息中的最后两个参数
2012-04-30,2012-05-30,1,5
如果param1(1) <= param2(5)
,我需要执行jms:outbound-endpoint
。
有没有标准的选择元素来做到这一点?你能提供一个例子吗?
在使用 mule 3.2.x 时,最好的选择是使用 groovy 评估器并使用如下所示的选择路由器
<when expression="#[groovy:payload.split(',')[2] <= payload.split(',')[3] ]">
<processor-chain>
<jms:outbound-endpoint queue="out" doc:name="JMS"/>
</processor-chain>
</when>
否则,如果您愿意升级到Mule 3.3.0,则可以利用新的Mule表达式语言,该语言允许在不需要时髦运算符的情况下执行相同的操作
你也可以使用splitter,在'","的基础上拆分,然后有参数的比较逻辑
你不需要为此使用 Groovy。您可以直接在有效负载上应用 split() 函数。
<when expression="#[payload.split(',')[2]<=payload.split(',')[3]]">
<processor-chain doc:name="Processor Chain">
<jms:outbound-endpoint queue="data" connector-ref="Active_MQ"doc:name="JMS"/>
</processor-chain>
</when>
除了表达式过滤器,您还可以使用选择流控制。捕获要在流变量中比较的 2 个值,并在选择流量控制的条件中使用以下表达式。
[flowVars.param1<= flowVars.param1]
在链接下方提供更多信息。
https://docs.mulesoft.com/mule-user-guide/v/3.7/choice-flow-control-reference
你可以利用新的Mule Expression Language,它允许在不需要时髦运算符的情况下做同样的事情