0

在 mule 流中,我需要比较输入字符串消息中的最后两个参数

2012-04-30,2012-05-30,1,5

如果param1(1) <= param2(5),我需要执行jms:outbound-endpoint

是否有标准的选择元素来做到这一点?您能否提供示例。

4

5 回答 5

2

在使用 mule 3.2.x 时,您最好的选择是使用 groovy 评估器并使用如下所示的选择路由器

 <when expression="#[groovy:payload.split(',')[2] &lt;= payload.split(',')[3] ]">
      <processor-chain>
          <jms:outbound-endpoint queue="out" doc:name="JMS"/>
      </processor-chain>
 </when>

否则,如果你愿意升级到 Mule 3.3.0,你可以利用新的Mule 表达式语言,它允许在不需要 groovy 运算符的情况下做同样的事情

于 2012-07-07T11:20:20.210 回答
0

您不需要为此使用 Groovy。您可以直接在有效负载上应用 split() 函数。

<when expression="#[payload.split(',')[2]&lt;=payload.split(',')[3]]">
  <processor-chain doc:name="Processor Chain">
     <jms:outbound-endpoint queue="data" connector-ref="Active_MQ"doc:name="JMS"/>
  </processor-chain>
</when>
于 2017-06-15T12:17:22.060 回答
0

您还可以使用拆分器并在“,”的基础上进行拆分,然后对参数进行比较逻辑

于 2017-06-12T10:10:45.660 回答
0

除了表达式过滤器,您还可以使用选择流控制。捕获要在流变量中比较的 2 个值,并在选择流控制条件时使用以下表达式。

[flowVars.param1 <= flowVars.param1]

在链接下方提供更多信息。

https://docs.mulesoft.com/mule-user-guide/v/3.7/choice-flow-control-reference

于 2018-03-03T13:25:46.187 回答
-1

您可以利用新的 Mule 表达式语言,它允许在不需要 groovy 运算符的情况下做同样的事情

于 2016-02-15T16:59:51.063 回答