配置权限系统中权限条件的方法与流程

文档序号:17082685发布日期:2019-03-09 00:27阅读:373来源:国知局

本发明涉及数据库软件技术领域,具体涉及一种展示及配置权限系统中权限条件的方法。



背景技术:

在权限系统中,管理员需要对不同的权限添加筛选条件,从而对满足相关条件的角色进行权限分配。添加的筛选条件之间可能存在并、或的复杂关系,因此需要其展示方式应尽可能直观清晰。管理员可能在原来筛选条件的基础上进行添加、删除、修改等操作,应当尽可能操作便捷。

针对上述需求,现已经存在的实现方式为列表展示:每个条件占一行,条件之间的并或关系通过缩进来体现,新添加的条件一次向下罗列。这种展示机操作方式不够直观,条件之间的逻辑关系不够一目了然,且每添加一个条件都需要选择一次与当前条件的并或关系,操作较为繁琐,不够灵活。



技术实现要素:

本发明的目的是针对上述背景技术中的缺陷,提供一种展示及配置权限系统中权限条件的方法,从而实现权限条件展示方式一目了然,且用户通过对任意节点和线的操作,可灵活配置权限条件,提升使用度。

为了达到上述的技术效果,本发明采取以下技术方案:配置权限系统中权限条件的方法,包括以下步骤:

s1:将条件实体转化成gojs格式数据。

s2:通过gojs插件获得所有节点的映射关系gojsarr;图中箭头前节点(a)指向箭头后节点(b)会得到形如:{from:a,to:b}的数据。

s3:通过gojs插件获得储存所有节点的数组allkeyarr。

s4:合并条件实体中的与关系。

s5:合并条件实体中的或关系。

s6:重复步骤s4、s5,直到只存在开始标志指向条件实体,条件实体指向结束标志,无其他指向。

s7:返回步骤s6中的条件实体到后台。

进一步的技术方案是:所述条件实体包含5个属性,分别是:条件列名,条件符号,条件值,and条件数组,or条件数组。条件列名:表示该条件的实体。条件符号:表示该条件的运算符号。条件值:表示该条件的运算值。and条件数组:表示与该条件是and关系的条件数组。or条件数组:表示与该条件是or关系的条件数组。

进一步的技术方案是:所述步骤s1的具体方法包括:

s101:条件实体记为r,其对应名称为n0;一个存储数据及其名称映射关系的二维数组,记为arrmap,结构为[[名称(n0),数据(r)]],将[n0,r]存入arrmap;定义一个数组储存gojs格式的数据,记为fromtoarr,fromtoarr=[{“from”:"begin",”to”:n0},{“from”:n0,”to”:"end"}];将n0入栈;

s102:取栈顶元素,记为m

s1021:通过在arrmap中遍历m,找到m映射的数据,记为mdata;判断mdata中or条件数组是否为空,若是执行步骤s1022;若否,将mdata中or条件数组的每条数据命名(n)并将其的添加到arrmap;n入栈;遍历fromtoarr,找到from或者to的值为m的每条数据,复制并将n代替m,再添加到fromtoarr中,再执行步骤s1022;

s1022:判断mdata.and条件数组是否为空,若是,遍历arrmap,找到mdata对应的名称m;遍历fromtoarr,将m替换成mdata存储的条件名;若否,mdata.and的每一条数据命名(n1,n2...),n入栈;遍历fromtoarr,指向m的节点为m0,m指向的节点为m1,n0代替m;将({from:m,to:n0},{from:n0,to:n1}...{from:ni,to:m1})添加到fromtoarr;删除数据:{from:m,to:m1};将mdata存储的条件名替换m;

s103:判断栈是否为空,若是,执行步骤s104;若否,执行步骤s102-步骤s1022;

s104:获取fromtoarr,通过gojs画图。

以上完成后可以将后台存储的条件关系转化成图显示,用户可通过鼠标操作对条件进行更改,确认保存修改后,gojs将图形转化成gojs格式数据,然后执行以下步骤将gojs格式数据转化成后台识别数据,以保存用户对条件的最终处理结果。

进一步的技术方案是:所述步骤s4的具体方法包括:遍历allkeyarr中每个元素d,遍历gojsarr,若d在gojsarr中的前节点数和后节点数均为1,则将d临时存入一个数组arrtemp中储存;同样方法遍历d的后节点d1,若d1在gojsarr中的前节点数和后节点数均为1,则将d1存入数组arrtemp中,以此类推,直到当前节点不满足前节点数和后节点数均为1;将arrtemp中的首个元素作为子条件实体中的条件,其后每个元素存入条件实体的and数组中,若元素在arrmap中存在一个子条件实体的映射,则找到这个子条件实体存入arrtemp相应位置;将这个表示一个and关系的实体anddata及其对应名name存入一个二维数组中arrmap中;遍历gojsarr,将节点指向合并,并删除gojsarr中所有from和to值为arrtemp数组中元素的数据。

