java代码中的访问流变量mule

时间:2013-08-22 20:54:08

标签: scope mule mule-studio

我在变量中存储了一些信息,但我不知道如何在我的java代码中访问它...

示例:

<sub-flow name="EnrichMessage" doc:name="EnrichMessage">
    <component doc:name="Scenario01" class="Class01"/>
    <set-variable variableName="Parameters" value="#[payload]" doc:name="Variable"/>
    <flow-ref name="SubFlow01" doc:name="SubFlow01"/>
    <component doc:name="Scenario02" class="Class02"/>
</sub-flow>

我已经看到了一些不完整的答案,但仍然不知道该怎么做。任何人都可以发表完整的答案吗?

感谢。

2 个答案:

答案 0 :(得分:2)

在java中,根据您使用的java类的类型,有几种方法可以访问变量:

onCall事件类

 public Object onCall(MuleEventContext eventContext, @Payload String payload)
 throws Exception {
    String returnPath = eventContext.getMessage().getProperty("myReturnPath", PropertyScope.OUTBOUND);

如果传递了MuleMessage:

 public void process(@Payload MuleMessage payload ){
 String returnPath = messge.getProperty("myReturnPath", PropertyScope.OUTBOUND);

使用OutboundHeader注释

  public void process(@Payload String payload, @OutboundHeaders Map headers ){
    String prop = headers.get("propname");

答案 1 :(得分:1)

向您的流添加新的Java组件并创建新的Java类实现Callable接口。

public Object onCall(MuleEventContext eventContext) throws Exception {
    MuleMessage msg = eventContext.getMessage();

    // you can access MuleMessage here

    return msg;
}

然后,您可以访问您的MuleMessage。

String method = msg.getProperty("http.method", PropertyScope.INBOUND);        

如果您想添加新属性

msg.setProperty("foo", "bar", PropertyScope.INVOCATION);