How to query running instances of a process definition?

后端 未结 1 819
無奈伤痛
無奈伤痛 2021-02-07 22:46

Does the camunda engine provides an API to query all running instances of a certain process? Does this query includes suspended instances too?

1条回答
  •  执笔经年
    2021-02-07 23:43

    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 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;
      }
    
    }
    

    If you want to include even suspended process instance, then just delete the .active() line.

    0 讨论(0)
提交回复
热议问题