2014-10-31 46 views
0

我試圖從正在運行的進程中獲取特定的執行。爲了確保過濾沒有任何問題,我使用了一個非常簡單的查詢。應找到所有活動的執行。正確1.即使processInstance當前正在運行,ExecutionQuery返回0

mProcessEngine = ProcessEngineConfiguration 
      .createStandaloneInMemProcessEngineConfiguration() 
      .buildProcessEngine(); 

RepositoryService repositoryService = mProcessEngine.getRepositoryService(); 
repositoryService.createDeployment().addClasspathResource(processFilePath).deploy(); 

Map<String, Object> variableMap = new HashMap<String, Object>(); 
RuntimeService runService = mProcessEngine.getRuntimeService(); 

ProcessInstance processInstance = runService.startProcessInstanceByKey(processId, variableMap); 
List <Execution> executions = runService.createExecutionQuery().list(); 

流程實例正常開始,2個任務被執行,直到進程正在等待一個信號。這按預期工作。但我不明白爲什麼執行列表是空的。如果我查詢歷史實例,我會得到一個結果(如預期):

HistoryService historyService = mProcessHandler.getProcessEngine().getHistoryService(); 
List<HistoricProcessInstance> allInstances = historyService.createHistoricProcessInstanceQuery().list(); 

任何想法查詢有什麼問題?


更新 我想通了,執行列表是空的,如果執行等待邊界事件信號(即使在等待秒後)。如果邊界事件被刪除,執行列表返回1.

回答

0

這只是瘋狂的猜測。爲什麼你以不同的方式獲得RuntimeService,你確定這些運行時服務是相同的。儘量使用相同的runSerivice

... 
    Map<String, Object> variableMap = new HashMap<String, Object>(); 
    RuntimeService runService = mProcessEngine.getRuntimeService(); 
    ProcessInstance processInstance = runService.startProcessInstanceByKey(processId, variableMap); 

    List <Execution> executions = runService.createExecutionQuery().list(); 

UPDATE

我剛纔想這和正確的工作在我的機器上我activti流程引擎(自定義配置),不與測試引擎嘗試(createStandaloneInMemProcessEngineConfiguration) 。也許你太早提取執行,所以他們還沒有開始。檢查你的第一個任務正在進行中是否設置了異步標誌,或者嘗試延遲執行列表的獲取。

我沒有更多的想法,所以如果沒有什麼幫助讓我知道要刪除帖子,也許別人有更好的主意。

+0

這就是我已經做的。我清理了一下代碼 – KayJ 2014-11-05 09:12:15

+0

Petar幾乎肯定是正確的,這裏發生了一場競賽狀況。執行不會立即開始。 – 2014-11-05 13:42:26

+0

但是爲什麼現在可以獲得歷史事件呢?這工作正常。 我試圖使用另一個進程進行測試,並按預期得到已啓動實例的列表。沒有任何任務設置爲異步。 我仍試圖找出爲什麼這些問題出現在具體的過程中...... – KayJ 2014-11-05 15:33:17

相關問題