2013-02-22 170 views
0

我对骡子中的变量有几点疑问。需要澄清骡子中的变量

  1. 如果我有像下面的有效载荷,

什么是访问Groovy脚本这里面信息的最佳方式? #[载荷]似乎不工作...

<scripting:script engine="Groovy"> 
... 
qr.update(conn, "INSERT INTO event values(#[payload], 1)"); 
.. 
</scripting:script> 
  1. 如何存储值从一个特定的点出来的流动,我可以在以后的任何一点使用一个变量时间。

  2. 如果我有一个字符串类型的有效载荷,并且如果我需要使用自定义Java类来解析字符串(以获取各种数据)。如何从java类返回值。

对于实施例I有一个字符串如下,

SNO   :1 
Application : a 

我有解析字符串并返回使用得到集方法的价值的Java类。

CustomString.class只是一个bean。

getSno将返回序列号。 getApplication将返回应用程序名称

我不知道如何将值从mule传递给java类并取回值为mule。

我需要使用,

public Object transform(MuleMessage message, String encoding) throws TransformerException 

如果低于初始有效载荷具有上述字符串,可我就是通过这个有效载荷定制变压器并获得所需的值从变压器后面?

<set-payload value="values #[payload]" doc:name="Set Payload" /> 
<transformer ref="customTransformer" doc:name="Transform string"/> 
<set-payload value="values #[payload['sNo']]" doc:name="Set Payload" /> 

回答

1
  1. 在Groovy中,所述​​变量绑定到消息有效载荷。你可以直接使用它。 #[payload]是MEL表达式,与Groovy无关。

  2. 这取决于你的意思是“任何时间点”。如果它处于相同的流量或由其引用的流量,则可以使用set-variable。如果它在端点交互(出站→入站)后处于另一个流程中,请使用set-property,您将在下一个流程中找到入站范围中的值。或者,您可以使用set-session-variable将值存储在Mule会话中,该值将在流量中维护。

  3. 要么像上面显示的那样创建一个变压器,要么只是使用普通的POJO作为一个带有String并返回Bean的单一方法的component。后一种方法的优点是它不会将您与Mule API联系起来。