NHibernate 实现系统的权限控制(一)
数据对象分析
权限管理是一般的管理系统都必须具备的基本功能,
同时也是必须具备的。所以准备设计一个权限管理的功能,
由于时间问题置于UI部分,可能暂时不能完成,为了学习
新技术,所以决定用NHibernate来做 O-R,当然这里只用了
一些基本的功能,延迟装入,以及外联结的一些功能,在
这次尝试中没有使用,最近工作有点忙,白天没有时间,只有
晚上才有点时间呵呵(偶工作时,用的DELPHI) ,呵呵。
做这个东西,一个是学习NHibernate,熟悉。NET,同时也是希望
能和大家交流,最好大家能一起把他作一个 可以实际应用的功能
呵呵。
对了还有就是 偶手头上没有什么顺手的工具,大部分都只能用
TXT来表示了,希望大家见谅。
好我们首先来进行抽象分析
在权限管理中我们涉及到的类有
动作 模块 用户 角色
动作是指系统里的某一个操作,比如,新增,删除(和针对数据库的新增,删除
有不同的含义),动作必须属于某一个,或几个模块。
模块是指系统里一系列相关功能的集合,比如 进货单,那么我们说它是一个模块
而这个模块会有一些动作,比如 新增 ,编辑,删除.......
//这里要说一下 其实细分的话,模块上面可以组成 作业,或者 称之为大模块
// (采购 订单 进货单 ....)
//目前我们不讨论这样的情况,因为这样的分类与权限分配的关系不大。
角色 权限的载体,比如我们可以说角色 S 用进货单 的 新增 权限。
//角色 是权限的拥有者,不同角色可以相互包容 。
//角色a 可以由角色b和角色c 组成,a 拥有 b 和 c 所有权限。
//目前这个功能暂不考虑
用户 系统的使用者,呵呵,一个用户可以一个多个角色,通过对用户分配
角色,使用户在系统中拥有权限。
好困,迷迷糊糊的写,也不知道大家能看懂不??呵呵
好了,我们可以细化一下了,然后 确定 数据结构/实体类
呵呵。
数据细化
调用方式 编号 名字 标签 说明
CallTypes Code Name Label Memo
调用方式,其实不是必须的,我们这里主要是给动作 和模块使用
主要是,为其他的操作作扩展使用,具体使用就仁者见仁吧
动作 编号 名字 标签 调用方式编号 说明
Actions Code Name Label CallTypesCode MeMo
前面说过这里不在罗嗦了,但是CallTypesCode就是CallTypes 的Code
模块 编号 名字 标签 父模块 类型(目录/具体) 调用方式编号 说明 最后修改时间
Modules Code Name Label ParentModulesCode Type CallTypesCode Memo LastModify
前面说过这里不在罗嗦了,但是CallTypesCode就是CallTypes 的Code ,这里要说一下,
模块表,还应该增加一些扩展字段,呵呵,这个等到偶,准备开始写,一个系统框架的
时候再说吧,呵呵,这里交待一下
实在是困哦,后面的大家也应该能看懂吧,哈哈,太困哦
模块动作表 编号 模块编号 动作编号
ModuleActions Id ModulesCode ActionsCode
角色 编号 名字 标签 类型(系统/高级/普通) 说明
Roles Code Name Label Type Memo
用户 编号 名字 标签 性别 部门 职务
Users Code Name Label Sex Department Duty
用户角色表 编号 用户编号 角色编号
UserRoles Id UsersCode RolesCode
角色权限表[主] 编号 角色编号 模块编号
RolePermissionsMaster Code RolesCode ModulesCode
角色权限表[从] 编号 主表编号 动作编号
RolePermissionsDetail Id MastersCode ActionsCode
顺便说一下,目前数据访问层已基本完成,逻辑层也快了,还有一幅图怎么
贴呀,还有数据库脚本/程序代码 放哪里??
还有就是为了方便调试,我们SOLUTION里引用了,NHibernate的项目(源码)
希望发布给大家的时候,大家能有个心理准备 哈哈。