如何使用Mule表达式语言检查属性是否存在于值中

时间:2015-02-19 11:54:03

标签: regex xpath mule mule-studio mule-el

我想根据'groupmembership'标题属性检查登录用户的授权。

的输出
<logger level="INFO" message="groups are =#[message.inboundProperties['GROUPMEMBERSHIP']]" doc:name="Logger"/> is
[groups are =cn=ZZZ-XXXX-Write-Users,ou= ZZZ-XXXX,ou=1234,ou=Groups,dc=someone,dc=net]

现在用户可以拥有多个群组成员资格,但我有兴趣检查用户是否是“ZZZ-XXXX-Write-Users”的成员?

MEL中是否有办法检查,例如 <when expression="#[message.inboundProperties.GROUPMEMBERSHIP.cn != ' ZZZ-XXXX-Write-Users ']">

这是正确的做法还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

您描述的场景看起来更像是流量控制的东西。 在这种情况下,我会说你只在选择路由器中使用MEL表达式:

<choice doc:name="Choice">
  <when expression="#[!message.inboundProperties.GROUPMEMBERSHIP.cn.equals('ZZZ-XXXX-Write-Users')]">
    <!-- DO SOMETHING -->
  </when
  <otherwise>
   <!-- DO SOMETHING ELSE -->
  </otherwise>
</choice>

使用equals来比较字符串只是一个小小的变化;)。

另一个选项,就像我们在这里谈论流量控制一样,是一个过滤器。 如果表达式未计算为true,则表达式过滤器将忽略该消息。对此的看法是,无论是否通过,您都无法使用备用路由,甚至没有日志消息说消息已被过滤。

    <expression-filter expression="#[!message.inboundProperties.GROUPMEMBERSHIP.cn.equals('ZZZ-XXXX-Write-Users')]" doc:name="Expression"/>

HTH