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>

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

谢谢。

4

2 回答 2

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");
于 2013-08-23T10:26:33.173 回答
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);
于 2014-02-05T06:02:12.743 回答