中午时看到一篇关于工作流角色的应用问题,没想到晚上又和一个朋友偶然间谈论起了项目开发中的角色问题,把自己的一点想法在园里留个痕迹,希望对大家有所帮助。
对于应用程序来说,权限控制是一个关键功能,其贯穿于整个软件的开发与使用周期,能有一个好的权限控制解决方案能提升项目开发速度,特别是系统的维护阶段,更能够体现出来。
权限的控制,理所当然的引出角色,组织结构等。项目经理拥有查看本人的项目信息权限,而且可以修改项目信息;设计代表可以查看本人的项目信息,但只能以只读的方式查看;老总可以查看公司所有的项目信息,并且可以修改所有的项目,所有的一切都是角色与权限的结合,而人,只是站在了某个角色,或者说某几个的角色角度,系统不会知道这个人能干什么,只能够根据当前的用户所拥有的角色去对应数据集权限,表单操作权限等,当然首先是菜单目录权限的过滤,还有很多别的权限类别。
说一下目前的项目开发中关于组织机构模块的操作过程,因为可能存在子部门,所以部门是以树形结构展现,根节点当然是公司,以下的节点会根据关系可能分为多级,当然我们会叫做子部门,关系也可能是直属本公司部门,也可能是以分公司的形式,这些应该只是根据实际需求理解上的问题。根据实际的公司结构,其实公司越大越能够清晰的体现,部门里面是分为某某职位的,在系统中也就是对应到角色,相同职责不同部门的部门经理其实角色一样,所以如果说部门经理开会,只需要根据经理这个角色编号去每个部门查找该角色对应的人即可,也引出部门中的角色应该可以是多人。具体的操作就是进入部门后要为部门选择当前部门中存在的角色,这样部门角色关系就确定下来。最后就是为当前部门里的角色任命某些人来就职。这样公司的结构就完整了,而且每个人也找到了各自的职位,一提起某某部门的经理,就可以清晰的知道是谁。按照这样的结果,可以看得出每个人是可能拥有多种职责,甚至如果是小公司的话一个人可能会参与到多个部门的多个职位,这种情况没法拿理论来说,因为实际中已经发生了,而且什么情况都有可能,你想不到的,他们也能办得到。。
根据上段落所说的,我们可以得到一个人在各个部门中所拥有的角色信息(职位),有一点就是在目前开发中对于一个成员来说会指定一个部门,也就是如果添加一个用户时应该为用户选择一个部门,这应该是理论上应该的,但这样并不妨碍一个人多部门角色,只是如果在选择部门用户时会根据这个初始化的部门来提取,当然所有的都有例外~
想起了webcast中的一句话:软件就像是变色龙...
上述中说到的角色是相对来说固定不变的,所以我们平常都称之为静态角色,也就是在组织结构中明确指定的部门角色成员信息。系统中还有另外一种角色,我们称之为动态角色,这也是自己新工作后接触到的,下面举例说明,挺好理解的。
对于一个项目来说需要指定项目经理,而项目经理是个角色,但对于不同的项目来说都会各自有不同的项目负责人,而且可能会有多个人拥有该角色,这种情况我们就要为该项目指定某些人来充当该项目的项目经理这个临时角色,这些人就是该项目的动态角色。其他情况还很多,特别是这种随着"项目"走的模块。(最后这个项目是个广义上的项目,可能是一次演讲,可能是一份合同等)
了解了动态角色,就可以想象得出角色是需要分类的,也就是动态角色与静态角色之分。而我们在项目中动态角色并非直接得应用,而是对其进行了一次分组操作,也就是指定某几个动态角色归属哪类,这个跟我们的实际情况有关,因为有一种情况是同一个项目需要同时并列得为多个动态角色选择人员。平常情况下是不需要的,比如为项目经理指定PM组。
最后就是保存了,保存时是保存有四个字段:主键、宿主、角色、用户,已足够。
回到权限的控制,上面提到,对于列表要进行数据集授权,角色范围就应该是拥有该项目操作的静态角色以及拥有操作该项目的某动态角色所对应的成员。
就谈这些,这块还有好多想法,以后再说,希望对大家有帮助~