Получение входящих свойств сообщения ESB Mule с помощью Groovy

У меня есть Groovy Transformer компонент, который должен получить входящие свойства и установить его в переменные потока, как показано ниже.

if(message.inboundProperties.'http.query.params'.Brand != null){
    flowVars ['Brand'] = message.inboundProperties.'http.query.params'.Brand
}
return payload;

Но я получаю ниже указанной ошибки. Кажется, входящие свойства не входят в рамки Groovy. Подскажите, пожалуйста, как получить доступ к входящим свойствам в Groovy.

Примечание: я не хочу изменять полезную нагрузку. Моя цель заключается в создании потоковых переменных на основе запросов.

Часть ошибки:

No such property: inboundProperties for class: org.mule.DefaultMuleMessage (groovy.lang.MissingPropertyException)
  org.codehaus.groovy.runtime.ScriptBytecodeAdapter:51 (null)

3 ответа

Решение

Я не вижу getInboundProperties() метод наDefaultMuleMessage

Я предполагаю, что вы хотите:

if(message.getInboundProperty('http.query.params')?.Brand){
    flowVars ['Brand'] = message.getInboundProperty('http.query.params').Brand
}

Используйте message.getInboundProperty.

def brand = message.getInboundProperty('http.query.params').Brand
if (brand != null){
    flowVars ['Brand'] = brand
}
return payload;

У вас есть два варианта установки переменной из входящих свойств:

  1. Замените шпунтовый компонент на MEL, замените <scripting:component doc:name="Groovy"> с <expression-component doc:name="Expression">
  2. Продолжайте использовать Groovy компонент, затем измените существующий код

    if(message.getInboundProperty('http.query.params').get('Brand') != null) {
    flowVars ['Brand'] = message.getInboundProperty('http.query.params').get('Brand');
    }
    return payload;
    
Другие вопросы по тегам