4
我剛剛意識到,當我在我的groovy腳本組件中定義一個變量時,Mule(3.4)會用此變量覆蓋消息負載。Mule:防止groovy組件覆蓋有效載荷
def variable = "bar";
使用此代碼到達Groovy組件後,有效負載將更改爲「bar」。
如何防止此行爲?
要將Groovy組件放置在一個richter中似乎是一個解決方案,但是這個richter是一種「傳輸障礙」,我必須手動更新組件中每個流變量和會話變量。這是容易出錯的。
完整流程代碼:
<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>