activiti6获取历史节点
废话不多说 上代码
controller
@RequestMapping(“/getRunNodes”)
@ApiOperation(value = “获取历史执行节点”, httpMethod = “GET”, notes = “获取历史执行节点”)
@ResponseBody
public ResponseVo<Map<String, String>> getRunNodes(String procInstId) {
Map<String, String> runNodes = jbpmProcessinstanceService.getRunNodes(procInstId);
return new ResponseVo<>(runNodes);
}
service
public Map<String,String> getRunNodes(String procInstId) {
//procInstId 流程实例id
//查询流程运行到哪个节点了
Execution execution = runtimeService.createExecutionQuery()
.processInstanceId(procInstId)
.orderByProcessInstanceId()
.desc()
.list().get(0);
String activityId = execution.getActivityId();
Map<String,String> map= new LinkedHashMap<>();
// 获取流程历史中已执行节点,并按照节点在流程中执行先后顺序排序
List historicActivityInstanceList = ProcessEngines.getDefaultProcessEngine().getHistoryService().createHistoricActivityInstanceQuery()
.processInstanceId(procInstId)
//用户任务
.activityType(“userTask”)
//已经执行的任务节点
.finished()
.orderByHistoricActivityInstanceEndTime()
.asc()
.list();
// 已执行的节点ID集合
if(CollUtil.isNotEmpty(historicActivityInstanceList)){
for (HistoricActivityInstance historicActivityInstance:historicActivityInstanceList){
String hisActId = historicActivityInstance.getActivityId();
if (hisActId.equals(activityId)){
break;
}
if(!map.containsKey(historicActivityInstance.getActivityId())){
map.put(historicActivityInstance.getActivityId(),historicActivityInstance.getActivityName());
}
}
}
return map;
}