基于Header属性的Mule选择节点表达式

时间:2012-10-09 22:07:59

标签: expression mule choice

如何使用选择节点根据消息中的标题属性在mule中路由消息?

我的消息有两个标题:prop1和prop2。

当我尝试使用此表达式进行路由时:

    <when expression="INBOUND:prop1=abc evaluator="header">

它有效。

但是当我尝试这个时:

    <when expression="INBOUND:prop1=abc and prop2=123" evaluator="headers">

它不起作用。我的意思是,即使我在消息中正确设置了标题属性,也会转到“其他”流程。

任何想法都会受到很多赞赏!

谢谢你!

2 个答案:

答案 0 :(得分:4)

假设Mule 3.3.x并且两个属性都是字符串:

<when expression="#[message.inboundProperties.?prop1 == 'abc' and message.inboundProperties.?prop2 == '123']">

请注意,这是无效的,即prop1prop2不需要在那里。

答案 1 :(得分:2)

标头评估器不是为处理复杂表达式而设计的(即它不支持逻辑运算符)

从你的sintax我假设你正在使用mule版本&lt; 3.3.0所以基于MEL的示例可能不太适合您的需求,尽管您应该在升级后立即采用这种方法。

在较旧的mule版本中,最好的方法可能是使用groovy表达式求值程序,when条件看起来如下

<when expression="#[groovy:message.getInboundProperty('prop1') == 'abc' && message.getInboundProperty('prop2') == '123']">