我很新WSO2 ESB我对如何在我的ESB项目中实现“if(){...} else {...}”类似结构存在以下疑问。我用什么表达式来执行与WSO2 ESB过滤器介体中属性值相关的选择?
在其中,我的工作我有这个 物业中介接着是 日志中介的应用程序,只需打印该属性的值的输入流所以,这样的事情:
<property expression="count(//ds:Sample)" name="total_samples" scope="default" type="STRING" xmlns:ds="http://ws.wso2.org/dataservice"/>
<log level="custom">
<property expression="$ctx:total_samples" name="total samples: "/>
</log>
这工作正常。
This total_samples property包含从以前的DSS服务调用中获得的记录数(我没有放在代码中)。
所以这total_samples的价值属性可以是:
- :如果通过DSS服务实现的查询返回0的记录。
- 数值> 0:如果此查询返回了一些记录。
现在我需要在这个时候做的仅仅是链上的“如果(){...}否则{...}”结构不同的打印日志消息如果total_samples财产值为或其他数字> 0。
这应该是一个版本简单的任务,但我对如何实现它的一些疑惑:
FIRST的疑问:展望上的联机文档,在我看来存在2调解员,可用于执行选择在WSB流程中:开关介体和过滤器介体。他们在我看来非常相似。这些调解员有什么区别?我的目的是什么更好?
SECOND的疑问:在我看来,这些调解员只能在XPATH表达(类似计数(// DS:样品)),他们可以直接在我的财产的工作(类似“ $ ctx:total_samples“)?
第三的疑问:在这个阶段,我在流动中实现这样的事情:
<property expression="count(//ds:Sample)" name="total_samples" scope="default" type="STRING" xmlns:ds="http://ws.wso2.org/dataservice"/>
<log level="custom">
<property expression="$ctx:total_samples" name="total samples: "/>
</log>
<filter xpath="EXPRESSION THAT DO SOMETHING LIKE: $ctx:total_samples == 0">
<then>
<log description="No Resource Log">
<property name="message" value=""EMPTY RESULTSET, NO RESOURCES TO PROCESS""/>
</log>
</then>
<else>
<log description="Found Resource Log">
<property name="message" value=""Resources have been found, will be processed""/>
</log>
</else>
</filter>
好了,所以我的问题是:什么是我所为表达式中使用的情况下,如果进入$ ctx:total_samples value is in the following line?
<filter xpath="EXPRESSION THAT DO SOMETHING LIKE: $ctx:total_samples == 0">