如何查询流程定义的运行实例? [英] How to query running instances of a process definition?
本文介绍了如何查询流程定义的运行实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
camunda引擎是否提供API来查询某个进程的所有正在运行的实例?此查询是否也包含已暂停的实例?
Does the camunda engine provides an API to query all running instances of a certain process? Does this query includes suspended instances too?
推荐答案
您可以使用以下代码查询流程的所有正在运行的流程实例:
You can query all running process instance of a process using the following code:
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<ProcessInstance> 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<ProcessInstance> processInstances =
runtimeService.createProcessInstanceQuery()
.processDefinitionId(myProcessDefinition.getId())
.active() // we only want the unsuspended process instances
.list();
return processInstances;
}
}
如果你想包括甚至暂停流程实例,然后只删除.active()行。
If you want to include even suspended process instance, then just delete the .active() line.
这篇关于如何查询流程定义的运行实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文