WSO2筛选器代理布尔表达式计算器问题



在我的代理中,我使用了一个过滤中介。我的目标是,如果某些属性的某些条件得到验证,则激活序列:

codice=0idElementoCross不同于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> ...

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

我错过了什么?

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

发送<tipoElementoCross></tipoElementoCross>

//tipoElementoCros=<tipoElementoCross></tipoElementoCross>

//tipoElementoCros/text()=

最新更新