我正在运行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和表达变换器,但无法想出那个。
此致
答案 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 == "a"]">
<custom-transformer ../>
</when>
<when expression="#[payload.Warehouse == "b"]">
<custom-transformer ../>
</when>
</choice>
希望这有帮助。