我試圖從正在運行的進程中獲取特定的執行。爲了確保過濾沒有任何問題,我使用了一個非常簡單的查詢。應找到所有活動的執行。正確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.
這就是我已經做的。我清理了一下代碼 – KayJ 2014-11-05 09:12:15
Petar幾乎肯定是正確的,這裏發生了一場競賽狀況。執行不會立即開始。 – 2014-11-05 13:42:26
但是爲什麼現在可以獲得歷史事件呢?這工作正常。 我試圖使用另一個進程進行測試,並按預期得到已啓動實例的列表。沒有任何任務設置爲異步。 我仍試圖找出爲什麼這些問題出現在具體的過程中...... – KayJ 2014-11-05 15:33:17