2016-02-15 42 views
3

我目前正在使用Mule ESB 3.5.0(非EE)公開的API。該API接受一個XML文件,通過HTTP導入帳戶並將此任務定義放入RabbitMQ隊列中。另一個Mule流程負責從隊列中一次性取得項目(感謝processingStrategy="synchronous")並將它們提供給平臺核心。隊列是必需的,因爲核心能夠一次處理一個文件。如何使用枚舉值作爲方法參數調用Java Mule組件?

以上設置爲&平穩運行。我現在想要實現的目的是讓我們的客戶通過公開一個HTTPS端點來解決集成問題,其中導入狀態將可用(由請求的某個GUID和SHA1標識)。

我創建的處理添加狀態更新,該方法簽名的存在的邏輯簡單POJO組件:

void addStatus(final String guid, final String status) 

我設法調用上述方法通過定義bean作爲

<bean id="importStatusComponent" class="com.example.ImportStatusComponent" /> 

並調用騾流中的java組件:

<invoke object-ref="importStatusComponent" method="addStatus" 
      methodArguments="#[flowVars.guid], Import started" 
      methodArgumentTypes="java.lang.String, java.lang.String" /> 

由於我們想向客戶公開這些信息,並允許他們對狀態進行一些程序化檢查,因此我決定將狀態類型更改爲基於枚舉的字典ImportStatusEnum

不幸的是,我無法提供enum進入MEL,進入<invoke methodArgument="">標記屬性。什麼我都試過

例子:

1)參數爲兩個獨立的MEL表達。

<configuration> 
    <expression-language> 
     <import class="com.example.ImportStatusEnum" /> 
    </expression-language> 
</configuration> 

<invoke object-ref="importStatusComponent" method="addStatus" 
     methodArguments="#[flowVars.guid], #[ImportStatusEnum.STARTED]" 
     methodArgumentTypes="java.lang.String, com.example.ImportStatusEnum" /> 

2)作爲單個MEL表達式的參數。 3)全限定類名而不是導入(此處未顯示)。

如何將枚舉值作爲方法參數傳遞給Mule中的invoke組件?任何幫助將不勝感激:)

+0

你有嘗試1得到什麼錯誤? –

回答

2

這一個將工作

<invoke object-ref="importStatusComponent" method="addStatus" methodArguments="#[flowVars.guid], #[com.example.ImportStatusEnum.STARTED]" methodArgumentTypes="java.lang.String, com.example.ImportStatusEnum" /> 
+0

也許你可以解釋爲什麼它也適用 – ashosborne1