Получить значение из defaultMuleMessage

Я пытаюсь извлечь значение из типа данных defaultMuleMessage, но не могу получить правильный синтаксис в Mule 3.7.3. Кто-нибудь может помочь?

Значение, которое я пытаюсь получить, находится на вкладке переменных в отладчике Mule:

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

В 7 ключ = организация

Если я наберу "initialMessage" в отладчике, я получаю следующее:

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
}

Я пытаюсь получить значение «organization = abc».

Спасибо


person user3165854    schedule 02.12.2016    source источник


Ответы (4)


Поскольку переменная initialMessage находится в области действия INVOCATION, попробуйте следующее:

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

ОБНОВИТЬ:

#[message] имеет тип MessageContext, поэтому вы не можете напрямую получить свойства Invocation (только из MuleMessage). Выражение выше не будет работать.

ОБНОВЛЕНИЕ2:

Попробуйте следующее #[flowVars.initialMessage.getInboundProperty('organization')]

person Nuno    schedule 05.12.2016

Если вы хотите получить входящее свойство (например, с именем organization) из сообщения mule с помощью MEL, вам просто нужно:

#[message.inboundProperties.'organization']
person Franek    schedule 02.12.2016
comment
Спасибо за ответ. Поток мула, на который я смотрю, не имеет никаких входящих свойств в момент, когда мне нужно ссылаться на организацию, и похоже, что они сохранили их в переменной с именем initialMessage, поэтому необходимо выяснить, как я мог бы написать выражение MEL для извлечения значения в структуре выше. Я пробовал получить и пройти через переменную initialMessage, но без особого успеха - person user3165854; 02.12.2016

Из того, что я мог узнать из вопроса и комментариев к предыдущему ответу.

Вы хотите получить входящее свойство от MuleMessage, которое само доступно как свойство в сообщении вашего потока.

Попробуйте следующее решение.

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

Надеюсь это поможет.

person user1760178    schedule 02.12.2016

попробуйте сделать вот так: # [message.inboundProperties.organization]

person vasanth2035    schedule 05.12.2016