WSO2 ESB 4.8.1 Switch Mediator案例匹配不起作用

时间:2015-07-07 12:32:26

标签: regex wso2 wso2esb

我正在使用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不认为它是一个有效的表达式。或者是否有任何其他方法来检查输入请求中是否存在字段,然后特定的开关案例应该有效,否则不会。

1 个答案:

答案 0 :(得分:2)

您的正则表达式缺少quantifier +含义 1次或更多次出现

<case regex="[a-zA-Z0-9]+">