我正在使用WSO2 ESB 4.8.1.我需要检查Incoming Payload
XML中是否存在特定字段.如果是的话,应该运行一个Switch Case,否则它应该运行一个默认场景.我正在检查的字段将始终具有动态值,它将如下所示:
20000569899
我在ESB中写了以下逻辑:
<property name="CheckIdExist" expression="//*[local-name()='Id']" scope="default" type="STRING" description="CheckIdExist"/>
<switch source="get-property('CheckIdExist')">
<case regex="[a-zA-Z0-9]">
<sequence key="SequenceA"/>
<sequence key="SequenceB"/>
<sequence key="SequenceC"/>
</case>
<default>
<log></log>
</default>
</switch>
问题:
问题是Switch能够从属性中选择一个值,但它与Case正则表达式不匹配.以下是一些ESB日志条目:
日志条目:
XPath : get-property('CheckIdExist') evaluates to : 20001089900
None of the switch cases matched - executing default
我在线查看,这个正则表达式有效.所以我无法理解的是,为什么WSO2 ESB不认为它是一个有效的表达式.或者是否有任何其他方法来检查输入请求中是否存在字段,然后特定的开关案例应该起作用,否则不行.
最佳答案 您的正则表达式缺少
quantifier +
意味着出现1次或更多次:
<case regex="[a-zA-Z0-9]+">