新增审批人规则

willian fu 2022 ~

新增审批人规则

wflow-pro 已经内置了10种预设的审批人规则选项提供给大家使用,但是业务需求往往难以捉摸,这时候取审批人规则不满足要求就需要自己进行扩展了。

image-20221208161002612

扩展审批人规则选项需要前后端同时支持,下面逐一介绍如何实现。

前端

1、新增选项

首先需要找到审批节点的配置面板 ApprovalNodeConfig.vue ,为该选项添加单选框options 项

 approvalTypes: [
     {name: '指定人员', type: 'ASSIGN_USER'},
     {name: '发起人自选', type: 'SELF_SELECT'},
     {name: '发起人自己', type: 'SELF'},
     {name: '部门主管', type: 'LEADER'},
     {name: '多级部门主管', type: 'LEADER_TOP'},
     {name: '指定部门的主管', type: 'ASSIGN_LEADER'},
     {name: '系统角色', type: 'ROLE'},
     {name: '表单内联系人', type: 'FORM_USER'},
     {name: '表单内部门主管', type: 'FORM_DEPT'},
     {name: '系统(自动拒绝)', type: 'REFUSE'}
 ]

2、添配置对象的字段属性

设置项有了,我们需要针对它进行配置数据的保存,此处我们需要在 DefaultNodeProps.js 里面的 APPROVAL_PROPS 对象新增一个自定义字段, 用来保存我们新增的这一项的设置数据。

3、添加配置数据设置项

当我们在配置面板选中该审批规则时,需要展示对应的设置项设置组件,例如(选中指定人员 时,需要提供给用户一个选人的按钮,然后点击弹出选人框选择人员,选中后人员又需要回显),这时候需要在 ApprovalNodeConfig.vue 中新增一个 v-else-if 用来提供该设置项操作组件。

 <div v-if="nodeProps.assignedType === 'ASSIGN_USER'">
     <el-button size="mini" 
        icon="el-icon-plus" type="primary" 
        @click="selectUser" round>
        选择人员
     </el-button>
     <org-items v-model="nodeProps.assignedUser"/>
 </div>

4、添加审批节点设置项回显

设置项需要在流程图节点上回显当前设置的内容信息,如下图

image-20221208162834107

ApprovalNode.vue 组件内 computedcontent 计算属性中 switch 添加一个 case 项,参加其他项设置,根据设置内容返回文字描述

5、添加设置项规则校验

当该新增的审批选项设置没有设置完整时,那么在用户发布流程时应当予以报错,防止提交错误数据

还是在 ApprovalNode.vue 组件内,methods中添加一个函数 ,命名规则为 validate_xxx ,xxx为新增设置项 assignedType 字段的值,该设置项将会被自动调用。

// 入参 err 类型为 Array,用来返回错误信息
validate_XXXX(err){
    if(this.config.props.xxxx 校验){
        //校验成功
    	return true;
    }else {
        //校验失败,设置红色感叹号内错误信息
        this.errorInfo = '请指定审批人员'
        //添加错误信息到校验弹框内
        err.push(`${this.config.name} 发生了xxx错误`)
        return false
    }
},

后端

1、新增设置项字段和选项枚举

由于我们在前端新增了一个审批选项设置的字段,后端对应实体类也需要添加这个字段,com.wflow.workflow.bean.process.props.ApprovalProps 中加上这个设置项字段的name 属性

然后在 com.wflow.workflow.bean.process.enums.ApprovalTypeEnum 把该字段类型枚举加上

2、添加取审批人规则解析

我们新增一个审批人人规则设置项,那么当选中该规则时,后端需要根据规则解析出匹配该规则的审批人,找到 com.wflow.workflow.service.impl.ProcessTaskServiceImpl.getApprovalUsers() 方法,在switch 内 加该项的枚举 case ,把解析出的审批人 add 进 userSet 集合内即可

ON THIS PAGE