进一步的技术方案是:所述步骤s5的具体方法包括:遍历arrtemp,遍历gojsarr,找到所有前后节点数为1且前后节点均相同的节点m,将m中首个节点作为子条件实体的条件,其他元素存入这个子条件实体的or数组,若元素在arrmap中存在一个子条件实体的映射,则找到这个子条件实体存入arrtemp相应位置;遍历gojsarr,将节点指向合并,并删除多余的指向。

进一步的技术方案是:所述gojs格式数据,包含两个属性:前节点属性和后节点属性。gojs图中每个条件可视为一个节点(node),图中每两个节点之间的映射即存在前节点指向后节点的带箭头的线,在数据中表示为:{“from”:frontnode,“to”:nextnode}(frontnode为前节点,nextnode为后节点)。

本发明与现有技术相比,具有以下的有益效果:结合图形化插件(如gojs),将配置条件图形化,并且条件之间的逻辑关系一目了然。对于配置任意条件进行修改条件名、添加条件、删除条件、改变条件间逻辑关系等操作。将后台的条件实体转化成插件识别的数据格式,从而展示以往用户保存的条件关系。在用户对条件进行操作并确定保存后,将插件获取的数据转化为条件实体传给后台,从而保存操作结果。

本发明通过结合gojs,采用类似于流程图的展示方式:每个条件视为一个节点,任意节点之间可添加带有箭头的线,使展示更为直观;可对每个节点进行添加、修改、删除,操作更为灵活便捷。通过对gojs和后台可识别的数据进行处理,使gojs与权限系统相结合,从而实现了权限条件展示方式一目了然,且用户通过对任意节点和线的操作,可灵活配置权限条件,提升使用度。

具体实施方式

下面结合本发明的实施例对本发明作进一步的阐述和说明。

实施例:

配置权限系统中权限条件的方法,假设以下场景:

某部门为可以查看并修改本公司员工的用户配置筛选条件:

首先部长可以查看任意员工工资,若职位不是部长则有一下条件:1.为本部门正式员工;2.职位为hr;3.拥有hr专业资格证书或者作为hr工作三年以上4.年龄在20-50岁之间。

得到以下结构数据(r):r的条件为”为正式员工”,or数组的条件为”职位为部长”,and数组中的条件为”职位==hr”和”年龄在20-50岁之间”。条件”职位==hr”又作为一个子条件实体的条件,这个子条件实体的and数组的条件为”作为hr工作三年以上”,or数组的条件为”拥有hr专业资格证书”。

首先是将条件实体转化成gojs格式数据:

步骤1:条件实体记为r,其对应名称为n0。一个存储数据及其名称映射关系的二维数组,记为arrmap,结构为[[名称(n0),数据(r)]],将[n0,r]存入arrmap。定义一个数组储存gojs格式的数据,记为fromtoarr,fromtoarr=[{“from”:"begin",”to”:n0},{“from”:n0,”to”:"end"}]。

将n0入栈。

步骤2:取栈顶元素,为n0。通过在arrmap中遍历n0,找到no映射的数据,为r。将r中or数组的每条数据命名(n1)并将其的添加到arrmap。n1入栈。遍历fromtoarr,找到from或者to的值为n的每条数据,复制并将n0代替m,再添加到fromtoarr中。首次对n0的处理结果为:arrmap=[[“n1”,{”职位为部长”,”and”:null,”or”:null}]],fromtoarr=[“from”:"begin",”to”:n0},{“from”:n0,”to”:"end"},“from”:"begin",”to”:n1},{“from”:n1,”to”:"end"}];n1入栈

然后判断r的and数组是否为空,若是,遍历arrmap,找到对应的名称。遍历fromtoarr,将n0替换成r存储的条件名。若否,mdata.and的每一条数据命名(n1,n2...),n入栈。遍历fromtoarr,指向m的节点为m0,m指向的节点为m1,n0代替m。将({from:m,to:n0},{from:n0,to:n1}...{from:ni,to:m1})添加到fromtoarr。删除数据:{from:m,to:m1}。将mdata存储的条件名替换m。处理结果为:arrmap=[[“n1”,{”职位为部长”,”and”:null,”or”:null}],[“n2”,{”职位==hr”,”and”:null,”or”:null}],[“n3”,{”年龄在20-50岁之间”,”and”:null,”or”:null}]],fromtoarr=[“from”:"begin",”to”:”为正式员工”},“from”:"begin",”to”:n1},{“from”:n1,”to”:"end"},{“from”:”为正式员工”,”to”:"n2"},,{“from”:n2,”to”:"n3"},,{“from”:n3,”to”:"end"}];n3、n2依次入栈。

