Choice Router Expression Mule - PullRequest
       9

Choice Router Expression Mule

0 голосов
/ 22 октября 2018

Я создаю API, к которому отправляю запрос json, как показано ниже:

{
  "type":"string",
  "code": 101
}

Я использую маршрутизатор выбора и маршрутизирую сообщение на основе кода.т. е. если код не 101 и 100, то когда условие будет выполнено. Когда выражение - #[json:code != 101 && json:code != 100], но даже если код 103, приведенное выше выражение возвращает значение true.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Используйте преобразователь Json to Object перед использованием полезной нагрузки JSON

Используйте (и, или) вместо (&&, ||) для логических операторов в муле: DataWeaveLogicalOperators

xml config code,

<json:json-to-object-transformer returnClass="java.util.Map" doc:name="json to obj"/>
<choice doc:name="Choice">
    <when expression="#[payload.code != 101 and payload.code != 100]">
        <logger level="INFO" doc:name="logger"/>
    </when>
    <otherwise>
        <logger level="INFO" doc:name="default"/>
    </otherwise>
</choice>
0 голосов
/ 22 октября 2018

Я предполагаю, что ваш комментарий "код в двойных кавычках" означает, что полезная нагрузка выглядит следующим образом:

{
  "type": "string",
  "code": "100"
}

Если это так, я бы порекомендовал вам преобразовать его в Java и работать оттуда.Если код является строкой, вы должны указать это как 100 != '100':

<json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<choice doc:name="Choice - Code?">
    <when expression="#[payload.code != '101' &amp;&amp; payload.code != '100']">
        <logger level="INFO" doc:name="Logger - Do this"/>
    </when>
    <otherwise>
        <logger level="INFO" doc:name="Logger - Do that"/>
    </otherwise>
</choice>
...