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

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

编辑导读:权限系统可以从字面上理解,赋予不同用户不同的权限,比如治理员可以增删账户,普通员工只能读写数据 。本文作者以钉钉为例,拆解权限系统和工作流,希望对你有帮助 。
在B端产品从0到1设计的过程中,有一些基础内容是绕不开的,比如人员系统、账号系统、权限系统、工作流系统等等 。但是这些系统也相对成熟,可以玩出花的地方也不多,对于这部分我们倒可以占据后发优势,去学习行业内的产品是怎么做的 。
这里给大家提供一个思路,SaaS的产品经理可以试着从非竞品找到设计灵感 。我们这篇文章主要聊一下权限系统和工作流,单从这两个通用模块来看,感觉OA系统有比较不错的心得 。我们以钉钉为例做一个权限系统和工作流部分的拆解,也算对平时工作的一个总结 。
01 权限系统,RBAC(Role-Based Access Control)
权限系统可以从字面上理解,赋予不同用户不同的权限,比如治理员可以增删账户,普通员工只能读写数据 。常规权限系统设计会用到RBAC模型,基于角色的访问控制模型 。在没用到这个RBAC模型的情况下,用户会和权限直接绑定 。
(用户-权限)
这个对于简朴系统是非常易懂的,对于人员变动不大的系统也是可以直接上手使用的 。但是当有人员变动或者权限变动的时候,问题就出来了 。以上图为例,小路离职,索大升职,享有小路的全部权利,这个时候会产生比较大的变动 。而根据RBAC,那么就会有三层结构,用户-角色-权限 。通过升维解决低维灵活度不够的问题 。RBAC会是下面这个样子 。
(用户-角色-权限)
小路可以是治理员,也可以是组长,然后小路具有治理员和组长的所有权限 。假如小路离职了的话,索大可以和治理员进行绑定,再和组长绑定 。这时候角色和权限的关系是不需要改变的 。
RBAC还有很多的变体,比如互斥角色、比如角色具有上下级关系,可以参考《RBAC权限系统分析、设计与实现》这个博客 。
我们看看钉钉的实现方式 。
(钉钉子治理员列表页面)
(钉钉子治理员编辑页面)
(钉钉子治理员添加人员页面)
这是钉钉后台的治理系统,在子治理员页面里会有添加治理组,添加治理组人员,设定治理组的治理员,设置权限等 。治理组会有一些默认的治理组,也可以由用户新增 。操作顺序可以是:
(钉钉子治理员页面流程)
钉钉产品已经非常庞大了,作为一个平台产品,这边的权限主要是针对不同应用的访问和使用 。钉钉的治理组就像一个角色,而成员就代表着用户,最后为角色配置权限 。引入角色对用户和权限进行解耦的好处是,任何员工的离职入职,都不会影响到角色和权限直接的关系 。而治理要做的,只是把人丢到对应的治理组即可 。
钉钉对于这部分的治理是一步到位的,完成了用户-角色-权限的配置 。假如想要条理更清楚一些,可以先完成角色和权限的映射配置,再往角色里添加人员就可以了 。
除了用户- 角色- 权限这种形式,还可能出现更为复杂的问题 。
比如权限的冲突,小路有两个角色,一个角色是治理员,一个角色是组长,组长有开除员工的权限,治理员没有开除员工的权限,那么小路最后应不应该有开除员工的权限?
这里可以考虑给角色加上优先级,出现冲突了以优先级高的角色所对应的权限为主 。
再比如,角色组的问题 。一个角色可以对应分配权限,而由角色构成的集合应该也可以被分配权限 。如下图: