按组织逐级审批

案例需求

多级部门审批。例如一级部门下面有二级部门,每个部门下面包括主管和员工。

  • 二级部门员工发起流程:依次流转给二级部门主管 -> 一级部门主管
  • 二级部门主管发起流程:流转给一级部门主管
  • 一级部门员工发起流程:流转给一级部门主管

开发过程

设置部门主管

使用“企业门户-系统管理-组织用户管理-组织管理”设置部门主管,如下图所示

1724897679857

流程中提供函数获取当前人的主管

  • 直接主管:本部门主管
  • 第2级主管:上一级部门主管

1724897923881

流程图

部门主管审批环节,使用循环的方式实现多级部门主管审批。每循环一次,找上一级部门的主管,直到一级部门退出循环

1724897013669

条件分支

是否一级部门的判断,使用当前人部门全路径标识中有几个部门节点,判定为当前人属于几级部门

  • 一级部门员工的全路径:/阳光集团(机构)/开发部(部门)/张三(人员),有1个部门节点,为一级部门
  • 二级部门员工的全路径:/阳光集团(机构)/开发部(部门)/开发一部(部门)/李四(人员),有2个部门节点,为二级部门

使用下面2个函数组合

  • 计算组织标识全路径中组织类型个数:getKindNumberByFID
  • 当前部门标识全路径:currentDeptFID

计算部门级别的表达式为:getKindNumberByFID(currentDeptFID(), 'dpt', true)

表达式计算结果为1,表示一级部门

执行规则

部门主管审批环节设置两个执行规则,处理人如下

  • 如果当前人是主管,找上一级部门主管审批
  • 如果当前人不是主管,找当前部门主管审批

使用“当前用户是否拥有角色”函数进行判断

  • 主管的角色编码:director
  • 当前人是主管:hasRole('director')
  • 当前人不是主管:hasRole('director')=false

当前人为部门主管时

  • 生效条件为: hasRole('director')
  • 处理人表达式为:当前人的第2级主管

1725361901401

当前人为部门员工时

  • 生效条件为 hasRole('director')=false
  • 处理人表达式为:当前人的直接主管

1725361921754

运行效果

二级部门员工发起流程

二级部门员工发起流程:依次流转给二级部门主管 -> 一级部门主管

1724845402991

二级部门主管发起流程

二级部门主管发起流程:流转给一级部门主管

1724845434068

一级部门员工发起流程

一级部门员工发起流程:流转给一级部门主管

1724896774279

results matching ""

    No results matching ""