2011-10-30 162 views
1

我過去的一部分複製從騾網站指南:使用自定義對象

<jdbc:query key="outboundInsertStatement" 
       value="INSERT INTO TEST (ID, TYPE, DATA, ACK) VALUES (#[map-payload:ID], 
        #[map-payload:TYPE],#[map-payload:DATA], #[map-payload:ACK])"/> 

我試圖做一些事情非常接近,這只是我想用一個自定義的對象,而不是我明白的java.util.map是預期的。

我可以解釋一下#[map-payload:ACK]究竟意味着什麼?我不明白的語法。

map-payload某種默認類型?

我可以使用該語法來使用我創建的自定義對象嗎? (有些MesssageObj類具有某​​些字段)

回答

1

的語法:

#[evaluator:expression] 

使用由Mule Expression Evaluation framework

如果你看看table that lists all evaluators,你會發現地圖有效載荷之間可能其他評估。

所以,你有上面的例子中是指:

  • 預期在飛行中的消息將具有java.util.Map類型的有效載荷,
  • 用於ID,TYPE值,插入查詢中的DATA和ACK列將從同名密鑰下的地圖有效載荷中提取。

當然,您可以隨意使用任何其他更好的匹配您的機上消息有效載荷的評估程序。

+0

是的,我讀過,但我couldent找到我在找什麼。我希望能找到某種[#obj:datamember]語法我可以使用,但我似乎無法使它工作。我如何使用這些表達式來與我創建的自定義對象進行交互?用一個標題字符串來說一個消息對象,一個日期時間obj的正文字符串,我會認爲會有類似[#msgInstance:title]等等。但我沒有看到任何地方。什麼是正確的方法來做到這一點?我現在做的方式是使用變壓器將對象變成地圖,但這只是浪費和錯誤,我認爲。 – Menyh

+0

如果您的自定義對象符合JavaBean,則使用:#[bean:title]。這將調用有效負載上的getTitle(),該負載被假定爲您的目標對象。否則,您可以使用#[groovy:expression]並獲得Groovy的全部功能。 –

+0

是的,非常感謝(再次)! – Menyh