2013-02-22 84 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聯繫起來。