WSO2 ESB 4.8.1 Switch Mediator Case 匹配不起作用
WSO2 ESB 4.8.1 Switch Mediator Case matching not working
我正在使用 WSO2 ESB 4.8.1。我需要检查传入有效负载中是否存在特定字段 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 能够从 属性 中选取一个值,但它与大小写正则表达式不匹配。以下是一些 ESB 日志条目:
日志条目:
XPath : get-property('CheckIdExist') evaluates to : 20001089900
None of the switch cases matched - executing default
网上查了一下,这个正则表达式可以。所以我无法理解的是为什么 WSO2 ESB 没有将其识别为有效表达式。或者是否有任何其他方法来检查输入请求中是否存在某个字段,那么特定的 switch case 应该工作,否则不工作。
您的正则表达式缺少 quantifier +
表示 1 次或多次出现:
<case regex="[a-zA-Z0-9]+">
我正在使用 WSO2 ESB 4.8.1。我需要检查传入有效负载中是否存在特定字段 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 能够从 属性 中选取一个值,但它与大小写正则表达式不匹配。以下是一些 ESB 日志条目:
日志条目:
XPath : get-property('CheckIdExist') evaluates to : 20001089900
None of the switch cases matched - executing default
网上查了一下,这个正则表达式可以。所以我无法理解的是为什么 WSO2 ESB 没有将其识别为有效表达式。或者是否有任何其他方法来检查输入请求中是否存在某个字段,那么特定的 switch case 应该工作,否则不工作。
您的正则表达式缺少 quantifier +
表示 1 次或多次出现:
<case regex="[a-zA-Z0-9]+">