2016-12-02 3 views
0

Ich versuche, einen Wert aus dem defaultMuleMessage-Datentyp zu extrahieren, kann aber nicht die korrekte Syntax in Mule 3.7.3 erhalten. Kann jemand helfen?Wert von defaultMuleMessage erhalten

Der Wert I zu bekommen versuchen zu wird in der Variablen Registerkarte im Mule Debugger gefunden:

initialMessage (org.mule.DefaultMuleMessage) 
-> properties (org.mule.MessagePropertiesContext) 
--> inboundMap (org.mule.util.CopyOnWrite.CaseInsensitiveMap) 
---> 7 (java.util.Collections$UnmodifiavleMap$UnmodifiableEntrySet$UnmodifiableEntry) 

Bei 7 ist der Schlüssel = Organisation

Wenn ich "initialMessage" in die Debugger Typ Ich erhalte dies:

org.mule.DefaultMuleMessage 
{ 
    id=6980b240-b882-11e6-85f7-d26120524153 
    payload=java.lang.String 
    correlationId=<not set> 
    correlationGroup=-1 
    correlationSeq=-1 
    encoding=UTF-8 
    exceptionPayload=<not set> 

Message properties: 
    INVOCATION scoped properties: 
    _ApikitResponseTransformer_apikitRouterRequest=yes 
    _ApikitResponseTransformer_bestMatchRepresentation=application/json 
    _ApikitResponseTransformer_contractMimeTypes=[MimeType{type='application/json'}] 
    counter=1 
    deterministicOrchestration=true 
    initialMessage=<<<MuleMessage>>> 
    logLevel=INFO 
    maskingEnabled=true 
    messageFormat=JSON 
    messageLocation=CLIENT_REQUEST 
    mongoOperation=insert-object-from-map 
    mongoQuery={messageLocation=client_request, payload={NullPayload}} 
    mongoSynchronous=false 
    nextOrchestratedFlow=products-getProducts 
    orchestrationFlows=[products-getProducts] 
    prevResponse='' 
    INBOUND scoped properties: 
    accept=*/* 
    accept-encoding=gzip, deflate, peerdist 
    accept-language=en-GB 
    organization=abc 
    connection=Keep-Alive 
    host=localhost:8089 
    http.listener.path=/api/* 
    http.method=GET 
    http.query.params=ParameterMap{[]} 
    http.query.string= 
    http.remote.address=/127.0.0.1 
    http.request.path=/api/products 
    http.request.uri=/api/products 
    http.scheme=http 
    http.uri.params=ParameterMap{[]} 
    http.version=HTTP/1.1 
    referer=http://localhost:8089/api/console/ 
    ua-cpu=AMD64 
    user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; managedpc; rv:11.0) like Gecko 
    x-p2p-peerdist=Version=1.0 
    x-requested-with=XMLHttpRequest 
    OUTBOUND scoped properties: 
    Content-Type=text/plain;charset=UTF-8 
    MULE_ENCODING=UTF-8 
    SESSION scoped properties: 
    country=usa 
    resource=products 
} 

Ich versuche, den Wert "Organisation = abc" abzurufen.

Dank

Antwort

1

Da die initialMessage Variable im INVOCATION Scope ist, versuchen Sie Folgendes:

#[message.getInvocationProperty('initialMessage').getInboundProperty('organization')] 

UPDATE:

#[message] ist vom Typ MessageContext, daher können Sie die Aufrufeigenschaften nicht direkt abrufen (nur von MuleMessage). Der obige Ausdruck funktioniert nicht.

UPDATE2:

Probieren Sie die folgenden #[flowVars.initialMessage.getInboundProperty('organization')]

0

Wenn Sie Inbound-Eigenschaft erhalten möchten (zB organization genannt) von mule Nachricht mit MEL, müssen Sie nur noch auf:

#[message.inboundProperties.'organization'] 
+0

Danke für die Antwort. Der Mule-Flow, den ich betrachte, hat an der Stelle, an der ich auf die Organisation verweisen muss, keine eingehenden Eigenschaften und sieht so aus, als hätte er sie in einer Variablen mit dem Namen initialMessage gespeichert, so dass ich herausfinden muss, wie ich den MEL-Ausdruck schreiben würde in der obigen Struktur. Ich habe versucht, durch die Variable initialMessage zu bekommen und zu durchlaufen, aber mit wenig Erfolg – user3165854

0

Von dem, was ich von der Frage und die Kommentare bekommen könnte für die vorherige Antwort.

Sie suchen nach einer eingehenden Eigenschaft aus einer MuleMessage, die selbst als Eigenschaft in der Nachricht Ihres Flusses verfügbar ist.

Versuchen Sie die folgende Lösung.

#[message.inboundProperties.'initialMessage'.getInboundProperty('organization')] 

Hoffe, das hilft.

0

versuchen, wie diese bekommen, # [message.inboundProperties.organization]