Mule — маршрут в зависимости от полезной нагрузки json

Я использую Mule CE 3.8, и мне нужно направлять сообщения в зависимости от значения полезной нагрузки JSON. Я получаю список JSON из конечной точки REST, которая проходит через JSON2ObjectList и разделитель коллекций.

    <http:request ... /> 
    <json:json-to-object-transformer returnClass="java.util.List" encoding="UTF-8" doc:name="JSON2ObjectList"/>
    <collection-splitter doc:name="Collection Splitter"/>
    <custom-transformer ../>

Теперь перед CustomTransformer и всем сопоставлением мне нужно иметь выбор маршрутизатора, который разделяет сообщения в зависимости от значения полезной нагрузки Product.Warehouse. Я думал о компоненте Java, который мог бы установить переменную потока в значение поля Warehouse, но, может быть, есть более простой способ решить эту проблему? Я изучал MEL и преобразователи выражений, но не мог понять этого.

С уважением


person elwis    schedule 04.09.2016    source источник


Ответы (1)


Вы можете поставить выбор маршрутизатора перед CustomTransformer и поставить галочку на payload.warehouse. Поскольку разделитель коллекции будет создавать ваш объект продукта. Вы можете напрямую получить доступ к его свойствам.

Что-то типа

    <json:json-to-object-transformer returnClass="java.util.List" encoding="UTF-8" doc:name="JSON2ObjectList"/>
    <collection-splitter doc:name="Collection Splitter"/>
    <choice doc:name="Choice">
        <when expression="#[payload.Warehouse == &quot;a&quot;]">
            <custom-transformer ../>
        </when>
        <when expression="#[payload.Warehouse == &quot;b&quot;]">
            <custom-transformer ../>
        </when>
    </choice>

Надеюсь это поможет.

person AnupamBhusari    schedule 04.09.2016
comment
Спасибо за ответ, я полагаю, это поможет, как только я получу правильное выражение MEL (теперь оно дает мне исключение java Nullpointer, сообщая мне, что полезная нагрузка представляет собой java.util.LinkedHashMap из разделителя коллекции) - person elwis; 05.09.2016