系统后台权限数据管理思维
为什么写这篇文章?
写这篇文章的目的有两个:一个原因是,由于最近将近两年都在接触大型的系统,我有幸作为一个软件实施方的一员,接触并了解了几个大型的项目,并自己也主导设计了一款软件系统,我对于软件的后台设计有了一定程度的了解,有能力阐述清楚这个问题。另外一个原因是,曾经我作为一个软件小白,想要在网上找到相应的资料,发现,大部分的文章都来自与开发人员,他们偏向于从技术层面进行阐述,读起来晦涩难懂,很少从业务和原理上进行阐述,还有一部分文章阐述的层面较为浅显,浅尝辄止,并没有从整体到部分进行完整的阐述,我这篇文章力求简单明了,完整全面,任何人都通俗易懂。
系统后台一般包括哪些内容,有什么用处?
系统后台一般是管理者进行系统管理的一个模块。根据软件的不同用途,其管理的内容各不相同。举个简单的例子:今日头条、腾讯视频、头条号等内容平台,一般其后台都会有内容审核功能,用户账号管理、权限分配等等。用户发布一篇文章,后台进行审核,通过后,方可进行展示。
我今天所阐述的系统后台,指的是更为核心的东西,是一个系统的心脏。指的是权限数据管理,这一个部分的设计最为复杂也是系统设计最难最基础的部门。
权限包括两个部分:一个是操作权限,一个是数据权限。
操作权限又包括两个部分:一个是菜单权限,另外一个是按钮权限。
菜单权限。举个例子来说:我们使用同一个办公软件系统,你是HR,你有招聘模块的菜单,可以进行招聘相关的操作,我是财务,我有费用报销模块的菜单,而你没有。这样我们的菜单是不一定的。我们都可以使用办公软件,但是我们的职位不同,所以分配的菜单是不一样的。
按钮权限。举个例子:我们两个都是人资部门的人,你是招聘专员,我是人资经理。我们虽然都有招聘菜单,但是你没有招聘需求审批的按钮,你没有相应的权限操作,只有我可以进行招聘需求的审批。
数据权限,说起来就比较简单容易理解了,比如拿快消行业来说,我是上海区的省区经理,你是江苏大区的省区经理,我们职位相同,我们都是省区经理,我们拥有的操作权限也是一样的,但是我们看到的数据是不一样的,我是上海地区的经理,只能允许看到上海的销售数据,江苏地区的销售数据我是看不到的,同理,江苏区的省区经理也是一样的。所有这些,都是可以通过数据权限进行控制的。
怎么进行权限的控制?
我主要介绍一种常见的权限控制方法,也是比较常用的权限设计方式,这种是对小型或大型企业都非常适用。我们是以企业的角度设计这款系统的,所以在设计之初就有许多“不确定的因素”,我在这里就一一介绍一下。
自上而下设计模式
这种模式贯彻了系统权限管理,我们将企业分为公司—部门—岗位—角色—用户,分层管理逐级降低,使权限管理条理清晰。
当公司—部门—岗位—角色—用户都设定好了我们就可以设置权限了,我们主要是在角色—用户设置了功能权限—数据权限。
角色—功能权限—数据权限
他的设计原理是:把操作权限分配给角色,这样新增一个新的角色以后,就会给这个新增的角色分配相应的操作权限,包括操作按钮和操作菜单。数据权限也细分开来,不同角色岗位有独立数据库也可以共享数据。
功能授权
数据授权
用户—功能权限—数据权限
用户和角色的权限的差不多,只是增加更多的功能对用户的控制。
有人觉得公司—部门—岗位有什么用呢?我在这里解释一下,公司和部门是必需的,我们为企业长久发展设计了总公司及子公司,方便企业的管理。部门可以看做一个个类群,对用户用户进行分类管理。这岗位就涉及到了工作流引擎和流程引擎。
这种权限设计方案适用于OA、ERP、MIS、CRM、电商平台等系统,他可以根据企业的规模进行调整,帮助企业在任何时候都有一个舒适的管理环境。
这样设计有什么好处呢?
举个例子说吧:当一个员工离职了,只需要停用该员工的用户账号,把职位移除,如果新来一个员工替代他,只需要给新员工新建一个用户账号,同时把用户导入角色就OK了,不需要重新分配数据权限和操作权限。
再举个例子吧:当两个员工A和B进行跨部门职位调岗时,该怎么操作呢?先把A和B的部门调换,然后把他们所在的岗位中移除了,再分配的其他岗位上,在用户界面重新分配数据库。
如果有考虑有工作流的情况,就需要考虑流程节点处理对象,可以按照工作流岗位、角色和具体用户三个维度进行配置,流程可以设定成整个企业也可以具体到某个角色。
此外,对于,有相应人员编制的企业来说,可以保证职位的固定,只会有用户的增减,职位可以始终保持不变,这样编制就得以控制了。