wso2 ESB фильтр проверяет ноль для get-свойства - PullRequest
0 голосов
/ 04 июля 2018

Я хочу проверить, является ли свойство нулевым в условии фильтра .. оно может не существовать в контексте или может быть также нулевым. Я хочу охватить оба случая. Как я могу написать выражение фильтра что-то вроде ниже, я пытался, но не работает

Как правильно достичь этого?

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Используйте приведенный ниже фрагмент кода

    <api xmlns="http://ws.apache.org/ns/synapse" name="TestFilter" context="/test1">
   <resource methods="POST" url-mapping="/filter">
      <inSequence>
         <filter xpath="$body//*[local-name()='FilterCondition']/text()">
            <then>
               <log>
                  <property name="ThenCondition" expression="."/>
               </log>
            </then>
            <else>
               <log>
                  <property name="ElseCondition" expression="."/>
               </log>
            </else>
         </filter>
      </inSequence>
   </resource>
</api>

Попробуйте с примером XML

 <Check>
<FilterCondition>123</FilterCondition>

</Check>

Итак, ваш тестовый пример должен быть таким, как показано ниже

1: Используйте тот же XML, поток должен перейти к then condition. 2: передать пустое значение в FilterCondition, как <FilterCondition/>, это должно перейти в другое условие. 3: удалите тег FilterCondition и просто передайте

<Check></Check>

, это снова должно перейти в другое состояние

0 голосов
/ 25 декабря 2018

Вы можете использовать:

                <property
                expression="$body//*[local-name()='Address']/text()"
                name="Address" scope="default" type="STRING"/>

и после:

        <filter regex="Tehran" source="get-property('Address')" xmlns:ns="http://org.apache.synapse/xsd">
        <then/>
        <else>
            <log/>
            <send/>
        </else>
    </filter>
0 голосов
/ 04 июля 2018

Вы можете проверить наличие свойства с помощью логической функции XPath, как показано ниже

<filter source="boolean(get-property('yourProperty'))" regex="false">
    <then>
           <!-- NULL OR NON EXIST -->
    </then>
    <else>
           <!-- EXIST -->
    </else>
</filter>
...