I just realized that when I define a variable in my groovy script component Mule (3.4) overwrites the message payload with this variable.
def variable = "bar";
After the flow reaches a Groovy Component with this code, the payload is changed to "bar".
How can I prevent this behaviour?
To place the Groovy Component inside an enricher seems to be a solution, but the enricher is kind of a "transport barrier" and I have to update manually every single flow variable and session variable I change in the Component. This is error prone.
complete flow code:
<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>