论B2B业务中的授权中心如何设计

假如我们有一个好的点子,准备通过技术、业务、资源创建一个商业产品,比如做一个1788来解决建筑行业物资、设备、租赁、分包等大宗物资采购、零星物资采购的场景。在这个创业场景中,核心子系统有集中采购系统、商城系统、收验货系统、劳务实名制度系统、废旧物资买卖等智慧建筑系统,还有一些子系统,比如官网、微信公众号、智能客服系统、大屏系统、财务管理系统、办公自动化系统、授权中心系统、表单引擎、审批引擎、打印引擎、发号系统等。

XXX工业互联网平台

今天我们主要聊一下其中的授权中心,包括主数据中心、菜单权限管理、角色管理等基础RBAC的权限控制模型。

授权中心相关概念

企业库(组织树)

在B2B业务中企业库很关键,它包含本集团的组织、外部客户、外部供应商。为了管理了需要,这些企业最终会形成一个组织树。组织树上有用户、项目、审批流程、各种模板配置等。在各业务线系统中,都会分项目级、组织级、平台级三层。

  • 平台级
    在平台级主要是运营管理平台,可以管理企业、租户配置、项目配置等运营类工作。
  • 组织级
    在组织级主要管理本下级组织的业务。在业务数据方面“从下往上”,在模板配置方面“从下往下”。
  • 项目级
    在项目级主要完成本项目的业务,比如智慧工地系统中的进度、质量、安全、收验货、劳务实名制、AIoT智能设备管理等。

用户

用户有可能是一个“自然人”,也有可能是一个“系统”。一个用户都有一个帐号和密码,还可能有1个或多个所属认证企业,有1个或多个应用系统业务组织。

在一般的系统设计中,我们默认,一个用户在一个组织下,并且只能拥有这个组织下的角色。这种数据模型比较简单,比较容易理解和实现。

项目

建筑项目、社区、园区、楼宇都可以是一个项目。在建筑行业,有很多业态、很多参建单位、很多按地块或分期,所以建筑行业的项目很不好管理。根据我的经验,需要有强管制中心来管理,否则项目会很混乱。

应用系统

应用系统即业务线,它下面有菜单、权限、系统角色、业务角色等资源。

授权中心表结构设计

组织表

所有参建单位都在这个表中,比如采购商、分供方;总承包单位、分包单位;客户;设计单位、监理单位等。


组织表

用户表

所有的用户帐号。


用户表

应用系统表、菜单表、权限表

应用系统表、菜单表、权限表

角色表、角色权限关联表

可以支持组织级角色,也可以支持项目级角色。role_type有两类,一类是系统内置,一类是自定义。


角色表、角色权限关联表

用户角色组织关联表

一个人可以拥有多个角色组织、多个角色项目。比如一个人可以管理三局一公司的物资合同,同时可以管理三局二公司的租赁合同。这个的管理物资合同、管理租赁的同就是角色,可以是平台下系统内置角色,也可以是组织下的自定义角色。这样既可以使用系统内置角色,防止角色爆炸;又可以让组织自定义角色,满足业务灵活性。


用户角色组织关联表

总结

花了很长时间来整理了如何设计一个通用的B2B授权中心,核心思想是基于角色的权限控制,由于面临的是大型集团公司,每家公司可能会有一些定制化的需求,所以需要复杂的权限控制模型来支持。在我曾经做过的一个系统中,我遇到了角色爆炸的问题,即所有组织有一套自己的角色,最后角色达到了百万级别。在日常功能权限、数据权限问题排查、运维上遇到了很多问题。在这篇文章中,我基于Copy-on-Write的理念简单阐述了防止角色爆炸的方案。

下面的帐号信息页面原型,主要描述了用户类型、所属组织、业务角色、角色组织、功能角色、品类权限等。这里还不够细致,还需要进一步的优化。


帐号信息页面原型

工具

  • [原型工具 Balsamiq Cloud:Fast, Approachable, Collaborative Wireframing](https://balsamiq.cloud/)

你可能感兴趣的:(论B2B业务中的授权中心如何设计)