Activiti7获取流程进度操作

        

        示例图如上

        首先通过instanceId获取任务进程列表

//通过instancId获取任务进程列表
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().processInstanceId(instanceId).list();

        通过流遍历列表中的每一个HistoricTaskInstance,如果endTime不为空并且deleteReason为空,说明审批已经结束,可以获取到审批人、审批时间、审批意见和批注。审批意见和批注为创建审批流程图时自定义的表单数据。

        否则通过其中的deleteReason来判断用户在这个节点已经撤销审批还是未进行审批。        如果deleteReason为空这表示未审批,否则表示用户撤销。

//遍历列表中每一个元素
list.stream().forEach(hp->{
            //endTime不为空且deleteReason为空,此任务节点的审批已经结束
            if(hp.getEndTime()!=null && hp.getDeleteReason()==null){
                SearchFlowVo searchFlowVo = new SearchFlowVo();
                //获取审批节点名称
                searchFlowVo.setTitle(hp.getName());
                //获取审批时间
                searchFlowVo.setEndTime(DateUtils.formatTime(hp.getClaimTime()));
                //获取审批人username
                searchFlowVo.setUserName(hp.getAssignee());
                //获取自定义表的key值
                String formKey = hp.getFormKey();
                //根据username获取审批人信息
                SysUser sysUser = sysUserService.selectUserByUserName(hp.getAssignee());
                searchFlowVo.setNickName(sysUser.getNickName());
                searchFlowVo.setAvatar(sysUser.getAvatar());
                //获取此审批节点开始时间
                searchFlowVo.setStartTime(DateUtils.formatTime(hp.getStartTime()));
                //通过businessKey和表单key获取表单信息
                List<ActWorkflowFormData> actWorkflowFormData = actWorkflowFormDataMapper.selectActWorkflowFormDataByBusinessKeyAndFormKey(businessKey,formKey);        //通过表单数据进行意见和批注的填充
                actWorkflowFormData.forEach(afd->{
                    if(afd.getControlName().equals("审批意见"))
                        searchFlowVo.setState(afd.getControlValue());
                    else
                        searchFlowVo.setText(afd.getControlValue());

                });
                result.add(searchFlowVo);
            //否则表示审批还未进行或者用户在这个节点已经主动撤销
            }else {
                
                SearchFlowVo searchFlowVo = new SearchFlowVo();
                //获取审批节点名称
                searchFlowVo.setTitle(hp.getName());
                //判断是否为用户主动撤销
                if(hp.getDeleteReason()!=null){
                    //填充撤销原因
                    searchFlowVo.setState(hp.getDeleteReason());
                }else {
                    //否则表示未审批
                    searchFlowVo.setState("未审批");
                }
                //获取审批开始时间
                searchFlowVo.setStartTime(DateUtils.formatTime(hp.getStartTime()));
                result.add(searchFlowVo);
            }


        });
注:如果上个审批节点未开启,则下一个审批节点不会在查询的列表中出现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_50568029

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值