2014-07-18 6 views
0

뮬 ESB는 선택을 트리거 할 수 없습니다 선택 노드를 실행합니다.뮬 ESB 내가 (노드 객체에 JSON을 삽입) aJSON 객체에 동의하는 안녕하세요 흐름을 변환 '때'조건</p> <p>선택 내가 얻을 수없는 '상태

그러나 나는 '선택'조건을 실행할 수 없습니다. 나는 항상 DEFAULT 사건으로 간다. 나는 다음과 같은 조건 및 위해서 setPayload (기본 케이스) 문을 사용하여이 흐름에

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" 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 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.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"/> 
     <json:json-to-object-transformer doc:name="JSON to Object" /> 
     <choice doc:name="Choice-Determine-Route" tracking:enable-default-events="true"> 
      <when expression="#[payload.uid == &quot;\042ABC\042&quot;]"> 
       <set-payload value="#['When ABC case']" doc:name="Set Payload"/> 
      </when> 
      <otherwise> 
       <set-payload value="#['Default case, payload: ' + payload + ', payload.get(\047uid\047): ' + payload.get('uid')]" doc:name="Set Payload"/> 
      </otherwise> 
     </choice> 
    </flow> 
</mule> 

: 아래는 흐름이다 당신이 할 수

C:\curl>type input2.txt 
{ "uid" : "ABC" } 

C:\curl>curl -H "Content-Type: application/json" -i -d @input2.txt http://localh 
ost:8081 

Default case, payload: {"uid":"ABC"}, payload.get('uid'): "ABC" 

: 아래

#[payload.uid == "\042ABC\042"] 

    (Note: I used the \042 (double quote) because JSONPATH expressions will return "ABC" instead of ABC) 

#['Default case, payload: ' + payload + ', payload.get(\047uid\047): ' + payload.get('uid')] 

내 출력 'when'절을 트리거하지 않았다는 것을보십시오.

#[payload.uid == "ABC"] 

#[payload.get('uid') == "ABC"] 

#[payload.get('uid') == "\042ABC\042"] 

하지만 셋 모두에 : 그러나 위해서 setPayload는

그래서 내가 세 가지 '때'조건을 다시 세 개의 서로 다른 시간에 시도 "ABC"로 출력 payload.get ('UID')을 수행 이 경우 다음이 표시됩니다.

Default case, payload: {"uid":"ABC"}, payload.get('uid'): "ABC" 

어떻게 해결할 수 있습니까?

감사

답변

2

이 시도 : -

업데이트 : -

<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object" /> 

    <choice doc:name="Choice-Determine-Route" tracking:enable-default-events="true"> 
       <when expression="#[message.payload.uid == 'ABC']"> 
        <set-payload value="When ABC case" doc:name="Set Payload"/> 
       </when> 
       <otherwise> 
        <set-payload value="#['Default case, payload: ' + payload + ', payload.get(\047uid\047): ' + payload.get('uid')]" doc:name="Set Payload"/> 
       </otherwise> 
      </choice> 
+0

는 I는 다음의 조건을했지만, 모두 동일한 DEFAULT 종점으로 이동 : /N # [payload.get ('UID') == 'ABC'] # [payload.uid => 'ABC'] # [payload.uid == "ABC"] – user3407479

+0

를 제거하고

+0

업데이트 된 답변 확인 –

1

가 선택

<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object" /> 

전에 그리고 선택의 당신의 JSON 변압기에 대해 다음을 시도하십시오 - 표현식이 다음을 사용할 때

희망이 있습니다.