首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

组织结构与权限模型设计(2)

2012-08-28 
组织结构与权限模型设计(二)对于职位:在方案一中,职位只是作为一个标签显示,不带任何的语义,但是在方案二

组织结构与权限模型设计(二)

对于职位:在方案一中,职位只是作为一个标签显示,不带任何的语义,但是在方案二中我们需要用职位去管数据范围。要知道程序并不知道部门经理能够管理部门成员,对它来说这只是两个不同的字符串而已。有人可能会提出,程序加个if..else判断不就得了,但是要知道企业里面职位是五花八门的,有的公司可能叫部门经理为主任。为了应对这种可变性,我们需要对职位增加一个语义,告诉程序哪个职位是管理者,哪个职位只是普通成员。我们暂且叫这个语义为power,它有两个选择:Manager或Member。将这个语义属性附加到职位上,Manager是具有管理权限的人员,它能够管理本领域内的事项(领域的概念在上一篇中已介绍过)。

?

对于权限:在方案一中,没有将权限细分为操作功能和数据范围两个维度,权限既管操作功能也管数据范围。在方案二中,权限只定义操作功能,数据范围由职位决定。

?

打个比方,对于查看工作日志这个功能。

?

按方案二实现的话,系统中会有一个权限项,叫查看工作日志(操作功能),至于查看谁的工作日志(数据范围),则依据成员的职位,如果他是部门经理,则能查看整个部门的工作日志,如果他是普通成员,则只能查看自己的工作日志。将权限项赋给一个角色,再将这个角色和职位赋给用户,用户就具备了相关的权限。

?

按方案一实现的话,系统需要两个单独的权限项,叫查看部门成员工作日志查看自己的工作日志。这两个权限项既定义了操作功能(查看日志),又定义了数据范围(看谁的日志)。将权限项赋给一个角色,再将这个角色赋给用户,用户就具备了相关的操作权限。

?

其实两者的区别就在于方案一把二维拉平成了一维,假设操作功能用F表示,数据范围用D表示,那么方案一中的权限项会有F * D种。

?

总结

方案二的优点是:将操作功能和数据范围分为两个维度管理,分别用角色权限和职位管理,清晰易扩展。它的缺点就是,对用户来说有点繁琐,需要在两个地方(角色、职位)定义。

热点排行