2013-08-22 83 views
4

我存储在一个变量的一些信息,但我不知道如何访问它在我的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> 

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

谢谢。

+0

展示你是如何存储在变量 –

+0

信息我刚才编辑我的职务,并把一个例子。 – gmojunior

回答

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"); 
+0

我不能只放在我的Java组件: “公共对象onCall(MuleEventContext eventContext,@Payload字符串有效载荷)” 它不起作用。我是否需要扩展任何课程? – gmojunior

+1

正如我所说,我正在寻找一个完整的答案,所以我必须实现Callable,以使用onCall方法,我必须将属性更改为PropertyScope.INVOCATION。如果您调试Mule Message(eventContext.getMessage()),您将看到消息属性,即INVOCATION,INBOUND,OUTBOUND和SESSION范围的属性。感谢您的回复。 – gmojunior

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);