一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于配置文件和变量定义升级维护权限的方法与流程

2022-06-02 14:20:45 来源:中国专利 TAG:
1.本技术涉及电子信息
技术领域
:,特别是涉及一种基于配置文件和变量定义升级维护权限的方法、装置、计算机设备和存储介质。
背景技术
::2.随着电子信息技术的发展,出现了基于角色的权限访问控制技术,基于角色的权限访问控制(rbac)是目前面向企业相对成熟有效的安全访问策略,对各种操作的权限(增删改查)不直接关联到具体用户,而是将操作权限集合成角色,用户关联角色,用户便有了相关联角色的所有权限,可简化权限的管理;最终转换为判断【“用户”是否可以对“功能”进行“操作”】这个逻辑表达式的值是否为真的求解过程。rbac的方案被广泛地应用在各种平台的应用程序,在任何多用户的应用中权限的隔离和责任的划分,不同权利与义务,与现实的社会角色非常类似,如企业的每个工作岗位,岗位之上的层层部门,所有角色各司其职;一个系统中,角色为了完成各种不同的工作而创造,用户根据责任资格赋予角色,角色也可以根据需要赋予新的权限,也可以根据需求回收权限,角色承载起了整个系统间访问者与资源的客观关系。对于军用以及一些安全性要求较高的应用程序,通常有可靠性、安全性、维修性、测试性、保障性、环境适应的军标六性要求,六性要求反向地也说明了普通的应用程序是会缺失这几方面;正向的思考下,简单或复杂的应用程序属于人为的创新性成果,创造性意味着不确定性,无法被信任,便是需要六性的约束。权限控制在于预先定义操作与用户关联,必须是系统正常运行,拒绝或者允许操作都是系统的可控范围;应用程序发布是生产与使用的分界线,生产阶段尽可能地预想到使用场景,无法一次性满足使用,可能是本身缺陷,可能是使用者的新需求;区别于固定有形产品,软件应用程序特性决定其交付的指令数据集合是可修改,而且修改代价微乎其微,也就是系统升级。系统升级是权限系统乃至整个系统的维护工作中最重要的手段,漏洞修复、系统优化、最新的需求满足,理论上都是可以解决的;权限系统是贯穿整个应用程序的脉络,权限系统的稳定性决定应用的稳定性,从结构层面来看造成权限系统出错或崩溃的原因无外乎权限逻辑,逻辑不是一成不变的,会由不同的人在不同的时间因为不同的需要进行调整,再健壮的逻辑结构也顶不住需求的变化和使用场景的更迭;软件产品的升级维护是变好完善的最好途径,这种改变也意味着原有结构的破坏,好比常说的问题越改越多,因此很多软件用户拒绝升级。3.现有的几种方法有:既定规则法是提前预防是非常聪明的做法,尽量避免可能会出现的异常情况,前期增加一定投入,可以很好地转被动为主动,后续维护升级在完整逻辑的基础上作简单实体增加,规则尽量多地去覆盖更多情况,包括正常和异常情况,按照既定的规则进行维护完善。强大而完整的既定规则制定者通常需要资历老练,具有丰富相关经验,非常熟悉系统业务逻辑的设计者;后续业务升级时肯定是从业务需要出发,不会从设计出发,最后都会成为业务需要与现有架构间的矛盾;系统设计时,过于强大的既定规则的设计本身也是大量的时间投入,项目成本是不会允许的,一味强调前期的设计使得项目投入遥遥无期也是不切实际的;更可怕的是设计方向无法满足维护升级需要的方向或者完全相违背;总的来说,既定规则的设定与后期维护升级矛盾的根本原因来源于无法避免的时间差,因此权限系统维护升级,把精力放在事前既定规则,仅仅适用于既定规则与业务需要的分歧不大,如若变动较大则不再适用。4.图形化终端法是在权限系统的基础上可以加上一个图形化的权限管理,也可以包含权限系统的升级,图形化管理的好处在于可以把复杂无序的权限数据图形化展示,再通过人为灵活管理,无论逻辑线路多么复杂,可以极大的简化和优化管理和权限系统的升级,图形化管理的优势在于当前版本的权限管理。升级维护面临的直接问题便是新旧版本的权限实体和兼容问题;而图形化管理并不能很好的解决升级维护时新旧版本间权限实体和逻辑兼容,因为实际使用的问题很难提前预知;毕竟图形化管理方案只是从使用终端解决权限难以管理,随着使用时间次数的增大,错误的数据越来越多,造成权限逻辑错误,再引入复杂的数据清洗将会使得权限系统愈发混乱。总的来说就是图形化管理的单元粒度不够基础,因此针对权限系统,升级维护图形化终端并不适用。5.数据迁移法是在权限系统复杂根因是数据复制,而单独数据并不会造成麻烦,数据的量和数据间的关系是造成权限系统无法升级管理维护罪魁祸首;实施部署时间充足的场景中,人为地反复确认也可以将旧版已有的数据备份,旧版环境完全清除,部署新版时将备份的权限数据导入,好处在于适用于绝大部分场景。旧数据迁移属于简单粗暴的方案,非常耗时耗力;人力迁移数据最致命的地方是人为操作容易出错,错误不容易发现,测试严重困难,为权限关系网埋下严重隐患,最终导致权限关系网错乱难以维护系统崩溃。权限数据关系网不能直接人力进行数据迁移最根本的原因在于数据间的复杂关系,复杂到人力无法理清。技术实现要素:6.基于此,针对上述技术问题,提供一种能够从源头解决权限系统既定规则无法预知升级后场景的矛盾的基于配置文件和变量定义升级维护权限的方法、装置、计算机设备和存储介质。7.第一方面,一种基于配置文件和变量定义升级维护权限的方法,其特征在于,所述方法包括:8.s1:调用升级维护单元读取用户指定的配置文件,所述配置文件包括多个配置项,分别为权限实体定义adf、权限数据ad、数据表结构dst、版本变更vc、行为op、匹配规则mr、数据表保存类型st、默认用户角色dur、默认角色关联权限dra;9.s2:解析并组装配置文件:组装权限数据ad、数据表结构dst和版本变更vc,默认用户角色dur、默认角色关联权限dra默认数据处理,替换权限实体定义adf,完成数据的读取与解析;10.s3:匹配写入数据库:根据匹配规则mr和数据表保存类型st和数据库表中数据对比结果完成数据库表修改;11.s4:完成升级维护,将上述步骤s1至s3全程记录到日志单元。12.上述方案中,可选地,升级维护单元只能以单个进程顺序执行,其特征在于,所述步骤s1之前包括:通过进程标识判断是否有其他的升级维护单元进程正在运行,若有正在运行的升级维护单元进程,本次执行直接结束,否则继续执行;13.在执行步骤s1后,若传入rebuild参数,则清除原有数据直接写入数据。14.上述方案中,进一步可选地,步骤s2解析组装配置文件具体包括:s201:解析配置文件读取adf、ad、dst、vc、op、mr、st、dur、dra,vc需要匹配的目标文件;15.s202:处理ad和dst数据,加入vc;根据adf定义将ad和dst的变量名替换成完成权限数据的装配;校验ad和dst数据字段属性的一致性,若不一致直接退出;16.s203:处理dur,dra默认数据和op,根据adf将变量替换为id,根据id规则运算得出dra所有的op,得出角色关联权限数据;17.s204:将经过合并的dst、vc数据整合为ms,将经过替换和计算的ad、vc、op、dur、dra整合为md;18.s205:写入ms、md到数据库;19.s206:升级维护单元进程退出,删除进程标识。上述方案中,进一步可选地,所述步骤s1中升级维护单元只能以单个进程顺序执行。20.上述方案中,进一步可选地,步骤s3匹配写入数据库具体包括:s3-step1:开始操作数据库,备份数据库;21.判断rebuild参数是否需要重建,进入重建步骤s3-step-rebuild-1或者结构匹配步骤s3-step-struct-1;22.s3-step-rebuild-1:清理相关数据库表数据及结构;23.s3-step-rebuild-2:为ms在数据库创建表;24.s3-step-rebuild-3:写入md到数据库表,写入md数据完成后继续执行step2;25.s3-step-struct-1:检查ms与103表的字段属性,属性一致重复表示不需要修改数据库表结构,重复执行s3-step-struct-1检查下一个,不一致继续执行s3-step-struct-2,数据库表不存在执行s3-step-struct-3;完成后执行s3-step-data-1;26.s3-step-struct-2:数据库表的字段属性有变更不一致需要重建数据表,开始事务,创建临时表,将原数据表中数据全部复制到临时表,数据列与变更后的ms一致;删除原表,重命名临时表为原表名,提交事务;重复执行s3-step-struct-1;27.s3-step-struct-3:为数据库创建数据表并重复执行step-struct-1;28.s3-step-data-1:识别md数据表的st保存类型和mr匹配类型,s3-st_null执行step-data-2,st_equal,st_not_exist执行s3-step-data-3;29.s3-step-data-2:st_null类型执行,判断数据库表中数据是否为空,为空则执行s3-step-data-5,完成后重复执行s3-step-data-1;30.s3-step-data-3:根据mr查找数据库表中是否存在匹配查找成功的数据,匹配查找成功时标记内存中的数据库表的此行数据匹配成功,并重复执行s3-step-data-3,匹配不成功执行s3-step-data-5增加数据,匹配完成后执行s3-step-data-4;31.s3-step-data-4:数据库表有未被标记匹配成功的数据时,st类型是st_equal执行s3-step-data-5删除;重复执行s3-step-data-1,执行完成后执行s3-step2;32.s3-step-data-5:增加当前行数据到数据库表,并返回上一步;33.s3-step-data-6:删除相应条件数据库表中的数据,并返回上一步;34.s3-step2:执行vc中定义的sql语句,更新version到数据库;35.s3-step3:删除旧版的数据库,重命名临时数据库表,将备份的数据库更新为正式的数据库,退出数据写入。36.上述方案中,进一步可选地,所述权限实体定义adf定义了所有权限变量以及所有权限对应的id,权限变量名和id遵守层级的约定,只有简单的层级关系;所述实体采用树形结构,变量表现实体含义并辅以注释;所述id的定义采用预留方式,2个16进制表示一个权限有效位,一个权限最大支持255个子权限,00表示子权限无效而此种情况只需要关注父权限,01到ff表示子权限的id有效。37.上述方案中,进一步可选地,其特征在于,所述权限数据ad的层级跟权限实体定义的层级一致;权限数据ad为第一版本数据,版本变更vc为第二版本数据,第二版本数据为第一版本数据的升级版本,权限数据ad与版本变更vc的权限数据会合并组成一个数据表,权限数据ad数据中支持识别增加、删除、sql,对权限数据ad数据进行相应增加、删除,或者在最后对数据库直接使用sql语句;版本变更vc也支持变更数据表结构dst,修改数据表结构dst时,如果是删除字段属性,原数据表将会备份,如果是增加字段属性,新字段将会是默认值或者空。38.上述方案中,进一步可选地,所述匹配规则mr为一个数据表规定,用于数据匹配判断的字段,匹配定义的字段一致便认为匹配成功,匹配时如果字段不一致则只比较共有的字段;39.数据表保存类型st指:针对每个数据表都有相应的数据保存类型st,数据保存支持3种类型,分别为:st_null类型表示某个数据表为空时才会添加默认数据;st_equal类型表示某个数据会比对每一条数据,匹配不存在会新增、不一致会删除;st_not_exist类型表示检查每一条数据不存在会新增,无视其余数据;默认保存类型是st_null,st_eqaul和st_not_exist保存时需要匹配规则mr的结果。40.第二方面,一种基于配置文件和变量定义升级维护权限的系统,所述系统包括:41.配置文件模块:用于定义权限实体、关联和默认数据;42.升级维护单元模块:用于供系统调用的接口,负责解析实体、关系、结构、权限行为、数据保存类型配置文件,用于将数据结果写入权限数据库表;43.数据库表模块:用于承载升级维护时权限实体、关系的计算结果输出,用于再次升级维护时进行对比旧版数据;44.日志单元模块:用于记录升级维护单元读取配置文件、解析并组装配置文件以及匹配写入数据库。45.第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:46.s1:调用升级维护单元读取配置文件,所述配置文件包括权限实体定义adf、权限数据ad、数据表结构dst、版本变更vc、行为op、匹配规则mr、数据表保存类型st、默认用户角色dur、默认角色关联权限dra;47.s2:解析并组装配置文件:组装权限数据ad、数据表结构dst和版本变更vc,替换权限实体定义adf,默认用户角色dur、默认角色关联权限dra默认数据处理,替换权限实体定义adf,完成数据的读取与解析;48.s3:匹配写入数据库:根据匹配规则mr和数据表保存类型st和数据库表中数据对比结果完成数据库表修改;49.s4:完成升级维护,将上述步骤s1至s3全程记录到日志单元。50.第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:51.s1:调用升级维护单元读取用户指定的配置文件,所述配置文件包括多个配置项,分别为权限实体定义adf、权限数据ad、数据表结构dst、版本变更vc、行为op、匹配规则mr、数据表保存类型st、默认用户角色dur、默认角色关联权限dra;52.s2:解析并组装配置文件:组装权限数据ad、数据表结构dst和版本变更vc,默认用户角色dur、默认角色关联权限dra默认数据处理,替换权限实体定义adf,完成数据的读取与解析;53.s3:匹配写入数据库:根据匹配规则mr和数据表保存类型st和数据库表中数据对比结果完成数据库表修改;54.s4:完成升级维护,将上述步骤s1至s3全程记录到日志单元。55.本发明至少具有以下有益效果:本发明采用配置文件作为载体,将权限实体定义、关系数据(权限数据ad、版本变更vc)、行为、数据表结构、匹配规则、数据表保存类型、默认用户角色、默认角色权限写入配置文件,升级维护单元读取配置数据、组装,得到数据表(权限数据库表)格式的数据,再根据匹配规则和保存类型进行数据变更,最终完成数据库的升级维护;文件中的数据承担着人为的修改和升级维护程序的解析使用,达到权限系统允许通过配置文件进行自定义数据整理,不再面临应对权限系统的数据时,需要整理层级,需要整理纵横交错的权限间关系,一团乱麻一样的角色权限,而配置文件对于任何使用方都有较好的可读性,增加可维护性。对于设计开发人员进行版本迭代时,对权限系统数据增加删除修改时只能通过操作数据库,而版本迭代的旧版本往往已经上线,拥有客户宝贵数据,直接人为操作数据库非常危险,必须进行升级维护只能是放弃或者数据完全重来。对于维护人员或者权限系统使用人员,复杂的权限间关系使用难度较大,配置文件的方法使得维护使用可定制,更便捷,也可以不进行任何修改,以默认方式平滑安全地进行权限升级维护。附图说明56.图1为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的流程示意图;57.图2为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的第二流程示意图;58.图3为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的解析组装配置文件的具体流程示意图;59.图4为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的匹配写入数据库的具体流程示意图;60.图5为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的默认角色权限展开的具体流程示意图;61.图6为本发明一个实施例提供的一种基于配置文件和变量定义升级维护权限的方法的升级维护单元的具体流程示意图;62.图7为一个实施例中计算机设备的内部结构图。具体实施方式63.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。64.本技术提供的一种基于配置文件和变量定义升级维护权限的方法,在一个实施例中,如图1所示,提供了一种基于配置文件和变量定义升级维护权限的方法,包括以下步骤:65.s1:调用升级维护单元读取配置文件,所述配置文件包括权限实体定义adf、权限数据ad、数据表结构dst、版本变更vc、行为op、匹配规则mr、数据表保存类型st、默认用户角色dur、默认角色关联权限dra;66.其中,在s1之前,通过进程标识判断是否有其他的升级维护单元进程正在运行,若有正在运行的升级维护单元进程,本次执行直接结束,否则继续执行,以及将权限实体定义adf、权限数据ad、数据表结构dst、版本变更vc、行为op、匹配规则mr、数据表保存类型st、默认用户角色dur、默认角色关联权限dra写入配置文件。升级维护单元不可以同时运行多个进程,而应当单个进程顺序执行。67.s2:解析并组装配置文件:组装权限数据ad、数据表结构dst和版本变更vc,替换权限实体定义adf,默认用户角色dur、默认角色关联权限dra默认数据处理,替换权限实体定义adf,完成数据的读取与解析;68.其中各配置文件数据说明:权限实体定义adf(accessdefine):定义了所有权限变量,以及所有权限对应的id,权限变量名和id必须遵守层级的约定,也仅会有简单的层级关系,不允许有其他关联;本方案的目的是可维护可管理,对实体进行变量定义主要是解决维护管理时旧数据没有可读性;实体定义主要包括变量和id,实体采用树形结构,变量必须表现实体含义并辅以注释,尽量不简写;而id的定义采用预留方式,2个16进制表示一个权限有效位,因此一个权限最大支持255(16*16-1)个子权限,00表示子权限无效而此种情况只需要关注父权限,01到ff表示子权限的id有效。69.例如有权限实体定义如下:70.#defineꢀꢀrbac_special_base_indexꢀꢀ0x01000000071.#defineꢀꢀrbac_dashboardꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ0x00100000072.#defineꢀꢀrbac_dashboard_p1ꢀꢀꢀꢀꢀꢀꢀꢀ0x00101000073.#defineꢀꢀrbac_dashboard_p2ꢀꢀꢀꢀꢀꢀꢀꢀ0x00102000074.#defineꢀꢀrbac_dashboard_p3ꢀꢀꢀꢀꢀꢀꢀꢀ0x001ff000075.rbac_special_base_index表示权限根节点,0x001000000表示一级权限,一级权限属于最高级权限,根节点不表示任何权限含义,仅用于部分计算,0x001010000表示二级权限,所有权限都属于根节点的子节点;rbac_dashboard_p1、rbac_dashboard_p2、rbac_dashboard_p3直接属于rbac_dashboard;如果需要找寻rbac_dashboard的子权限,只需要将目标权限与rbac_dashboard进行与运算,结果与rbac_dashboard一致便属于其子权限;而变量名rbac_dashboard可以从变量定义知晓它是一个首页页面;权限实体会在权限关系和数据定义中使用,升级维护单元解析时会把权限实体替换为id,使用id进行匹配,最终也会以id的形式写入数据库。权限数据ad(accessdata):实体定义的简单层级关系只是为了增加可读性,并不是数据库表关系的依据,权限数据的定义决定了数据库表的权限数据关系,采用的也是类似数据库表格式;但是权限关系的层级必须跟权限实体定义的层级一致,如果定义不按照层级定义,数据量变大后将会使权限系统维护难度增大。除了权限的层级关系,关系数据还会定义权限的名称、排序,如果版本维护过程中需要删除某个权限,可以删除或者注释ad中的数据,adf中依然保留,需要恢复时只需要在ad增加便可容易恢复,ad的权限如果adf没有则认为无效。76.数据表结构dst(datastructure):rbac的权限、用户、角色等数据表结构,也可以是自定义的数据表;表结构也支持在版本变更时变更,但不推荐。77.版本变更vc(versionchanges):权限数据ad属于初始数据也就是第一个版本的数据,版本变更vc是后续的升级版本的更改,ad与vc的权限数据会合并组成某个数据表,ad数据中支持识别增加、删除、sql,对ad数据进行相应增加、删除,也可以在最后对数据库直接使用sql语句。vc也支持变更数据表结构dst,修改dst时,如果是删除字段属性,源数据表将会备份,如果是增加字段属性,新字段将会是默认值或者空;版本变更vc读取时会与102的version参数对比,考虑到版本回退,只读取与version匹配的版本变更以及version更小的版本变更。78.行为op(operation):ad和vc属于整个升级维护管理和权限控制认证的核心,权限实体数据属于整个权限系统的大脑中枢,系统的各功能相当于肢体,行为op便是连接二者的神经网络;权限ad与行为op表现为1对n关系,op不定义,不复用,与ad和vc类似,op也是数据表格式,包括ad与一对键值,键值表示行为类型与行为关键字,最终权限系统根据行为类型与关键字计算权限认证结果;op可与在vc中增加删除被升级维护单元识别,但权限系统或其他管理单元不允许更改;权限行为类型主要包括菜单、页面、按钮、接口和远程接口等。79.匹配规则mr(matchingrule):为某个数据表规定用于数据匹配判断的字段,匹配定义的字段一致便认为匹配成功,匹配时如果字段不一致则只比较共有的字段;默认匹配一个数据表的所有字段。80.数据表保存类型st(savetype):针对每个数据表都有相应的数据保存类型st,数据保存目前支持3种类型,st_null(savetype:insertdefaultvaluewhentableisnull)、st_equal(checkeveryrowdata,insertintoifnotexist,deleteifnotequal)、st_not_exist(checkdata,insertintoifnotexist);st_null类型表示某个数据表为空时才会添加默认数据;st_equal类型表示某个数据会比对每一条数据,匹配不存在会新增、不一致会删除;st_not_exist类型表示检查每一条数据不存在会新增,无视其余数据;默认保存类型是st_null,st_eqaul和st_not_exist保存时需要mr的结果。81.默认用户角色dur(defaultuserrole):rbac的默认的支持的用户表、角色表和用户角色关系表。82.默认角色关联权限dra(defaultroleaccess):角色默认关联的权限行为,是用户或角色(有些场景除了角色关联权限,也有用户直接关联,但是标准rbac是角色关联,这里只探讨与权限数据的关联)与权限数据ad的默认关联数据,关联数据表需要有角色id、权限id、类型(认证权限、赋予权限),角色关系权限dra配置中定义了增加、删除两种处理方式,数据组装时会填入所有增加方式的权限以及其子权限,再去除所有删除方式的权限及其子权限,通常需要增加某个大模块,增加模块的权限会自动填入模块及模块下的子权限,增加的模块不属于一级权限而且其角色下无法逐级关联到一级权限,自模块向上会逐级关联;如果需要去掉其中的某个小模块,去掉小模块及其子权限即可,单纯删除无意义,dra标准的定义方法是增加大模块,排除小模块。83.s3:匹配写入数据库:根据匹配规则mr和数据表保存类型st和数据库表中数据对比结果完成数据库表修改;84.其中,数据库表为承载升级维护时权限实体、关系的计算结果输出,亦是再次升级维护时用于对比的旧版数据;为保护数据一致,升级维护单元运行时禁止其他单元读写数据库。85.s4:完成升级维护,将上述步骤s1至s3全程记录到日志单元。86.其中,日志单元为记录升级维护单元102解析文件、匹配数据,如果102执行过程出现无法预知的错误也会记录;取值范围0-15,1表示信息日志,2表示警告日志,4表示错误日志,8表示调试日志。如需要启用错误日志和调试日志,则配置log=12,0表示不启用任何日志。87.采用配置文件作为载体,将权限实体定义、关系数据(权限数据ad、版本变更vc)、行为、数据表结构、匹配规则、数据表保存类型、默认用户角色、默认角色权限写入配置文件,升级维护单元读取配置数据、组装,得到数据表(权限数据库表)格式的数据,再根据匹配规则和保存类型进行数据变更,最终完成数据库的升级维护;文件中的数据承担着人为的修改和升级维护程序的解析使用,达到权限系统允许通过配置文件进行自定义数据整理,不再面临应对权限系统的数据时,需要整理层级,需要整理纵横交错的权限间关系,一团乱麻一样的角色权限,而配置文件对于任何使用方都有较好的可读性,增加可维护性。对于设计开发人员进行版本迭代时,对权限系统数据增加删除修改时只能通过操作数据库,而版本迭代的旧版本往往已经上线,拥有客户宝贵数据,直接人为操作数据库非常危险,必须进行升级维护只能是放弃或者数据完全重来。对于维护人员或者权限系统使用人员,复杂的权限间关系使用难度较大,配置文件的方法使得维护使用可定制,更便捷,也可以不进行任何修改,以默认方式平滑安全地进行权限升级维护。88.在一个实施例中,如图2所示,升级维护单元102读取配置文件101的adf、ad、dst、vc、op、mr、st、dur、dra,组装ad、dst与vc,adf替换,dur、dra默认数据处理,adf替换,这里的adf是种定义ad、dst、vc会用到adf,ad、dst、vc组装完需要替换adf,dur、dra也会用到adf,dur、dra也要替换。完成数据的读取与解析;如果传入rebuild参数,清除原有数据直接写入数据,否则逐表根据st和mr规则和数据库103数据对比结果完成数据库表修改,全程记录输出日志到104。89.如图3,升级维护单元102解析参数及配置文件步骤如下:90.方案中需要把配置解析、合并、计算,包括结构和数据;91.中间表结构ms(middlestructure):主要通过数据表结构dst和版本变更vc合并得出。92.中间表数据md(middledata):ad、vc、op、dur、dra经过替换、合并、整合处理。93.step1:升级维护单元102被执行或者调用。94.step2:通过进程标识判断是否有其他的升级维护单元102进程正在运行,有正在运行的102本次执行直接结束,否则继续执行;判断配置文件是否可以正常打开,以及数据表配置结构是否正常(字段、类型、长度等)、数据结构是否正常(字段属性、数据),若不正常直接结束;判断103版本是否已经满足目标version,满足直接结束。95.step3:解析102接收的到参数,db_path、log_path、log、version、rebuild。96.step4:解析101配置文件读取adf、ad、dst、vc、op、mr、st、dur、dra,vc需要匹配version。97.step5:处理ad和dst数据,加入vc;根据adf定义将ad和dst的变量名替换成完成权限数据的装配;校验ad和dst数据字段属性的一致性,不一致直接退出。98.step6:处理dur,dra默认数据和op,根据adf将变量替换为id,根据id规则运算得出dra所有的op,得出角色关联权限数据。99.step7:将经过合并的dst、vc数据整合为ms,将经过替换和计算的ad、vc、op、dur、dra整合为md。100.step8:写入ms、md到103数据表。101.step9:102进程退出,删除进程标识;其他也有不正常情况时只会删除进程标识,不会更新103,所有信息、警告、错误、调试日志会在104中体现。102.以上完成了解析、组装配置文件数据,图4会说明如果将组装好的数据写入数据库。103.如图4,升级维护单元102将ms、md与数据库103匹配写入过程:104.step1:开始操作103,备份103;判断rebuild参数是否需要重建,进入重建步骤step-rebuild-1或者结构匹配步骤step-struct-1。105.step-rebuild-1:清理相关103表数据及结构。106.step-rebuild-2:为ms在103创建表。107.step-rebuild-3:写入md到103表,写入md数据完成后继续执行step2。108.step-struct-1:检查ms与103表的字段属性,属性一致重复表示不需要修改103表结构,重复执行step-struct-1检查下一个,不一致继续执行step-struct-2,103表不存在执行step-struct-3;完成后执行step-data-1。109.step-struct-2:103表的字段属性有变更不一致需要重建数据表,开始事务,创建临时表,将原数据表中数据全部复制到临时表,数据列与变更后的ms一致;删除原表,重命名临时表为原表名,提交事务;重复执行step-struct-1。110.step-struct-3:为103创建数据表并重复执行step-struct-1。111.step-data-1:识别md数据表的st保存类型和mr匹配类型,st_null执行step-data-2,st_equal、st_not_exist执行step-data-3。112.step-data-2:st_null类型执行,判断103表中数据是否为空,为空则执行step-data-5,完成后重复执行step-data-1。113.step-data-3:根据mr查找103表中是否存在匹配查找成功的数据,匹配查找成功时标记内存中的103表的此行数据匹配成功,并重复执行step-data-3,匹配不成功执行step-data-5增加数据,匹配完成后执行step-data-4。114.step-data-4:103表有未被标记匹配成功的数据时,st类型是st_equal执行step-data-5删除;重复执行step-data-1,执行完成后执行step2。115.step-data-5:增加当前行数据到103表,并返回上一步。116.step-data-6:删除相应条件103表中的数据,并返回上一步。117.step2:执行vc中定义的sql语句,更新version到103。118.step3:删除旧版的103,重命名临时103表,将备份的103更新为正式的103,退出数据写入。119.以上是升级维护单元的详细过程,整个升级维护方案管理的主要对象是权限数据库表,入口便是配置文件,每次升级维护,只需要维护配置文件便可以达到维护权限数据的目的;升级维护单元只会在升级维护时被运行,运行时长应该控制在1分钟完成,不需要更多交互,运行过程不应卡住或卡死。120.默认角色权限展开:dra是默认角色拥有的权限,dra采用精简的定义,102进行处理展开,dra展开如图5:121.step1:默认权限展开开始执行调用。122.step2:md为空或者dra定义为空直接退出;查找md的dra(已经替换过id),添加模式权限,传入当前权限到执行step3得到所有添加模式权限。123.step3:添加模式权限父权限id集合,执行step-parent-1得到父权限集合继续执行step4。124.step-parent-1:将传入权限和0xff进行与运算,结果是否为0,为0执行step-parent-2;不为0则执行step-parent-3。125.step-parent-2:为0时右移1次8位,记录右移次数,并重复执行step-parent-1。126.step-parent-3:右移1次8位,左移记录次数个8位得到一个父权限。127.step-parent-4:判断得到父权限与0x010000000比较,相等则返回父权限集合到step3,不相等将父权限添加到父权限集合并重复执行step-parent-3。128.step4:添加模式权限查找定义权限的子权限和父权限,执行step-add-1获得所有子权限和父权限信息,继续执行step5。129.step-add-1:传入一个权限和父权限集合,查找md的ad与传入权限和父权限对比,执行step-add-2。130.step-add-2:传入权限id和ad的权限id进行与运算,结果等于传入权限id便判断为属于传入权限的子权限,或者ad的权限id在父权限集合中判定为属于传入权限的父权限,并重复执行step-add-1,执行完成后返回所有添加模式权限到step4。131.step5:查找排除模式权限,执行step-del-1并传入所有添加模式权限和当前排除模式权限,完成后执行step6。132.step-del-1:查找所有的添加模式权限,执行step-del-2与当前排除模式权限进行与运算匹配。133.step-del-2:排除模式权限id与添加模式权限id进行与运算,结果等于排除模式权限id则排除相应权限。134.step-del-3:添加模式权限查找完成后进行删除后处理。135.step-del-4:已经过删除处理的添加模式权限会存在没有任何一个叶子(最低级)权限的情况,此时需要一级一级向上删除;搜索排除模式节点查找兄弟节点(仍存在兄弟节点的不用删除);得到排除模式节点的直接父节点,循环右移8位到0xff与运算不为0,再右移1次8位,左移相应次数的8位。136.step-del-5:查找添加模式权限id中不等于直接父节点的权限,但是与运算匹配后等于直接父节点,表明直接父节点仍然存在直接子节点,也就是兄弟节点。137.step-del-6:无法查找到,删除添加模式下排除模式的直接父节点,循环执行step-del-4直到处理完所有添加模式权限。138.step6:将添加模式与排除模式合并后的数据保存在md的默认角色权限数据中,调用退出,交还数据给主流程。139.如无特别跳转说明,是直接的顺序执行,过程中某些多次出现的处理方式进行部分省略,如与运算匹配,添加模式,排除模式等;140.与运算判断目标权限是否属于子权限:将当前权限id和目标权限id与运算,与运算结果跟当前权限id对比,相等表示目标权限属于当前权限的字权限(自身也被视为子权限),不相等表示目标权限不属于子权限。141.查找父权限:2个16进制位表示有效权限,也就是8位2进制位,因此循环右移1次8位表示去除右边2个0,右移到与0xff进行与运算是否为0表示最后2位是否为0,以此来查找所有父权限;142.直接父节点:一个权限的第一个父权限节点,叶子节点表示和0xff与运算不为0,已经没有子节点,是最低等级权限。143.在一个实施例中,提供了一种基于配置文件和变量定义升级维护权限的系统,包括以下程序模块配置文件模块:用于定义权限实体、关联和默认数据;144.升级维护单元模块:用于供系统调用的接口,负责解析实体、关系、结构、权限行为、数据保存类型配置文件,用于将数据结果写入权限数据库表;145.数据库表模块:用于承载升级维护时权限实体、关系的计算结果输出,用于再次升级维护时进行对比旧版数据;146.日志单元模块:用于记录升级维护单元读取配置文件、解析并组装配置文件以及匹配写入数据库。147.关于一种基于配置文件和变量定义升级维护权限的装置的具体限定可以参见上文中对于一种基于配置文件和变量定义升级维护权限的方法的限定,在此不再赘述。上述一种基于配置文件和变量定义升级维护权限的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。148.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种一种基于配置文件和变量定义升级维护权限的方法。149.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于配置文件和变量定义升级维护权限的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。150.本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。151.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,涉及上述实施例方法中的全部或部分流程。152.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,涉及上述实施例方法中的全部或部分流程。153.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。154.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。155.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献