Activiti 工作流获取任务列表历史,回填上一步处理人和下一步处理人

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());
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值