Filter 如何在wso2 esb中比较筛选器中介中的整数属性?
我是wso2 esb的新手,定义了3个返回整数值的服务,并使用筛选器中介从一个路由到另一个,但工作不正确,并且在筛选器模式下总是返回false 我的消息来源是:Filter 如何在wso2 esb中比较筛选器中介中的整数属性?,filter,wso2,esb,mediator,Filter,Wso2,Esb,Mediator,我是wso2 esb的新手,定义了3个返回整数值的服务,并使用筛选器中介从一个路由到另一个,但工作不正确,并且在筛选器模式下总是返回false 我的消息来源是: <sequence xmlns="http://ws.apache.org/ns/synapse" name="SeqOne"> <log level="full"/> <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:m0="http://t
<sequence xmlns="http://ws.apache.org/ns/synapse" name="SeqOne">
<log level="full"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:m0="http://tempuri.org/" name="CParam" expression="//m0:SumSerViseResponse/m0:SumSerViseResult" scope="default" type="INTEGER"/>
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="CParam" expression="$ctx:CParam"/>
</log>
<property name="propertyA" value="4" scope="default" type="INTEGER"/>
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="propertyA" expression="get-property('propertyA')"/>
</log>
<property xmlns:ns="http://org.apache.synapse/xsd" name="propertyCompare" expression="$ctx:CParam > get-property('propertyA')" type="STRING"/>
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="propertyCompare" expression="get-property('propertyCompare')"/>
</log>
<filter xmlns:ns="http://org.apache.synapse/xsd" source="get-property('propertyCompare')" regex="true">
<then>
以下是使用switch mediator完成的示例
<switch source="get-property('propertyCompare')">
<case regex="1">
<log>
<property name="one" value="__________ONE__________"/>
</log>
</case>
<case regex="2">
<log>
<property name="two" value="__________TWO__________"/>
</log>
</case>
</switch>
根据您的需要,将日志中介替换为发送中介。我尝试了您的方案,得到了与您相同的输出。然后深入研究它,因为这是一个基本功能,我认为我以前也做过类似的事情 这里的问题在于财产的类型。出于某种奇怪的原因,
INTEGER
在这里不起作用。您需要有双精度
或字符串
。即使您有字符串,它也会在您进行比较时正确地对其进行强制转换,如这里所示。以下几点对我有用
<inSequence>
<log level="full"/>
<property xmlns:m0="http://tempuri.org/"
name="CParam"
expression="//m0:SumSerViseResponse/m0:SumSerViseResult"
scope="default"
type="DOUBLE"/>
<log level="custom">
<property name="CParam" expression="$ctx:CParam"/>
</log>
<property name="propertyA" value="4.0" scope="default" type="DOUBLE"/>
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd"
name="propertyA"
expression="get-property('propertyA')"/>
</log>
<property name="propertyCompare"
expression="$ctx:CParam > get-property('propertyA')"
scope="default"
type="BOOLEAN"/>
<log level="custom">
<property name="propertyCompare" expression="get-property('propertyCompare')"/>
</log>
<filter xpath="$ctx:CParam > get-property('propertyA')">
<then>
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
</then>
<else>
<drop/>
</else>
</filter>
</inSequence>
此错误发生在过滤器接收之前。不动产公司