开源OA办公系统一般是怎么设计的呢 | ||||||||||||||||
不同职责的人员,对于系统操作的权限应该是不对于操作系统同的。优秀的业务系统,这是最基本的功能。 可以对组进行权限分配。对于一个大企业的对于企业分配业务系统来说,如果要求管理员为其下员工逐一分配系统管理员业务来说操作权限的话,是件耗时且不够方便的事情。所以,系统操作方便事情中就提出了对组进行操作的概念,将权限一致的人员操作提出进行编入同一组,然后对该组进行权限分配。 权限管理系统应该是可扩展的。它应该可以加入到加入系统应该任何带有权限管理功能的系统中。就像是组件一样的可以带有一样系统被不断的重用,而不是每开发一套管理系统,就要针对权开发系统管理限管理部分进行重新开发。 满足业务系统中的功能权限。传统业务系统中,存在业务系统权限着两种权限管理,其一是功能权限的管理,而另外一种则其一权限功能是资源权限的管理,在不同系统之间,功能权限是可以重之间系统可以用的,而资源权限则不能。 针对OA系统的特点,权限说明: 权限 在名易软件 权限组 为了更方便的权限的管理,另将一个模块下的所有权限组方便所有权限合一起,组成一个权限组,也就是一个模块管理权限组成权限一个,包括所有基本权限操作。比如一个权限组(用户管理)操作包括基本,包括用户的浏览、添加、删除、修改、审核等操作权限操作浏览包括,一个权限组也是一个权限。 角色 权限的集合,角色与角色之间属于平级关系,可以将基本之间基本可以权限或权限组添加到一个角色中,用于方便权限的分配。方便用于分配 用户组 将某一类型的人、具有相同特征人组合一起的集合体。通具有组合一起过对组授予权限(角色),快速使一类人具有相同的权限授予具有权限,来简化对用户授予权限的繁琐性、耗时性。用户组的划授予耗时权限分,可以按职位、项目或其它来实现。用户可以属于某一可以其它项目个组或多个组。 通过给某个人赋予权限,有4种方式(参考飞思办公系统) A.通过职位 a)在职位中,职位成员的权限继承当前所在职位的权限,当前权限成员对于下级职位拥有的权限不可继承。 b)实例中:如前台这个职位,对于考勤查询有权限,则可对于考勤实例以通过对前台这个职位设置考勤查询的浏览权,使他们有考勤浏览设置使用这个对象的权限,然后再设置个,考勤查询权(当然考勤使用设置也可以不设置,默认能进此模块的就能查询),则所有前默认所有设置台人员都拥有考勤查询的权利。 B.通过项目 a)在项目中,项目成员的权限来自于所在项目的权限,他来自权限项目们同样不能继承下级项目的权限,而对于项目组长,他对对于组长下级项目有全权,对下级项目也一样。 b)实例中:在项目中,项目成员可以对项目中上传文档,实例可以项目查看本项目的文档,可以通过对项目设置一个对于本项目的对于查看设置浏览权来实现进口,这样每个成员能访问这个项目了,再这样浏览访问加上项目文档的上传权和查看文档权即可。 c)对于组长,因为可以赋予组长一个组长权(组长权是个对于赋予组长特殊的权限,它包含其他各种权限的一个权限包),所有各种其他包含组长对于本项目有全权,则项目组长可以对于项目文档查对于组长可以看,审批,删除,恢复等,这些权限对于本项目的下级项对于恢复删除目依然有效。 C.通过角色 a)角色中的成员继承角色的权限,角色与角色没有上下级上下级权限没有关系,他们是平行的。通过角色赋予权限,是指没办法按赋予通过权限职位或项目的分类来赋予权限的另一种方式,如:系统管赋予系统方式理员,资料备份员… b)实例中:对于本系统中,全体人员应该默认都有的模块对于默认实例,如我的邮件,我的文档,我的日志,我的考勤……,这考勤邮件些模块系统成员都应该有的,我们建立一个角色为系统默建立系统我们认角色,把所有默认访问的模块的浏览权加入到里面去,浏览访问加入则系统成员都能访问这些模块。 D.直接指定 a)直接指定是通过对某个人具体指定一项权限,使其有使通过具体直接用这个权限的能力。直接指定是角色指定的一个简化版,直接权限简化为了是在建立像某个项目的组长这种角色时,省略创建角创建建立省略色这一个步骤,使角色不至于过多。 b)实例中:指定某个项目的组长,把组长权指定给某个人实例组长项目。 针对职位、项目组: 如果用添加新员工,员工调换职位、项目组,满足了员工项目如果满足会自动继承所在职位、项目组的权限,不需要重新分配权分配权需要重新限的功能。 用户管理 用户可以属于某一个或多个用户组,可以通过对用户组授可以通过属于权,来对组中的所有用户进行权限的授予。一个用户可以授予所有可以属于多个项目组,或担任多个职位。 授权管理 权限管理 基本操作权限与权限组(基本操作权限的集合)的管理。权限操作基本 OA权限管理设计的实现 物理数据模型图如下: 物理数据模型图 根据以上设计思想,权限管理总共需要以下基本表: tb_User:用户信息基本表; tb_Department:部门表; tb_Company:公司表; tb_Module:系统模块表; tb_Action:系统中所有操作的动作表; tb_Permit:由tb_Module与tb_Action两表结合产生的系统基本权限表; tb_Permit_Group:权限组表,将一模块的中的所有权限划分一个权permitgroup所有限组中,可以通过权限组授予用户权限; tb_Role:角色表,基本权限的集合。无上级与下级之分; tb_Position:职位表,有上级与下级之分; tb_Project:项目组表, tb_Role_Permit:角色授权表; tb_Postion_Permit:职位授权表; tb_Project_Permit:项目授权表; tb_Project_User:项目成员表,IsLead字段代表此成员为项目组长; tb_Postion_User:职位成员表; tb_User_Permit:用户授权表,用户ID与角色、职位、项目及直接permit授权直接授予的权限串表; 权限的产生: 由tb_Module中的ModuleCode与tb_Action中的ActionCode组成 权限代码PermitCode=ModuleCodeActionCode。 实例:ModuleCode=0101,ActionCode=01,则PermitCode=010101。 权限值则有ModuleValue与ActionCode组合而成,采用下划线来modulevaluactioncod下划线连接。 实例:ModuleValue=Sys_User,ActionValue=AdD,PermitValue=Sys_User_Add 权限组: 包括一组同一模块下的权限的组合,如管理包括组合权限用户包括基本的权限:添加、删除、修改、查看等,将这查看包括删除些组合起来构成一个用户组用户管理权限组。其组合权限构成它类似。只是为了更方便的查看系统权限与权限的分配。方便只是查看 实例:如管理用户的权限代码为010101à查看用010101查看实例户,010102à添加用户,010103à删除用户,010104à修改用户,010105à审010104010105010102核用户等,将这些基本权限组合起来一个集合而构成了ldquoldquo基本这些;用户管理权限组。 角色、职位、项目: 也就是按特定的需要划分一种权限的集合。需要集合权限使用角色授权表、职位授权表、项目授权表来实现。授权项目使用实现表中存放的是权限代码PermitCode,而不是权限组的GroupCode代码。 用户授权: 由用户授权表来实现,用户授权表中的RoleCode、rolecod授权实现PositionCode、ProjectCode分别是角色表中RoleCode组成的串、职位表PositionCode组成的串、projectcodrolecod组成ProjectCode组成的串。与角色授权表中的角色代码RoleCode、职位授权表projectcodrolecod组成中PositionCode、项目授权表中的ProjectCode不对应(不是主表与从表之间外projectcod对应之间键关系)。 从而能够实现了一个用户可以拥有多个角色能够拥有可以、多个职位、多个项目的情况。 用户授权表中的PermitCode为直接授权的权限代码串,直接给用户permitcod授权直接分配权限。 实例: 用户ID为UserId=1的用户权限授权表的记录为: RoleCode=001,003 PostionCode=001,002 ProjectCode=001,005 PermitCode=010101,020102 表明此用户拥有两个角色,代码为001和003,并继承这两个拥有表明代码角色的权限; 担任两个职位,代码为001与002,并继承两个职位的权限;权限代码职位 属于两个项目组中的成员,项目代码为001与005,并继承两代码项目属于个项目中的权限。 直接指定给用户的权限为010101与010102这两个权限代码的权限 用户权限字符串: 根据用户授权表的角色代码、职位代码、项授权根据代码目代码得到权限字符串及表中直接分配的权限字符串组合字符串得到分配成一个用户的所有权限字符串集合。
|