2013-03-20 2 views
1

В моем потоке у меня есть мыльный клиент, вызывающий услугу. Поскольку мы используем 3 различных операции из службы, я бы хотел динамически заполнить поле «Операция» в разделе «Атрибуты клиента» в компоненте мыла Mule. Я так он работает прямо сейчас:mule динамически настраиваемая мыльная операция

start flow -> message transformation -> choice flow control (based on the message type) 
choice 1. sub flow A -> soap client with operation A 
choice 2. sub flow B -> soap client with operation B 
choice 3. sub flow C -> soap client with operation C 

То, что я хотел бы, чтобы динамически во время выполнения установите в поле «Операция» на основании сообщения, а не три разных подпотоки.

start flow -> message transformation -> set the operation field -> soap client with the correct operation 

Возможно ли это? Использование Mule CE 3.3.1. Заранее спасибо.

+0

Что вы подразумеваете под словом «Mule soap»? Это 'cxf: jaxws-client'? –

+0

Да, точно. Я хочу изменить атрибут операции cxf: jaxws-client во время выполнения, так как мы имеем 3 разных операции от одной и той же службы. – techRunner

ответ

2

Для достижения своей цели:

  • Удалить атрибут operation из cxf:jaxws-client элемента,
  • Добавить установить операцию, исходящую свойству сообщения до cxf:jaxws-client элемента с:

    <set-property propertyName="operation" value="#[...]" /> 
    

    где #[...] представляет собой выражение MEL, которое извлекает из сообщения имя операции.

+0

Спасибо, Дэвид, работает как шарм. Я установил свойство операции в заголовке на основе типа сообщения, а затем, как вам было рекомендовано, извлек с помощью MEL значение операции и установил его следующим образом: «<свойство-свойство-свойство» = значение «значение =» # [заголовок: INVOCATION: cxf_ops] "doc: name =" extractOps "/> 'Теперь у меня есть только один подпоток, который выполняет все три операции, отлично, спасибо снова. – techRunner

+0

Рад, что это работает! Предложение: используйте MEL вместо синтаксиса старого стиля/устаревшего выражения, то есть: '' –

+0

Yup, хорошее предложение. Я изменю его и проверю. Спасибо. – techRunner

Смежные вопросы