按执行顺序列出给定进程的所有任务

List all the tasks for a given Process in the order of execution

这是一个基本功能,我看到重复的问题,但不幸的是还没有明确的答案。

我如何print/list给定进程中的所有任务(已完成/未完成)按顺序执行。

我在论坛上找到的两个解决方案都按预期工作

repositoryService.getBpmnModel().getFlowElements() - Does not print in the order of execution . Printed in the order of definition
historyService.createHistoricActivityQuery - Does not print all Service task

如何只列出给定进程下的所有任务。

您可以创建一个TaskQuery

import org.camunda.bpm.engine.ProcessEngine;
...

@Autowired
private ProcessEngine processEngine;

private List<Task> getAllTaskByProcessId(string processInstanceId){
  return processEngine.getTaskService()
    .createTaskQuery()
    .processInstanceId(processInstanceId)
    .list();
}

如果任务是指流程中的所有元素,那么您可以使用 HistoricActivityInstanceQuery 获取有关它们的信息。

代码看起来像这样:

List<HistoricActivityInstance> activityInstances = historyService
    .createHistoricActivityInstanceQuery().
    .processInstanceId(processInstanceId)
    .orderByHistoricActivityInstanceStartTime().asc()
    .list();

为了查看 HistoricActivityInstance 是否完成,您需要检查 HistoricActivityInstance#getEndTime()。如果是null表示activity没有完成,如果是null表示完成