按组织逐级审批
案例需求
多级部门审批。例如一级部门下面有二级部门,每个部门下面包括主管和员工。
- 二级部门员工发起流程:依次流转给二级部门主管 -> 一级部门主管
- 二级部门主管发起流程:流转给一级部门主管
- 一级部门员工发起流程:流转给一级部门主管
开发过程
设置部门主管
使用“企业门户-系统管理-组织用户管理-组织管理”设置部门主管,如下图所示
流程中提供函数获取当前人的主管
- 直接主管:本部门主管
- 第2级主管:上一级部门主管
流程图
部门主管审批环节,使用循环的方式实现多级部门主管审批。每循环一次,找上一级部门的主管,直到一级部门退出循环
条件分支
是否一级部门的判断,使用当前人部门全路径标识中有几个部门节点,判定为当前人属于几级部门
- 一级部门员工的全路径:/阳光集团(机构)/开发部(部门)/张三(人员),有1个部门节点,为一级部门
- 二级部门员工的全路径:/阳光集团(机构)/开发部(部门)/开发一部(部门)/李四(人员),有2个部门节点,为二级部门
使用下面2个函数组合
- 计算组织标识全路径中组织类型个数:getKindNumberByFID
- 当前部门标识全路径:currentDeptFID
计算部门级别的表达式为:getKindNumberByFID(currentDeptFID(), 'dpt', true)
表达式计算结果为1,表示一级部门
执行规则
部门主管审批环节设置两个执行规则,处理人如下
- 如果当前人是主管,找上一级部门主管审批
- 如果当前人不是主管,找当前部门主管审批
使用“当前用户是否拥有角色”函数进行判断
- 主管的角色编码:director
- 当前人是主管:hasRole('director')
- 当前人不是主管:hasRole('director')=false
当前人为部门主管时
- 生效条件为: hasRole('director')
- 处理人表达式为:当前人的第2级主管
当前人为部门员工时
- 生效条件为 hasRole('director')=false
- 处理人表达式为:当前人的直接主管
运行效果
二级部门员工发起流程
二级部门员工发起流程:依次流转给二级部门主管 -> 一级部门主管
二级部门主管发起流程
二级部门主管发起流程:流转给一级部门主管
一级部门员工发起流程
一级部门员工发起流程:流转给一级部门主管