如何使用Groovy在Mule中设置消息属性?
我需要在Groovy Scripting Component中设置message属性。关于该主题的文档似乎不容易找到。
答案 0 :(得分:11)
您可以按如下方式设置单个属性:
message.setInvocationProperty('myFlowVariable', 'value') // sets a flow variable, like <set-variable/>
message.setOutboundProperty('myProperty', 'value') // sets an outbound message property, like <set-property/>
message.setProperty('myInboundProperty', 'value', PropertyScope.INBOUND) // sets an inbound property
答案 1 :(得分:6)
在脚本编写组件中,您可以使用作为org.mule.api.MuleMessage实例的消息绑定,因此您可以使用方法org.mule.api.MuleMessage.addProperties(Map, PropertyScope)添加所需的任何属性。
答案 2 :(得分:2)
这取决于您使用的Mule EE版本(以及Groovy版本),但在最新版本的Mule(3.7.x)中,最简单的方法是:
flowVars ['name_of_variable'] = 'value'
flowVars ['name_of_variable'] = 14
对于具有Invocation
范围的变量,如果您要为Session
范围存储变量,那么:
sessionVars ['name_of_variable'] = 'value'
sessionVars ['name_of_variable'] = 14
请使用Mulesoft for Scripting中的此站点作为参考。
<强> https://docs.mulesoft.com/mule-user-guide/v/3.7/script-component-reference 强>
答案 3 :(得分:1)
以下是我弄清楚的方法:
如果缺少,为您的流程添加架构: 的xmlns:脚本= “http://www.mulesoft.org/schema/mule/scripting” http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
现在让我们使用Groovy设置会话变量'account'和自定义Foo对象:
<scripting:transformer doc:name="Script">
<scripting:script engine="groovy"><![CDATA[
com.test.Foo f = new com.test.Foo();
f.setAccountId('333');
return message.setSessionProperty('account',f);]]>
</scripting:script>
</scripting:transformer>
上面的脚本会将你的Payload变为NullPayload,因为它是一个变换器。如果这是一个问题,请尝试这样做:
<enricher target="#[sessionVars['account']]">
<scripting:transformer doc:name="Script">
<scripting:script engine="groovy"><![CDATA[
com.test.Foo f = new com.test.Foo();
f.setAccountId('333');
return f;]]>
</scripting:script>
</scripting:transformer>
</enricher>
享受。 :)