1.概要
在设计组织架构时,一般的情况我们会设计 这样的表,比如用户和角色,用户和部门的关系表。比如USER_ROLE,USER_ORG,这样对于一个特定的产品来讲时没有问题的,比如OA系统,比如项目管理系统,他的需求是确定的。但是对于JPAAS这样的平台,他是需要扩展需求的,如果每次加一种关系那么都需要开发代码,这个系统就扩展性就比较差。
2.实现方法
在平台中将用户和角色,用户和部门这些关联关系,抽像成了用户与用户,用户与组,组和组的关系。
我们增加了关系定义表,我们可以在这个表中定义:
- 用户与用户的关系
- 用户和组的关系
- 组和组的关系
通过关系我们可以实现:
2.1 用户关系
我们可以实现,在人员定义中,可以通过人与人之间的关系定义上下级关系。
比如:
刘备
关羽
关平
张飞
张保
诸葛
2.2 用户与组的关系定义
在一般情况下,我们定义用户和组的关系是从属关系。这个关系默认是每个维度都有的。我们还可以定义比如 一个负责人的关系。我们可以通过这个关系 就可以找到某个部门的负责人。
在定义关系的时候:
某个关系可以从属于某一个维度。
比如:负责人这个关系可以从属于行政。但是职务和角色维度没有这样的关系定义。
2.3 用户组的关系
这个表示为组和组的关系,最常见为岗位,在平台中我们可以这样定义岗位。当前方为部门,关联方为职务。
比如:在财务部门 建立一个 职务为出纳的关系。然后我们可以在这个关系中添加人员。
3. 表设计
3.1 关系表定义(OS_REL_TYPE)
在这张表中我们定义了关系类型,通过关系类型 (用户关系,用户和组关系,用户组和用户组关系定义)
3.2 关系数据表(OS_REL_INST)
这个表将平台中所有的关联关系数据存放在这张表中,
3.1 用户与用户关系数据
我们在界面上定义为:
在数据库表的数据存储为:
当前方为上级ID,关联方为下属ID。
3.2 用户和用户组关系
比如我们定义了一个组负责人的关系。
我们在组织管理处。
在这里我们可以看到 组负责人只出现在行政维度这里。
我们可以看看相关的数据:
在表中的数据如下:
3.3 用户组的关系定义
这个比如在行政和职务之间创建关系。这个关系一般叫岗位。
添加关系:
选择关联方。
添加完成后,我们可以看一下表中的数据。
在添加完关系后,我们可以在这个关系中添加人员。
数据是这样的:
1.先添加关系,这个时候我们得到一个关系实例ID。
2.人员和关系实例ID进行关联,比如 上面添加的 财务-主任关系,我们用这个实例ID 作为当前方,用户ID作为关联方。