Получение входящих свойств сообщения 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;
У вас есть два варианта установки переменной из входящих свойств:
- Замените шпунтовый компонент на MEL, замените
<scripting:component doc:name="Groovy">
с<expression-component doc:name="Expression">
Продолжайте использовать Groovy компонент, затем измените существующий код
if(message.getInboundProperty('http.query.params').get('Brand') != null) { flowVars ['Brand'] = message.getInboundProperty('http.query.params').get('Brand'); } return payload;