2013-03-05 7 views
2

Я использую MULE версии 3.3.0 CE, я хочу получить некоторое значение из заголовка во входящем, а затем передать его в java-метод, в java-методе, который внесет некоторые изменения в переданное значение, наконец, я передаю его из java-метода в исходящий ????ESB MULE передаёт параметры java-методу

ответ

7

Вместо того, чтобы завязывать Java Beans к Mule API (с Callable), вы можете сделать это, используя MEL только, например, с помощью:

<invoke object-ref="yourBean" 
     method="yourMethod" 
     methodArguments="#[message.inboundProperties['inboundPropertyName']]" /> 

<set-property propertyName="outboundPropertyName" 
       value="#[payload]" /> 

Это предостережение, что полезная нагрузка сообщение является затронутый элементом invoke. Если это проблема, вы можете пойти:

<expression-component> 
    propVal = app.registry.yourBean.yourMethod(message.inboundProperties['inboundPropertyName']); 
    message.outboundProperties['outboundPropertyName'] = propVal; 
</expression-component> 
+0

Во второй форме: flowVars/InvocationProperties рассматриваются как входящие, исходящие или что-то еще? – mmeyer

+0

Что-то еще: они являются переменными потока, то есть доступны на карте 'flowVars' и, если вы не деактивировали эту функцию, как глобальные переменные сценария MEL. –

3
  1. Сделайте свой компонент Java реализовать org.mule.api.lifecycle.Callable
  2. В своей OnCall вы можете получить сообщение выглядит следующим образом:

    MuleMessage сообщение = eventContext.getMessage();

  3. Теперь вы можете получить входящие свойства:

    Объект someProp = message.getInboundProperty ("some_prop_name");

  4. После эксплуатации над ним, вы поместите его обратно в качестве исходящего имущества:

    message.setOutboundProperty ("some_prop_name", someProp);

+0

благодарит за ваш ответ. :) Можете ли вы больше объяснить об этом? сначала я установил переменную в файл .mflow, а затем в класс java вызывающе получим это? – brelian