如何查询流程定义的运行实例?
camunda引擎是否提供API来查询某个进程的所有正在运行的实例? 此查询是否也包含已暂停的实例?
您可以使用以下代码查询进程的所有正在运行的流程实例:
package org.camunda.bpm; import org.camunda.bpm.engine.ProcessEngine; import org.camunda.bpm.engine.RepositoryService; import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.repository.ProcessDefinition; import org.camunda.bpm.engine.runtime.ProcessInstance; import java.util.List; public class AllRunningProcessInstances { public List getAllRunningProcessInstances(String processDefinitionName) { // get process engine and services ProcessEngine processEngine = BpmPlatform.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); // query for latest process definition with given name ProcessDefinition myProcessDefinition = repositoryService.createProcessDefinitionQuery() .processDefinitionName(processDefinitionName) .latestVersion() .singleResult(); // list all running/unsuspended instances of the process List processInstances = runtimeService.createProcessInstanceQuery() .processDefinitionId(myProcessDefinition.getId()) .active() // we only want the unsuspended process instances .list(); return processInstances; } }
如果要包括甚至挂起的流程实例,则只需删除.active()行。