如何查询流程实例的位置?

2024-01-10

我想获取进程中单个实例的当前位置。除了 id 之外,是否可以获取活动的名称作为返回值?


您可以使用以下代码获取流程实例的当前位置,当流程在多个位置等待时,该代码还将为您提供活动的名称。

package org.camunda.bpm;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.model.bpmn.BpmnModelInstance;
import org.camunda.bpm.model.xml.instance.ModelElementInstance;

public class AllActiveActivities {

  public Map<String, String> getAllActiveActivities(String processInstanceId) {
    // get engine services
    ProcessEngine processEngine = BpmPlatform.getDefaultProcessEngine()
    RuntimeService runtimeService = processEngine.getRuntimeService();
    RepositoryService repositoryService = processEngine.getRepositoryService();

    // get the process instance
    ProcessInstance processInstance =
        runtimeService.createProcessInstanceQuery()
            .processInstanceId(processInstanceId)
            .singleResult();

    HashMap<String, String> activityNameByActivityId = new HashMap<String, String>();

    // get all active activities of the process instance
    List<String> activeActivityIds =
        runtimeService.getActiveActivityIds(processInstance.getId());

    // get bpmn model of the process instance
    BpmnModelInstance bpmnModelInstance =
        repositoryService.getBpmnModelInstance(processInstance.getProcessDefinitionId());

    for (String activeActivityId : activeActivityIds) {
      // get the speaking name of each activity in the diagram
      ModelElementInstance modelElementById =
          bpmnModelInstance.getModelElementById(activeActivityId);
      String activityName = modelElementById.getAttributeValue("name");

      activityNameByActivityId.put(activeActivityId, activityName);
    }

    // map contains now all active activities
    return activityNameByActivityId;
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查询流程实例的位置? 的相关文章

随机推荐