2014-04-01 52 views
0

在Mule ESB自定義Java變換器中,如何從java代碼評估表達式?Mule ESB - 如何在自定義Java變換器中評估表達式

MuleContext有一個表達式管理器,其評估方法效果很好。但是,接受MuleMessage的簽名已棄用,未棄用的版本需要MuleEvent。一個MuleEvent不能從變壓器中獲得,只是一個MuleMessage。

基本上我想用的是這個:

muleContext.getExpressionManager().evaluate(someValue, message); 

另一種方式來訪問MuleEvent是/是使用靜態RequestContext.getEvent()。但是,這也被棄用。我已經成功地創建了一個帶有ThreadLocal<MuleEvent>的靜態變量,通過MessageProcessor在流程的早期注入MuleEvent,但它感覺完全錯誤,可能不是最安全的方法。

我錯過了什麼嗎?有另一種方法嗎? java文檔中有關遷移路徑的棄用註釋中沒有太多指導。

回答

3

如果你想避免的方法已過時,你可以使用

evaluate(String expression, String evaluator, MuleMessage message, boolean failIfNull) 

如果表達式只是MEL,用null作爲evaluator,否則它是你的表達的前綴(JSON等)。

+0

謝謝。這可能會訣竅。 使用MuleMessage的不推薦使用的方法似乎在從表達式分割表達式語言之後調用此特定方法。 基於MuleEvent的方法似乎只是從事件中提取消息,並在引擎蓋下重用不推薦使用的基於MuleMessage的方法。我仍然對這個api中的意義感到困惑,但是關閉了.. –

相關問題