骡子 - 路线取决于json有效载荷

时间:2016-09-04 09:02:39

标签: mule anypoint-studio

我正在运行Mule CE 3.8,需要根据JSON有效负载中的值来路由我的消息。 我从REST端点获取了一个JSON列表,该端点通过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和表达变换器,但无法想出那个。

此致

1 个答案:

答案 0 :(得分:2)

您可以在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>

希望这有帮助。