权限树的生成方法

文档序号:6522554阅读:256来源:国知局
权限树的生成方法
【专利摘要】本发明适用于办公软件领域,提供了一种权限树的生成方法,包括:从离散节点集合中选择一个离参考树根节点最近的未遍历的离散节点,将该离散节点设置成权限节点1;从离散节点集合的未遍历的离散节点中选择离权限节点1最近的一个未遍历的离散节点,将离权限节点1最近的一个未挂载的离散节点设置成下一个权限节点;并将该父节点挂载在权限节点1下;重复执行直至离散节点结合的所有离散节点遍历。本发明提供的技术方案具有效率高的优点。
【专利说明】权限树的生成方法
【技术领域】
[0001]本发明属于办公软件领域,尤其涉及一种权限树的生成方法。
【背景技术】
[0002]在对树型结构数据的节点进行权限控制后,对于有权限的节点,如果在同一树支上,需要将该节点的上下级关系保持显示的场景中最终显示的数据结构,这个数据结构称之为权限树。
[0003]例如,某企业有如下的栏目树(如图1所示),对于不同组织机构的员工或者某些员工可浏览的栏目是不同的。
[0004]对于中大型企业中不同的信息的发布者往往是不同的信息员,也就是说不同的信息员发布的信息不同,而这种信息的不同划分最细粒度就是栏目。例如事业部的信息员负责发布假期公告、员工假期公告、经理假期公告,事业部信息员的权限树如图2所示。集团的信息员负责发布专家假期公告、报销公告,集团的信息员的权限树如图3所示。
[0005]企业中的栏目树在通常称为参照树(如图1所示),事业部信息员的权限树上的假期公告、员工假期公告、经理假期公告,集团信息员权限树上的专家假期公告、报销公告都是企业栏目树上的离散节点,这些离散节点在本发明中称为权限节点,然而假期公告、和经理假期公告是在同一树支上的,而对于这个树支上的领导假期公告虽然没有权限,但也需要显示在权限树上,类似领导假期公告这种节点通常称为连接节点,连接节点与权限节点通常在业务功能上是有区别的,例如,事业部信息员不能发布连接节点领导假期公告下面的公告。对于集团信息员对专家假期公告、报销公告的上级都没有权限,所以它们的上级都不能显示在权限树上,从而使其的深度变成了相同。
[0006]现有的权限树的生成就是要把所有离散节点挂接到权限树的过程。对于现有的权限树的生成算法需要反复的遍历参照树,所以现有的权限树的生成方法的效率低。

【发明内容】