步骤3:重复步骤2动作,直到栈空。处理结果为:fromtoarr=[{“from”:"begin",”to”:”为正式员工”},{“from”:"begin",”to”:”职位为部长”},{“from”:”职位为部长”,”to”:"end"},{“from”:”为正式员工”,”to”:”职位==hr”},,{“from”:”作为hr工作三年以上”,”to”:”年龄在20-50岁之间”},{“from”:”年龄在20-50岁之间”,”to”:"end"},{“from”:”职位==hr”,”to”:"作为hr工作三年以上"},{“from”:”作为hr工作三年以上”,”to”:"年龄在20-50岁之间"},{“from”:”拥有hr专业资格证书”,”to”:"年龄在20-50岁之间"}];

步骤4:获取fromtoarr,通过gojs画图。

以上完成后可以将后台存储的条件关系转化成图显示,用户可通过鼠标操作对条件进行更改,确认保存修改后,gojs将图形转化成gojs格式数据,然后执行以下步骤将gojs格式数据转化成后台识别数据,以保存用户对条件的最终处理结果。

通过gojs插件方法可获得所有节点的映射关系,存储在数组gojsarr中,假设沿用上面的例子,此时gojsarr=[{“from”:"begin",”to”:”为正式员工”},{“from”:"begin",”to”:”职位为部长”},{“from”:”职位为部长”,”to”:"end"},{“from”:”为正式员工”,”to”:”作为hr工作三年以上”},,{“from”:”作为hr工作三年以上”,”to”:”年龄在20-50岁之间”},{“from”:”年龄在20-50岁之间”,”to”:"end"},{“from”:”职位==hr”,”to”:"作为hr工作三年以上"},{“from”:”作为hr工作三年以上”,”to”:"年龄在20-50岁之间"},{“from”:”拥有hr专业资格证书”,”to”:"年龄在20-50岁之间"}]。

在此基础上进行以下操作:

步骤1:首先,合并条件实体中的与关系。遍历allkeyarr中每个元素d,遍历gojsarr,若d在gojsarr中的前节点数和后节点数均为1,则将d临时存入一个数组arrtemp中储存。同样方法遍历d的后节点d1,若d1在gojsarr中的前节点数和后节点数均为1,则将d1存入数组arrtemp中,...以此类推,直到当前节点不满足前节点数和后节点数均为1。将arrtemp中的首个元素作为子条件实体中的条件,其后每个元素存入条件实体的and数组中,若元素在arrmap中存在一个子条件实体的映射,则找到这个子条件实体存入arrtemp相应位置。将这个表示一个and关系的实体anddata及其对应名name存入一个二维数组中arrmap中。遍历gojsarr,将节点指向合并,并删除gojsarr中所有from和to值为arrtemp数组中元素的数据。首次处理结果为:gojsarr=[{“from”:"begin",”to”:”为正式员工”},{“from”:"begin",”to”:”职位为部长”},{“from”:”职位为部长”,”to”:"end"},{“from”:”为正式员工”,”to”:”b”},,{“from”:”b”,”to”:”年龄在20-50岁之间”},{“from”:”年龄在20-50岁之间”,”to”:"end"},{“from”:”拥有hr专业资格证书”,”to”:"年龄在20-50岁之间"}],arrmap=[“b”,{条件:”职位==hr”,”and”:[{条件:”作为hr工作三年以上”}],”or”:null}]

步骤2:合并条件实体中的或关系。

遍历arrtemp,遍历gojsarr,找到所有前后节点数为1且前后节点均相同的节点m,将m中首个节点作为子条件实体的条件,其他元素存入这个子条件实体的or数组,若元素在arrmap中存在一个子条件实体的映射,则找到这个子条件实体存入arrtemp相应位置。遍历gojsarr,将节点指向合并,并删除多余的指向。首次处理结果为:gojsarr=[{“from”:"begin",”to”:”为正式员工”},{“from”:"begin",”to”:”职位为部长”},{“from”:”职位为部长”,”to”:"end"},{“from”:”为正式员工”,”to”:”d”},{“from”:”d”,”to”:”年龄在20-50岁之间”},{“from”:”年龄在20-50岁之间”,”to”:"end"}],arrmap=[[“b”,{条件:”职位==hr”,”and”:[{条件:”作为hr工作三年以上”},],”or”:null}],[“d”,{条件:”职位==hr”,”and”:[{条件:”作为hr工作三年以上”,”and”:null,”or”:null}],”or”:[{条件:”拥有hr专业资格证书”,”and”:null,”or”:null}]}]。

重复步骤1、2直到只存在开始标志指向条件实体,条件实体指向结束标志,无其他指向。

步骤3:返回arrmap最后一个元素的条件实体到后台。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1