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

把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;
    }

三、实例代码

  • 审核人员查询代办任务:
    Activiti目录(五)驳回、重新发起、取消流程_第1张图片
    在这里插入图片描述

  • 审核人员驳回流程:
    Activiti目录(五)驳回、重新发起、取消流程_第2张图片
    在这里插入图片描述

  • 流程退回到发起人
    Activiti目录(五)驳回、重新发起、取消流程_第3张图片
    在这里插入图片描述

  • 重新发起申请
    Activiti目录(五)驳回、重新发起、取消流程_第4张图片

  • 驳回人员查看代办
    Activiti目录(五)驳回、重新发起、取消流程_第5张图片
    在这里插入图片描述

  • 取消流程申请

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

Activiti目录(五)驳回、重新发起、取消流程_第6张图片取消人员查询任务时没有流程信息了
在这里插入图片描述

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

彩蛋:

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

你可能感兴趣的:(Activiti,java,开发语言,activiti,bpmn,spring)