当前位置:网站首页>Activiti目录(五)驳回、重新发起、取消流程

Activiti目录(五)驳回、重新发起、取消流程

2022-07-06 09:30:00 爱机车的程序猿

把Activiti打入你的脑袋,再次通过驳回、取消流程快速打入

目录

Activiti(一)入门了解

Activiti(二)整合

Activiti(三)部署、发布流程

Activiti(四)查询代办/已办、审核

Activiti零零碎碎的坑

一、审核人驳回流程

思路
根据流程实例ID和当前用户ID查询流程任务是否存在
1.根据当前人员设置驳回节点状态
存在2.驳回节点状态退回审核任务到发起人
不存在返回不成功状态码
/** * 驳回申请 * @param userId 用户ID * @param processInstanceId 流程实例ID * @return */
    public Task rejectTest(String userId,String processInstanceId) {
    
        // 查询当前审批节点
        Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).taskInvolvedUser(userId).singleResult();
        if(null != task){
    
            // 设置流程参数
            Map<String, Object> args = new HashMap<>();
            String assignee = task.getName();
            args.put("applyState", Constants.EPIDEMIC_APPLY_STATE_BH);// 驳回状态
            args.put("applyExamine", assignee);// 驳回任务节点
            // 完成审批任务
            taskService.complete(task.getId(), args);
        }
        // 返回修改后业务信息
        return task;
    }

二、重新发起流程

思路
根据流程实例ID和当前用户ID查询流程任务是否存在
1.根据当前人员设置重新申请节点状态
存在2.获取驳回人员信息
3.通过节点状态、驳回人员信息重新申请回到审核人员继续审核
1.返回审核节点状态
不存在2.用原有业务逻辑进行重新申请
 /** * * 重新申请 * @param userId 用户Id * @param processInstanceId 流程实例Id * @return 状态值 */
    public String backProcessTest(String userId,String processInstanceId){
    
        //设置流程参数:审批ID
        Map<String, Object> args = new HashMap<>();
        String applyExamine = runtimeService.getVariable(processInstanceId, "applyExamine")+""; //查看variable常量表
        args.put("applyState", "6");
        args.put("applyExamine", applyExamine);
        //查询当前审批节点
        Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee(userId).singleResult();
        //完成审批任务
        if(null != task) {
    
            taskService.complete(task.getId(), args);
            return applyExamine;
        }
        return "";
    }

三、取消流程

思路
根据流程实例ID获取流程实例是否还在执行
1.获取审核节点状态(是否审核中还是审核通过)
存在2.根据审核节点状态判断中途取消、审核通过取消
3.结束流程实例
1.返回审核节点状态
不存在2.业务代码处理流程业务表
 /** * 取消申请 * @param userId 用户ID * @param processInstanceId 流程实例Id * @return 状态值 */
    public Integer withdrawTest(String userId,String processInstanceId){
    
        // 流程实例是否在执行
        Execution execution = runtimeService.createExecutionQuery().parentId(processInstanceId).singleResult();
        //查看variable常量表
        int applyState = Integer.parseInt(runtimeService.getVariable(processInstanceId, "applyState")+"");
        // 判断中途、审核通过撤销
        applyState = applyState < 3 ? Constants.EPIDEMIC_APPLY_STATE_ZTCX : Constants.EPIDEMIC_APPLY_STATE_CX;
        if(!Objects.isNull(execution)){
    
            //学生取消,结束流程
            runtimeService.deleteProcessInstance(execution.getProcessInstanceId(), "学生"+userId+"取消申请");
        }
        return applyState;
    }

三、实例代码

  • 审核人员查询代办任务:
    在这里插入图片描述
    在这里插入图片描述

  • 审核人员驳回流程:
    在这里插入图片描述
    在这里插入图片描述

  • 流程退回到发起人
    在这里插入图片描述
    在这里插入图片描述

  • 重新发起申请
    在这里插入图片描述

  • 驳回人员查看代办
    在这里插入图片描述
    在这里插入图片描述

  • 取消流程申请

查询代办任务:
在这里插入图片描述
取消流程:

在这里插入图片描述取消人员查询任务时没有流程信息了
在这里插入图片描述

工作流程画图、部署、启动流程、查询代办/已办/已通过、审核、驳回、重新发起、取消申请讲解工作流的重要性

彩蛋:

1.整合Bpmnjs画图工具。
2.任务到达节点标红并显示图片。
即将期待

原网站

版权声明
本文为[爱机车的程序猿]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45067120/article/details/124987842