如何使用Groovy在Mule中设置消息属性?

时间:2013-11-21 01:18:31

标签: mule mule-studio

如何使用Groovy在Mule中设置消息属性?

我需要在Groovy Scripting Component中设置message属性。关于该主题的文档似乎不容易找到。

4 个答案:

答案 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>

享受。 :)