WSO2过滤器代理布尔表达式求值程序问题

时间:2015-06-26 15:12:04

标签: proxy wso2 conditional wso2esb mediator

在我的代理中我使用了过滤器中介。我的目标是在验证某些属性的某些条件时激活序列:

codice = 0 idElementoCross与null或空字符串不同或是否存在 tipoElementoCross与null或空字符串不同或是否存在

我写了这个条件:

 <sequence>
     <property name="codice" expression="//codice"></property>
     <property name="idElementoCross" expression="//idElementoCross"></property>
     <property name="tipoElementoCross" expression="//tipoElementoCross"></property>
     <filter xpath="boolean(fn:get-property('codice')=0 and fn:get-property('tipoRisposta')='worker' and fn:get-property('tipoElementoCross')!='null' and fn:get-property('idElementoCross')!='null' and fn:get-property('tipoElementoCross')!='' and fn:get-property('idElementoCross')!='' and fn:get-property('tipoElementoCross') and fn:get-property('idElementoCross'))">
                 <then> ...

但在我的日志中,我看到即使idElementoCross和tipoElementoCross为空,esb也会输入序列。 我正在使用WSO2 ESB 4.8.1。

我缺少什么?

1 个答案:

答案 0 :(得分:2)

这是因为当没有值时,// tipoElementoCross返回节点而不是文本值:

发送<tipoElementoCross></tipoElementoCross>

// tipoElementoCross = <tipoElementoCross></tipoElementoCross>

// tipoElementoCross / text() =