我现在在设计一个权限系统,以下是我的类图:
要实现的需求是:为每个用户定义权限,可以最细粒度的定制用户所拥有的功能,以及每种功能所对应的范围(在这里表现为部门)。资源=功能+范围,这个是我的定义。
我的问题是:这个模型是否合理,我觉得满足需求应该是没问题的,但是我现在受制于现有系统(我是做java web开发的,存储使用oracle数据库)无法实现它。不知道各位高手有没有更好的解决方案。
[该贴被newsunbeam于2011-01-16 01:25修改过]
按照DCI的思维,你的Department应该内聚到User上,你的部门相当于角色,也就是说你有能力(权力)成为“XX部员”于是,你就可以进入相关的场景了,通过场景行为(功能)完成相关业务。你这里的Resource应该叫Context,资源应该只跟功能(行为)相关,不跟User和Department相关。因为本身Context就约束了权限——角色所能进入的地方。
当然撇开DCI想想,你这样也未尝不可。只是回归自然有点奇怪,资源有功能?对于比较追求自然的人来说,可以说有点不自然。关于部门到底内聚到User还是Resource,这看你对Department怎么看——是一个用户的身份,还是说资源能被那种角色访问,若果是后则,则User也要内聚Department,否则,谁知道我是什么身份呢?或则另外一种方式,去掉Department,你不觉得,你的Department分离出来完全是多余的么?这个Department起到约束性的作用了么?或者需要存在的话,我觉得应该要改动一下模型了。
个人一些见解而已,莫怪~~