拆解权限系统和工作流 工作的时候突然很想要怎么办( 二 )


比如权限的冲突,小路有两个角色,一个角色是管理员,一个角色是组长,组长有开除员工的权限,管理员没有开除员工的权限,那么小路最后应不应该有开除员工的权限?
这里可以考虑给角色加上优先级,出现冲突了以优先级高的角色所对应的权限为主 。
再比如,角色组的问题 。一个角色可以对应分配权限,而由角色构成的集合应该也可以被分配权限 。如下图:

拆解权限系统和工作流 工作的时候突然很想要怎么办


(用户-角色-权限,用户-角色组-权限)
举个例子:
用户:小路、小山、索大角色:项目经理、前端工程师、产品经理角色组:钉钉项目组权限:项目进度管理、项目组聊天窗、产品原型设计、产品开发钉钉项目组作为角色组,可以由项目经理、前端工程师、产品经理这几个角色组成,角色组有自己的权限,角色也有自己的权限,用户还是和角色绑定,用在角色组里会有角色组的对应的权限,也会有角色对应的权限 。
这里基于用户-角色-权限这个父类可以派生出很多子类 。这部分角色没有处理好的话,很可能会影响到第二部分说的工作流,钉钉在这里设计的相对完善 。
02 工作流,BPM(Business Process Management)
工作流也可以划分为五个阶段,分别是:
业务流程发掘(Business Process Discovery)业务流程设计(Business Process Design)业务流程执行(Business Process Execution)业务流程管理维护(Business Process Administration)业务流程最优化(Business Process Optimization)我们产品里常用到的是申请和审批,属于业务流程的设计 。
工作流里所涉及到的角色有:申请发起人、审批人、抄送人、执行人 。
根据业务情况还会涉及到条件分支,比如报销金额超过100W,需要总经理批,低于1000元,上级领导批就可以;请假时间超过30天需要人力主管批,低于3天直线主管批就可以等等 。
我们看一下钉钉的工作流 。钉钉的工作流是通过可视化编程做的,其实和之前说的低代码属于同一类产品,钉钉的工作流设计和低代码平台氚云、明道云等等非常像 。对于钉钉布局低代码也可以从这看到必然 。
拆解权限系统和工作流 工作的时候突然很想要怎么办


(钉钉工作流页面)
拆解权限系统和工作流 工作的时候突然很想要怎么办


(钉钉工作流添加节点页面)
我们以钉钉的请假审批为例,可以看到钉钉的请假工作流是包含分支节点的,能够进行申请条件的判断 。这个流程应该是基于activity的框架进行完善的 。这里面会有一张请假表单按照设定好的工作流进行流转,涉及到表单引擎部分的内容我们这边不拓展 。我们重点关注流程设计 。
钉钉的设计,是可以动态添加审批、抄送、执行、分支节点的 。这个按字面意思大家应该能理解 。其实我想说的是,在设计流程的时候有一个非常重要的原则 。就是流程的复用性 。
来看一个问题 。
比如,小路是研发部一部的员工,小山是研发部二部的员工,索大是研发部三部的员工,三个部门是平行部门,他们各自领导不一样 。那么小路,小山,索大三个人的请假流程应该怎么设计?
这里会用到我们说的流程复用性的原则,三个人部门平行,即使三个人领导不同,审批他们的人不同,但是三个人应该是共享一套流程的 。可能是:发起人—>直线领导—>HR—>结束 。所以在流程设计的时候要想实现流程的复用,其实并不是一件简单的事情 。
钉钉给出的设计思路其实是比较接地气也能解决问题的,大家也可以对比看看企业微信,两家产品在审批人选择这部分交互是比较类似 。我们具体来看一下 。

推荐阅读