Java Mule:防止groovy组件覆盖有效负载

Java Mule:防止groovy组件覆盖有效负载,java,groovy,mule,Java,Groovy,Mule,我刚刚意识到,当我在groovy脚本组件Mule(3.4)中定义一个变量时,它会用这个变量覆盖消息负载 def variable = "bar"; 在流到达带有此代码的Groovy组件后,有效负载将更改为“bar” 我如何防止这种行为 将Groovy组件放在enricher中似乎是一个解决方案,但enricher是一种“传输屏障”,我必须手动更新组件中更改的每个流变量和会话变量。这很容易出错 完整流程代码: <flow name="test-groovyFlow" doc:name="t

我刚刚意识到,当我在groovy脚本组件Mule(3.4)中定义一个变量时,它会用这个变量覆盖消息负载

def variable = "bar";
在流到达带有此代码的Groovy组件后,有效负载将更改为“bar”

我如何防止这种行为

将Groovy组件放在enricher中似乎是一个解决方案,但enricher是一种“传输屏障”,我必须手动更新组件中更改的每个流变量和会话变量。这很容易出错

完整流程代码:

<flow name="test-groovyFlow" doc:name="test-groovyFlow">
    <http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="8081" doc:name="HTTP" path="test_groovy"/>
    <set-payload value="foo" doc:name="payload = foo"/>
    <scripting:component doc:name="do something">
        <scripting:script engine="Groovy"><![CDATA[
           def variable = "bar";
        ]]></scripting:script>
    </scripting:component>
    <scripting:transformer doc:name="Create Response">
        <scripting:script engine="Groovy"><![CDATA[
          new java.lang.String(
               "payload: " + message.payload + "\n"
          )
        ]]></scripting:script>
    </scripting:transformer>
</flow>

添加
返回有效负载
返回消息
(取决于您是否希望让消息或有效负载通过Groovy脚本)作为脚本的最后一行

您看到的行为是因为赋值结果作为脚本的返回结果