WSO2 Filter Proxy 布尔表达式求值器问题
WSO2 Filter Proxy Boolean Expression evaluator issue
在我的代理中,我使用的是过滤器调解器。我的目标是在某些属性的某些条件得到验证时激活序列:
抄本 = 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。
我错过了什么?
这是因为当没有值时,//tipoElementoCross return 节点而不是文本值 :
发送<tipoElementoCross></tipoElementoCross>
//tipoElementoCross = <tipoElementoCross></tipoElementoCross>
//tipoElementoCross/text() =
在我的代理中,我使用的是过滤器调解器。我的目标是在某些属性的某些条件得到验证时激活序列:
抄本 = 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。
我错过了什么?
这是因为当没有值时,//tipoElementoCross return 节点而不是文本值 :
发送<tipoElementoCross></tipoElementoCross>
//tipoElementoCross = <tipoElementoCross></tipoElementoCross>
//tipoElementoCross/text() =