即使当前正在运行processInstance,ExecutionQuery也会返回0

时间:2014-10-31 12:51:26

标签: execution activiti bpmn

我试图从正在运行的进程中获取特定的执行。为了确保过滤没有任何问题,我使用了一个非常简单的查询。应找到所有活动的执行。完全是1。

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.

1 个答案:

答案 0 :(得分: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();

<强>更新

我刚试过这个并且在我的机器上使用我的激活流程引擎(自定义配置)正常工作,没有尝试使用测试引擎(createStandaloneInMemProcessEngineConfiguration)。也许你太早取得执行,所以他们还没有开始。检查您的第一个正在处理的任务是否设置了异步标志,或者尝试延迟提取执行列表。

我没有更多想法,所以如果没有任何帮助让我知道删除帖子,也许别人有更好的主意。