List<HistoricActivityInstance> historicActivityInstances = processEngine.getHistoryService() .createHistoricActivityInstanceQuery() .processInstanceId(tv.getProcInstId()) .list(); for(HistoricActivityInstance hai:historicActivityInstances){ System.out.println("活动ID:"+hai.getId()); System.out.println("流程实例ID:"+hai.getProcessInstanceId()); System.out.println("活动名称:"+hai.getActivityName()); System.out.println("办理人:"+hai.getAssignee()); System.out.println("开始时间:"+hai.getStartTime()); System.out.println("结束时间:"+hai.getEndTime()); System.out.println("================================="); } if (!CollectionUtils.isEmpty(historicActivityInstances)) { /** * 如果小于2说明流程刚发起,处在开始节点和第一任务节点 */ if (historicActivityInstances.size()>2){ int size=historicActivityInstances.size(); HistoricActivityInstance historicActivityInstance=historicActivityInstances.get(size-1); if (historicActivityInstance.getActivityType().equals("endEvent")){ /** * 如果此流程已经结束,最后一个节点是是倒数第二个,只有上一步处理人 */ historicActivityInstance= historicActivityInstances.get(size-2); List<AuditUserVo> lastUser= actExtendMapper.selectAuditUser(historicActivityInstance.getTaskId(),null,historicActivityInstance.getProcessInstanceId()); if (!CollectionUtils.isEmpty(lastUser)){ tv.setLastAssignee(lastUser.stream().map(auditUserVo -> auditUserVo.getUserName()).collect(Collectors.joining(","))); tv.setLastEndTime(historicActivityInstance.getEndTime()); tv.setLastStepName(historicActivityInstance.getActivityName()); } }else{ //流程未结束,获取单前节点的处理人 List<AuditUserVo> currentUser= actExtendMapper.selectAuditUser(historicActivityInstance.getTaskId(),null,null); if (!CollectionUtils.isEmpty(currentUser)){ tv.setAssignee(currentUser.stream().map(auditUserVo -> auditUserVo.getUserName()).collect(Collectors.joining(","))); tv.setLastStepName(historicActivityInstance.getActivityName()); } //获取上一个节点的处理人,上一个有可能网关判断节点,需要排除 historicActivityInstance=historicActivityInstances.get(size-2); if (historicActivityInstance.getActivityType().equals("exclusiveGateway")){ historicActivityInstance=historicActivityInstances.get(size-3); } List<AuditUserVo> lastUser= actExtendMapper.selectAuditUser(historicActivityInstance.getTaskId(),null,historicActivityInstance.getProcessInstanceId()); if (!CollectionUtils.isEmpty(lastUser)){ tv.setLastAssignee(lastUser.stream().map(auditUserVo -> auditUserVo.getUserName()).collect(Collectors.joining(","))); tv.setLastEndTime(historicActivityInstance.getEndTime()); tv.setLastStepName(historicActivityInstance.getActivityName()); } } }else{ //获取第一任务节点处理人 List<AuditUserVo> currentUser= actExtendMapper.selectAuditUser(historicActivityInstances.get(1).getTaskId(),null,null); if (!CollectionUtils.isEmpty(currentUser)){ tv.setAssignee(currentUser.stream().map(auditUserVo -> auditUserVo.getUserName()).collect(Collectors.joining(","))); tv.setLastStepName(historicActivityInstances.get(1).getActivityName()); } } }
Activiti 工作流获取任务列表历史,回填上一步处理人和下一步处理人
最新推荐文章于 2020-12-02 10:46:40 发布