Mule ESB
我正在尝试将Hello World程序转换为接受JSON对象的程序,检查数据并相应地路由执行。
以下是我的流程副本:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" version="EE-3.5.0" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<json:object-to-json-transformer name="Object_to_JSON" doc:name="Object to JSON"/>
<flow doc:name="HelloWorldFlow1" name="HelloWorldFlow1">
<http:inbound-endpoint doc:description="This endpoint receives an HTTP message." doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081" contentType="application/json"/>
<echo-component doc:name="Echo"/>
</flow>
</mule>
我在代码中看到了object-to-json,我相信它是从 HTTP节点 - &gt; HTTP设置 - &gt;内容类型,设置为
application/json
所以我假设传入的对象在流中只有一次JSON格式,不需要其他对象到JSON节点。
我将以下字符串发送到流程:
{ "uid" : "ABCxxx" }
我想要实现的目标是获取一个节点,该节点将检查并验证uid的前三个字母是&#34; ABC&#34;,如果是,则将其发送到一条路径,但如果前三条uid的字符不等于&#34; ABC&#34;,沿着另一条路走下去。有点像带有true和false配置的IF语句,
以下是伪代码示例
IF uid[3] == "ABC"
GOTO Database Connector
else
GOTO JSON-TO-OBJECT Transformer
我的问题是:我应该使用哪个节点来执行此操作,我应该使用表达式过滤器还是其他
...我如何在JSAONPath(或其他)
中编写它(Mule ESB会执行此类操作吗?)
答案 0 :(得分:2)
在mule中执行JsonPath的json评估程序已弃用,以支持MEL。现在首选的方法是将json转换为对象并查询对象。最简单的方法之一是将json转换为地图并使用MEL查询地图。像这样:
<json:json-to-object-transformer returnClass="java.util.HashMap" />
<choice>
<when expression="#[payload.uid == 'ABC']">
</when>
</choice>
此处有更多信息:http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+Tips
答案 1 :(得分:0)
您也可以选择<json:json-to-object-transformer returnClass="java.lang.Object" />
然后
<choice>
<when expression="#[message.payload.uid == 'ABC']">