【摘要】信息技术迅猛发展,各行业的管理软件应用十分普遍。管理软件自然要有管理功能,应用时必须有权限控制要求。作为软件设计人员,不仅要考虑软件的功能设计,也要考虑软件的权限设计。从实际编程实例出发,研究一种有别于传统的管理软件权限设计的方法。这种方法使得代码相对集中,降低了系统开发的复杂度和维护工作的难度,适用于中小型管理软件系统的设计。
【关键词】管理软件;权限设计;系统功能
管理软件,也叫管理系统,在不同的领域,有不同的称呼,如管理信息系统(MIS)、企业资源计划(ERP)、实验室管理系统(LIMS)等。不论何种管理软件,都涉及生产经营的细节,为了信息安全和管理的需要,对用户进行权限管理是必然的软件需求,而权限的控制程度不同会有不同的设计方案。我们经常看到的权限设计方案,涉及到权限的繁简问题,最好的权限设计方案是对于操作+资源双重定义。这样做是最安全的,但系统的复杂度也提高,只有在大型的管理系统中使用。这种方案在用户需求的考验之下也可能显得不够灵活,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色。我们摒弃复杂的权限设计理论,从管理系统的实际功能出发,研究一种适合中小型管理系统的权限设计方法,供大家参考使用。以下为描述权限设计的实现过程。
1系统的功能描述
在各行业的管理系统中,系统的功能、复杂度相差可能很大,但有些基本的功能模块是类同的,如邮件模块、用户管理模块、公告、日志等。下图为本文为描述权限设计的实现过程而引用的功能树状表。上图为作者编写的企业信息管理系统功能架构。该系统是运行于Windows系列平台上的一款应用软件。本软件使用Vi-sualBasic6.0语言和SQLService数据库开发,主要用于生产企业的信息管理。系统功能模块采用树状结构,系统功能一目了然,也便于权限管理。系统功能基本包括了企业生产经营活动的主要内容,并可以根据实际需要,扩展功能模块。在业务管理中,包含订单管理、合同管理、物料(仓库)管理、工序管理。在系统模块中,包含系统设置、用户管理、报告模板、下拉选项、打印设置、日志。在邮件模块中,包含基本的收件箱、发件箱、草稿箱,实现常用的邮件系统。公告模块,用于厂务公示。饭堂模块,用于饭堂订餐、收支等饭堂日常管理。
2系统的权限分析
在上述的系统功能中,管理员对于每一个可以登录的用户都需要进行权限管理。在每个系统功能模块,都需要根据实际情况和具体架构,决定其权限的定义。因此,系统的权限分析,首先要将实际使用的权限展开。系统的权限展开,要针对不同的应用,从维护性、灵活性、完整性等多个方面考虑,选择合适的权限层次结构,留给足够的发展空间。尽管每个功能模块的权限不尽相同,但也有基本相同的权限,如增加、删除和修改等。以下为本系统的用户管理界面,右侧为用户权限的详细描述。权限的层次分为三层,一二层为定义系统功能的树状结构。第一层为系统的主功能模块显示权限,第二层为系统的次功能模块显示权限,第三层为操作权限。取消第一层权限,则在系统登录之后,树状功能表中主次功能模块不再显示出来,该模块下的所有权限设置也就没有意义。如:某个用户不能使用饭堂模块,则取消“76饭堂”,则饭堂设置、饭堂公示等就不用再设置。取消第二层权限,则在系统登录之后,树状功能表中次功能模块不再显示出来,该模块下的所有权限设置也就没有意义。如:某个用户不能使用物料管理模块,则取消“30物料管理”,则物料管理中的增加、删除和修改等权限就不用再设置。第三层权限属于操作层面,根据实际,给予用户的具体操作权限。如果只给用户浏览功能,则增加、删除和修改功能都要取消。
3C/S系统设计模式对权限设计的影响
系统设计采用的模式分C/S和B/S两种,系统的权限实现过程也有很大的差别。当前MIS或ERP的开发多采用C/S模式,本文所述的系统也是C/S模式,即数据处理(定义、查询和更新)由数据库服务器进行管理,而系统应用则由客户端的程序实现。在这种模式下,业务处理逻辑存放于工作站的客户端程序中,由于不同身份的用户,其业务处理逻辑不同,如果单独为每类用户开发与之工作相对应的应用程序,无疑会将系统开发工作复杂化而延长工程周期,也不利于以后的维护工作。针对这种情况,在实际开发过程中,一个业务部门的客户端程序通常被设计成通用型(即将所有功能集中于一身),并将各项功能的选择权限化,通过权限控制为不同身份的用户赋予与之身份对应的各项操作,屏蔽不能执行的操作调用,以此实现分工负责。采用这种设计程序,权限控制就成为系统的运行管理核心,尤其在维护系统安全方面起着重要的作用,因此权限控制模块的设计与实现就显得极为重要。
4系统权限管理实现步骤
(1)分析系统功能和权限,分层次绘出功能和权限列表,作出适当的预留,确定权限点数量。在上述的展开权限中,包括预留的,共有120个(当然可根据实际取大)权限点可以设置,对于本系统的功能和管理要求来说,已经足够了。(2)在数据库的用户表中,设计一个权限字段,字符型,长度为1000,用于储存每个用户的系统功能权限。每个权限点用“,”分隔,“1”表示有权限,“0”表示有无权限。如:在本例中,权限字段比如是“1,1,1,1,0,……,1,0,1”。(3)在客户端程序中,定义一组布尔型的数组Right(0to119),在用户登录时,将权限字段表中内容拆分并解释入Right(0to119)。然后根据Righ(t0to119)的内容,控制系统功能模块的显示以及用户的所有操作。
5结束语
上述的权限设计方法,编者已经多次应用于自己开发的系统中,从实际效果看,其灵活性相当好,可以快速适应系统的功能变更,将代码移植到其它系统也相当方便。
作者:韦金兴 单位:广东省云浮市质量计量监督检测所