2016-11-28 17 views
0

我正在處理簡單的activiti進程,我需要以某種方式檢查當前進程是否已經運行。我的想法是使用這樣的代碼:如何獲取activiti中活動進程的列表?

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .processDefinitionKey(BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS) 
           .count() > 1; 

所以我只是得到runtimeService這是由Activiti的BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS過程中執行的Java方法內使用definitionKey(過程ID)添加過濾器,並檢查計數。 我發現.createExecutionQuery()總是返回空列表。例如,這樣的代碼將返回空單也:

activitiInitEngineBean.getRuntimeService() 
           .createExecutionQuery() 
           .list() 

這不是預期的,因爲我把它叫做一個進程內的(所以它應該返回至少1執行)。 我應該如何配置才能使用runtimeService?

回答

0

默認情況下,與< serviceTask>標記一起使用時,activiti不會將任何內容存儲到ru表中。解決方案是增加異步屬性:

<serviceTask activiti:async="true" 
1

您的更新不被存儲到數據庫,直到等待狀態達到(參見Transactions and Concurrency)。如果你想從運行流程實例的查詢中獲得流程實例,必須達到第一個等待狀態。事實上,你不需要創建查詢來獲得執行,因爲執行已經存在,例如script task variables或作爲接口方法的參數。

+0

你能舉一個例子嗎?我怎樣才能通過進程ID找到正在運行的進程? –

相關問題