上一篇《开发平台之权限设计》
背景
企业应用无论大小,必然有组织架构的功能刚需。小到公司只有10几号人的单一组织,大到几百上千的集团化公司的多组织集团架构,系统应用的设计如何支撑着这种大小规模不同的组织架构呢?
设计而不接实际业务之气,设计的再好仍是空谈。–王小七
需求
1、组织架构除了法人组织架构外,还需要业务型的架构。—多维度组织架构
2、集团发展迅猛,组织架构调整频繁,想看往年某个时间点的组织架构。—组织架构多版本追溯
3、组织架构对业务数据有隔离作用。—组织架构的数据权限
4、某个部门需要领导人的概念。 —组织特权人
5、组织的岗位与系统权限会有所关联。 —岗位权限
6、除了领导人外,可能涵盖了管辖的概念。—组织架构的数据权限
抽象与设计
核心UML
Unit
主要用来存放组织单元。
UnitType
主要用来存放组织单元类型,包含:集团、公司、事业部等。
Dimension和DimensionUnit
组织维度,主要用来区别组织所在的不同维度,不同的树的展现形式。
Position
主要存放组织岗位信息。
User
主要是用户表。
核心逻辑
多维度组织架构
将组织架构的树关系存放在DimensionUnit表中,利用维度(Dimension)+维度组织关系(DimensionUnit)就可以成功构建不同的维度组织架构数。
组织架构多版本追溯
维度组织关系表中存放两个关键字段【组织生效时间】和【组织失效时间】,通过特定的时间范围来检索节点,找到那些节点的【生效时间】且【失效时间】不在这个区间氛围,从而可以获取完整架构树。
数据权限、特权人、岗位权限
组织权限的内容,将移到权限设计来特别讲解。