[0007]本发明实施例的目的在于提供一种权限树的生成方法,旨在解决现有技术中权限树生成的效率低的问题。
[0008]一种权限树的生成方法,其特征在于,所述方法包括如下步骤:
[0009]A、从离散节点集合中选择一个离参考树根节点最近的未遍历的离散节点,将该离散节点设置成权限节点I,将该权限节点I的遍历设置和连接节点设置修改成是,将头指针指向该权限节点I ;
[0010]B、从离散节点集合的未遍历的离散节点中选择离权限节点I最近的一个未遍历的离散节点,将离权限节点I最近的一个未挂载的离散节点设置成下一个权限节点,将下一个权限节点的遍历设置和连接节点设置修改成是;依据参考树查找下一个权限节点的父节点,如该父节点为权限节点,则将该下一个权限节点挂载在该父节点下;如该父节点不为权限节点,则将该下一个权限节点挂载在该父节点下,并将该父节点的遍历设置和连接节点设置修改成是,并将该父节点挂载在权限节点I下;
[0011]重复执行B直至离散节点结合的所有离散节点遍历,然后以权限节点I为权限树的根形成权限树。
[0012]在本发明实施例中,本发明提供的技术方案具有效率高的优点。
[0013]附图简要说明
[0014]图1是现有技术提供的企业栏目树不意图;
[0015]图2是现有技术提供的事业部信息员权限树示意图;
[0016]图3是现有技术提供的集团信息员权限树示意图;
[0017]图4是本发明【具体实施方式】提供的权限树的生成方法的流程图;
[0018]图5是本发明【具体实施方式】提供的权限树的生成方法的具体流程图;
[0019]图6是本发明实施例一提供的初始挂接示意图;
[0020]图7是本发明实施例一提供的初始参照树示意图;
[0021]图8是本发明实施例一提供的中间挂接示意图;
[0022]图9是本发明实施例一提供的中间参照树示意图;
[0023]图10是本发明实施例一提供的中间挂接示意图;
[0024]图11是本发明实施例一提供的中间参照树示意图;
[0025]图12是本发明实施例一提供的最终挂接示意图;
[0026]图13是本发明实施例一提供的最终参照树示意图;
[0027]图14是本发明实施例一提供的权限树示意图。
[0028]实施本发明的方式
[0029]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0030]本发明【具体实施方式】提供一种权限树的生成方法,该方法如图4所示,包括如下步骤:
[0031]401、从离散节点集合中选择一个离参考树根节点最近的未遍历的离散节点,将该离散节点设置成权限节点I,将该权限节点I的遍历设置和连接节点设置修改成是,将头指针指向该权限节点I ;
[0032]402、从离散节点集合的未遍历的离散节点中选择离权限节点I最近的一个未遍历的离散节点,将离权限节点I最近的一个未挂载的离散节点设置成下一个权限节点,将下一个权限节点的遍历设置和连接节点设置修改成是;依据参考树查找下一个权限节点的父节点,如该父节点为权限节点,则将该下一个权限节点挂载在该父节点下;如该父节点不为权限节点,则将该下一个权限节点挂载在该父节点下,并将该父节点的遍历设置和连接节点设置修改成是,并将该父节点挂载在权限节点I下;
[0033]403、重复执行402直至离散节点结合的所有离散节点遍历,然后以权限节点I为权限树的根形成权限树。
[0034]本发明的算法时间消耗主要在两个点,一是在参照树上遍历找到离散节点对应的参照节点;二是沿着离散节点对应的参照节点所在的位置向上查找树支。对于n个节点深度为d的参照树,第一点遍历的最大次数是n,第二点因为向上遍历时,每个节点不会重复所以其遍历次数为n,所以当有m个离散节点时遍历的次数为:最大遍历次数为=m*n+n也就是说本发明的算法时间复杂度是线性的。当然这是以牺牲空间复杂度为前提的,对于参照节点是否已经遍历,是否是连接节点以及对应的权限树节点和离散节点是否已经挂接的状态都是需要一定的空间的,本发明旨在提高执行的时间效率,对于物理内存容量不断增大的技术支持下,对于空间的消耗是可以容忍的。
[0035]离散节点:离散节点是参照树中授权给用户的节点。
[0036]父节点:父节点是针对参照树而言的,因为离散节点是参照树上的节点,所以除了参照树的根节点都是有上级节点的,在次发明中称为父节点。这里只是为了区分参照树中的上级节点的称谓。
[0037]上级节点:上级节点是针对权限树而言的,当离散节点挂接到某一节点上时,该节点就称为离散节点的上级节点。
[0038]头指针:为了记录在遍历过程中形成的树支的根,需要定义一个节点指针来指向它,这个指针称之为头指针。
[0039]另外,本发明的具体流程图如图5所示。
[0040]实施例一
[0041]事业部信息员权限树的示例遍历过程为例。
[0042]1、算法实现装置的初始状态
[0043]图6为离散节点迭代器(下面简称迭代器)的初始状态,离散节点包括假期公告、员工假期公告、经理假期公告,即迭代器中的三个节点。迭代器的迭代顺序是从上到下的。
[0044]图7为逆向倒挂装置中的参照树的原始图,左侧为标识为“是否已经遍历”,右侧标识为“是否是连接节点”。另外,逆向倒挂装置中在实际算法中还要负责头指针的移动,权限树的状态,挂接等职责,将在下面算法中动弹表述。
[0045]实现本发明提供的方法的算法过程
[0046]假期公告作为第一个离散节点进行遍历,首先将其权限状态设置为“权限节点”,挂接状态设置为“已挂接”,然后从迭代器中进入逆向遍历倒挂装置,将头指针指向假期公告,接着在参照树上找到和假期公告对应的节点,将其“是否已经遍历”状态设置为“Y”,“是否是连接节点”设置为“Y”,接着在参照树上找到假期公告的父节点公告,因公告不在离散节点集合中,作为假期公告的上级栏目,并将其“是否已经遍历”状态设置为“Y”,“是否是连接节点”设置为“Y”,因公告在参照树上没有父栏目,所以将假期公告的上级栏目对应的父栏目的“是否是连接节点”设置为“N”,并设置假期公告的上级栏目为空,至此头指针指向的假期公告作为一个树支进入到权限树仓库中,经过此过程装置的状态如下如8所示,此过程的参照树如图9所示:
[0047]员工假期作为第二个离散节点进入逆向遍历倒挂装置,因其在参照树上的对应节点的父栏目的“是否是连接节点”状态为“Y “,所以直接将其挂接到父节点对应的连接节点上,经过此过程装置的状态如图10所示,参照树如图11所示:
[0048]经理假期公告作为最后一个离散节点进入逆向遍历倒挂装置,其父节点领导假期公告不在离散节点集合中,所以将其“是否已经遍历”状态设置为“Y”,“是否是连接节点”设置为“Y”,并将离散节点经理假期挂接到领导假期公告节点下,但领导假期不是权限节点。接着从参照树上再找领导假期公告的父栏目假期公告,因其“是否是连接节点”状态为“Y “,所以将连接节点领导假期公告直接挂到权限树上的假期公告节点上,经过此过程装置的状态如图12所示,参照树如图13所示,权限树如图14所示:
[0049]至此,迭代器中的离散节点全部迭代完成,此时权限树仓库中的以假期公告为根的树支就是最终的权限树,其中白色背景的节点为有权限节点,棕黄色为非权限节点。
[0050]本领域技术人员可以理解,本发明实施例提供的技术方案全部或部分步骤是可以通过程序指令相关的硬件来完成。比如可以通过计算机运行程来完成。该程序可以存储在可读取存储介质,例如,随机存储器、磁盘、光盘等。
[0051]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的【具体实施方式】之内所作的等同替换或改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种权限树的生成方法,其特征在于,所述方法包括如下步骤: A、从离散节点集合中选择一个离参考树根节点最近的未遍历的离散节点,将该离散节点设置成权限节点1,将该权限节点I的遍历设置和连接节点设置修改成是,将头指针指向该权限节点I ; B、从离散节点集合的未遍历的离散节点中选择离权限节点I最近的一个未遍历的离散节点,将离权限节点I最近的一个未挂载的离散节点设置成下一个权限节点,将下一个权限节点的遍历设置和连接节点设置修改成是;依据参考树查找下一个权限节点的父节点,如该父节点为权限节点,则将该下一个权限节点挂载在该父节点下;如该父节点不为权限节点,则将该下一个权限节点挂载在该父节点下,并将该父节点的遍历设置和连接节点设置修改成是,并将该父节点挂载在权限节点I下; 重复执行B直至离散节点结合的所有离散节点遍历,然后以权限节点I为权限树的根形成权限树。
【文档编号】G06F17/30GK103617272SQ201310654772
【公开日】2014年3月5日 申请日期:2013年12月5日 优先权日:2013年12月5日
【发明者】刘建军 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1