用户体系设计
2024年12月25日大约 2 分钟编码开发用户人力资源组织机构
[一]多种类型用户聚合
微服务架构的一大特点:就是一套稳固的后端,适配各种不同的前端。后端稳固,前端灵活变化。就是所谓的“大中台,小前台”。不同的前端可能会涉及到不同的用户体系。
Dante Cloud 作为标准的微服务平台,也是需要支持各种不同类型的前端,以及不同体系的集成,这就会涉及到不同的用户体系,例如:
- 小程序:小程序都会有自己的用户体系,需要与自己的用户体系集成
- 第三方登录:如果使用第三方登录,那么就要实现第三方应用系统与自己用户体系的集成
除了以上用户体系以外,传统的应用系统还会涉及组织机构等管理功能,这又是另外一种“用户体系”。
本系统将以上所有用户体系进行了融合,相关的 ER 图如下所示:
- 所有的用户,与系统用户关联
sys_social_user
表中存储包括:手机短信登录或注册用户、小程序用户、第三方社交登录用户的用户信息sys_employee
表中存储的是常规组织机构或者人力资源管理用户信息。
[二]支持一人多岗多部门的人力资源管理模块
大多数组织机构或者人力资源模块的设计都会采取类似于 RBAC 权限模型的设计,即 单位
、部门
和 人员
三者进行“多对多” 关联。
本系统并未采用这样的设计,而是采用了另外的一种设计方式,当前设计的 ER 图如下所示:
在当前的设计中,除了 单位
、部门
和 人员
三要素外,额外增加了一项 人员归属
。
这样设计是为了解决两方面问题:
- 很多传统系统中,不仅会存在人力资源这类标注机构,大型企业还会存在党团,工会等多种机构类型。采用以上的设计,可以避免为不同机构类型创建重复的人员信息,一个人员信息就可以关联到不同的机构类型或者不同的部门。
- 此种人力资源结构设计,也是参考Camunda工作流人员体系,与其保持一致,方便人员数据的同步以支持工作流引擎的使用。
提示
Dante Cloud 是采用 CDC(Change Data Capture)
机制,实现系统用户与工作流用户的实时
同步。具体用法可以参考作者自己的文章:《使用 Debezium、Postgres 和 Kafka 进行数据实时采集(CDC)》