亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

權(quán)限樹(shù)的生成方法

文檔序號(hào):6522554閱讀:272來(lái)源:國(guó)知局
權(quán)限樹(shù)的生成方法
【專利摘要】本發(fā)明適用于辦公軟件領(lǐng)域,提供了一種權(quán)限樹(shù)的生成方法,包括:從離散節(jié)點(diǎn)集合中選擇一個(gè)離參考樹(shù)根節(jié)點(diǎn)最近的未遍歷的離散節(jié)點(diǎn),將該離散節(jié)點(diǎn)設(shè)置成權(quán)限節(jié)點(diǎn)1;從離散節(jié)點(diǎn)集合的未遍歷的離散節(jié)點(diǎn)中選擇離權(quán)限節(jié)點(diǎn)1最近的一個(gè)未遍歷的離散節(jié)點(diǎn),將離權(quán)限節(jié)點(diǎn)1最近的一個(gè)未掛載的離散節(jié)點(diǎn)設(shè)置成下一個(gè)權(quán)限節(jié)點(diǎn);并將該父節(jié)點(diǎn)掛載在權(quán)限節(jié)點(diǎn)1下;重復(fù)執(zhí)行直至離散節(jié)點(diǎn)結(jié)合的所有離散節(jié)點(diǎn)遍歷。本發(fā)明提供的技術(shù)方案具有效率高的優(yōu)點(diǎn)。
【專利說(shuō)明】權(quán)限樹(shù)的生成方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于辦公軟件領(lǐng)域,尤其涉及一種權(quán)限樹(shù)的生成方法。
【背景技術(shù)】
[0002]在對(duì)樹(shù)型結(jié)構(gòu)數(shù)據(jù)的節(jié)點(diǎn)進(jìn)行權(quán)限控制后,對(duì)于有權(quán)限的節(jié)點(diǎn),如果在同一樹(shù)支上,需要將該節(jié)點(diǎn)的上下級(jí)關(guān)系保持顯示的場(chǎng)景中最終顯示的數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)稱之為權(quán)限樹(shù)。
[0003]例如,某企業(yè)有如下的欄目樹(shù)(如圖1所示),對(duì)于不同組織機(jī)構(gòu)的員工或者某些員工可瀏覽的欄目是不同的。
[0004]對(duì)于中大型企業(yè)中不同的信息的發(fā)布者往往是不同的信息員,也就是說(shuō)不同的信息員發(fā)布的信息不同,而這種信息的不同劃分最細(xì)粒度就是欄目。例如事業(yè)部的信息員負(fù)責(zé)發(fā)布假期公告、員工假期公告、經(jīng)理假期公告,事業(yè)部信息員的權(quán)限樹(shù)如圖2所示。集團(tuán)的信息員負(fù)責(zé)發(fā)布專家假期公告、報(bào)銷(xiāo)公告,集團(tuán)的信息員的權(quán)限樹(shù)如圖3所示。
[0005]企業(yè)中的欄目樹(shù)在通常稱為參照樹(shù)(如圖1所示),事業(yè)部信息員的權(quán)限樹(shù)上的假期公告、員工假期公告、經(jīng)理假期公告,集團(tuán)信息員權(quán)限樹(shù)上的專家假期公告、報(bào)銷(xiāo)公告都是企業(yè)欄目樹(shù)上的離散節(jié)點(diǎn),這些離散節(jié)點(diǎn)在本發(fā)明中稱為權(quán)限節(jié)點(diǎn),然而假期公告、和經(jīng)理假期公告是在同一樹(shù)支上的,而對(duì)于這個(gè)樹(shù)支上的領(lǐng)導(dǎo)假期公告雖然沒(méi)有權(quán)限,但也需要顯示在權(quán)限樹(shù)上,類似領(lǐng)導(dǎo)假期公告這種節(jié)點(diǎn)通常稱為連接節(jié)點(diǎn),連接節(jié)點(diǎn)與權(quán)限節(jié)點(diǎn)通常在業(yè)務(wù)功能上是有區(qū)別的,例如,事業(yè)部信息員不能發(fā)布連接節(jié)點(diǎn)領(lǐng)導(dǎo)假期公告下面的公告。對(duì)于集團(tuán)信息員對(duì)專家假期公告、報(bào)銷(xiāo)公告的上級(jí)都沒(méi)有權(quán)限,所以它們的上級(jí)都不能顯示在權(quán)限樹(shù)上,從而使其的深度變成了相同。
[0006]現(xiàn)有的權(quán)限樹(shù)的生成就是要把所有離散節(jié)點(diǎn)掛接到權(quán)限樹(shù)的過(guò)程。對(duì)于現(xiàn)有的權(quán)限樹(shù)的生成算法需要反復(fù)的遍歷參照樹(shù),所以現(xiàn)有的權(quán)限樹(shù)的生成方法的效率低。

【發(fā)明內(nèi)容】

[0007]本發(fā)明實(shí)施例的目的在于提供一種權(quán)限樹(shù)的生成方法,旨在解決現(xiàn)有技術(shù)中權(quán)限樹(shù)生成的效率低的問(wèn)題。
[0008]一種權(quán)限樹(shù)的生成方法,其特征在于,所述方法包括如下步驟:
[0009]A、從離散節(jié)點(diǎn)集合中選擇一個(gè)離參考樹(shù)根節(jié)點(diǎn)最近的未遍歷的離散節(jié)點(diǎn),將該離散節(jié)點(diǎn)設(shè)置成權(quán)限節(jié)點(diǎn)I,將該權(quán)限節(jié)點(diǎn)I的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,將頭指針指向該權(quán)限節(jié)點(diǎn)I ;
[0010]B、從離散節(jié)點(diǎn)集合的未遍歷的離散節(jié)點(diǎn)中選擇離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未遍歷的離散節(jié)點(diǎn),將離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未掛載的離散節(jié)點(diǎn)設(shè)置成下一個(gè)權(quán)限節(jié)點(diǎn),將下一個(gè)權(quán)限節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是;依據(jù)參考樹(shù)查找下一個(gè)權(quán)限節(jié)點(diǎn)的父節(jié)點(diǎn),如該父節(jié)點(diǎn)為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下;如該父節(jié)點(diǎn)不為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下,并將該父節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,并將該父節(jié)點(diǎn)掛載在權(quán)限節(jié)點(diǎn)I下;
[0011]重復(fù)執(zhí)行B直至離散節(jié)點(diǎn)結(jié)合的所有離散節(jié)點(diǎn)遍歷,然后以權(quán)限節(jié)點(diǎn)I為權(quán)限樹(shù)的根形成權(quán)限樹(shù)。
[0012]在本發(fā)明實(shí)施例中,本發(fā)明提供的技術(shù)方案具有效率高的優(yōu)點(diǎn)。
[0013]附圖簡(jiǎn)要說(shuō)明
[0014]圖1是現(xiàn)有技術(shù)提供的企業(yè)欄目樹(shù)不意圖;
[0015]圖2是現(xiàn)有技術(shù)提供的事業(yè)部信息員權(quán)限樹(shù)示意圖;
[0016]圖3是現(xiàn)有技術(shù)提供的集團(tuán)信息員權(quán)限樹(shù)示意圖;
[0017]圖4是本發(fā)明【具體實(shí)施方式】提供的權(quán)限樹(shù)的生成方法的流程圖;
[0018]圖5是本發(fā)明【具體實(shí)施方式】提供的權(quán)限樹(shù)的生成方法的具體流程圖;
[0019]圖6是本發(fā)明實(shí)施例一提供的初始掛接示意圖;
[0020]圖7是本發(fā)明實(shí)施例一提供的初始參照樹(shù)示意圖;
[0021]圖8是本發(fā)明實(shí)施例一提供的中間掛接示意圖;
[0022]圖9是本發(fā)明實(shí)施例一提供的中間參照樹(shù)示意圖;
[0023]圖10是本發(fā)明實(shí)施例一提供的中間掛接示意圖;
[0024]圖11是本發(fā)明實(shí)施例一提供的中間參照樹(shù)示意圖;
[0025]圖12是本發(fā)明實(shí)施例一提供的最終掛接示意圖;
[0026]圖13是本發(fā)明實(shí)施例一提供的最終參照樹(shù)示意圖;
[0027]圖14是本發(fā)明實(shí)施例一提供的權(quán)限樹(shù)示意圖。
[0028]實(shí)施本發(fā)明的方式
[0029]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0030]本發(fā)明【具體實(shí)施方式】提供一種權(quán)限樹(shù)的生成方法,該方法如圖4所示,包括如下步驟:
[0031]401、從離散節(jié)點(diǎn)集合中選擇一個(gè)離參考樹(shù)根節(jié)點(diǎn)最近的未遍歷的離散節(jié)點(diǎn),將該離散節(jié)點(diǎn)設(shè)置成權(quán)限節(jié)點(diǎn)I,將該權(quán)限節(jié)點(diǎn)I的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,將頭指針指向該權(quán)限節(jié)點(diǎn)I ;
[0032]402、從離散節(jié)點(diǎn)集合的未遍歷的離散節(jié)點(diǎn)中選擇離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未遍歷的離散節(jié)點(diǎn),將離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未掛載的離散節(jié)點(diǎn)設(shè)置成下一個(gè)權(quán)限節(jié)點(diǎn),將下一個(gè)權(quán)限節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是;依據(jù)參考樹(shù)查找下一個(gè)權(quán)限節(jié)點(diǎn)的父節(jié)點(diǎn),如該父節(jié)點(diǎn)為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下;如該父節(jié)點(diǎn)不為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下,并將該父節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,并將該父節(jié)點(diǎn)掛載在權(quán)限節(jié)點(diǎn)I下;
[0033]403、重復(fù)執(zhí)行402直至離散節(jié)點(diǎn)結(jié)合的所有離散節(jié)點(diǎn)遍歷,然后以權(quán)限節(jié)點(diǎn)I為權(quán)限樹(shù)的根形成權(quán)限樹(shù)。
[0034]本發(fā)明的算法時(shí)間消耗主要在兩個(gè)點(diǎn),一是在參照樹(shù)上遍歷找到離散節(jié)點(diǎn)對(duì)應(yīng)的參照節(jié)點(diǎn);二是沿著離散節(jié)點(diǎn)對(duì)應(yīng)的參照節(jié)點(diǎn)所在的位置向上查找樹(shù)支。對(duì)于n個(gè)節(jié)點(diǎn)深度為d的參照樹(shù),第一點(diǎn)遍歷的最大次數(shù)是n,第二點(diǎn)因?yàn)橄蛏媳闅v時(shí),每個(gè)節(jié)點(diǎn)不會(huì)重復(fù)所以其遍歷次數(shù)為n,所以當(dāng)有m個(gè)離散節(jié)點(diǎn)時(shí)遍歷的次數(shù)為:最大遍歷次數(shù)為=m*n+n也就是說(shuō)本發(fā)明的算法時(shí)間復(fù)雜度是線性的。當(dāng)然這是以犧牲空間復(fù)雜度為前提的,對(duì)于參照節(jié)點(diǎn)是否已經(jīng)遍歷,是否是連接節(jié)點(diǎn)以及對(duì)應(yīng)的權(quán)限樹(shù)節(jié)點(diǎn)和離散節(jié)點(diǎn)是否已經(jīng)掛接的狀態(tài)都是需要一定的空間的,本發(fā)明旨在提高執(zhí)行的時(shí)間效率,對(duì)于物理內(nèi)存容量不斷增大的技術(shù)支持下,對(duì)于空間的消耗是可以容忍的。
[0035]離散節(jié)點(diǎn):離散節(jié)點(diǎn)是參照樹(shù)中授權(quán)給用戶的節(jié)點(diǎn)。
[0036]父節(jié)點(diǎn):父節(jié)點(diǎn)是針對(duì)參照樹(shù)而言的,因?yàn)殡x散節(jié)點(diǎn)是參照樹(shù)上的節(jié)點(diǎn),所以除了參照樹(shù)的根節(jié)點(diǎn)都是有上級(jí)節(jié)點(diǎn)的,在次發(fā)明中稱為父節(jié)點(diǎn)。這里只是為了區(qū)分參照樹(shù)中的上級(jí)節(jié)點(diǎn)的稱謂。
[0037]上級(jí)節(jié)點(diǎn):上級(jí)節(jié)點(diǎn)是針對(duì)權(quán)限樹(shù)而言的,當(dāng)離散節(jié)點(diǎn)掛接到某一節(jié)點(diǎn)上時(shí),該節(jié)點(diǎn)就稱為離散節(jié)點(diǎn)的上級(jí)節(jié)點(diǎn)。
[0038]頭指針:為了記錄在遍歷過(guò)程中形成的樹(shù)支的根,需要定義一個(gè)節(jié)點(diǎn)指針來(lái)指向它,這個(gè)指針?lè)Q之為頭指針。
[0039]另外,本發(fā)明的具體流程圖如圖5所示。
[0040]實(shí)施例一
[0041]事業(yè)部信息員權(quán)限樹(shù)的示例遍歷過(guò)程為例。
[0042]1、算法實(shí)現(xiàn)裝置的初始狀態(tài)
[0043]圖6為離散節(jié)點(diǎn)迭代器(下面簡(jiǎn)稱迭代器)的初始狀態(tài),離散節(jié)點(diǎn)包括假期公告、員工假期公告、經(jīng)理假期公告,即迭代器中的三個(gè)節(jié)點(diǎn)。迭代器的迭代順序是從上到下的。
[0044]圖7為逆向倒掛裝置中的參照樹(shù)的原始圖,左側(cè)為標(biāo)識(shí)為“是否已經(jīng)遍歷”,右側(cè)標(biāo)識(shí)為“是否是連接節(jié)點(diǎn)”。另外,逆向倒掛裝置中在實(shí)際算法中還要負(fù)責(zé)頭指針的移動(dòng),權(quán)限樹(shù)的狀態(tài),掛接等職責(zé),將在下面算法中動(dòng)彈表述。
[0045]實(shí)現(xiàn)本發(fā)明提供的方法的算法過(guò)程
[0046]假期公告作為第一個(gè)離散節(jié)點(diǎn)進(jìn)行遍歷,首先將其權(quán)限狀態(tài)設(shè)置為“權(quán)限節(jié)點(diǎn)”,掛接狀態(tài)設(shè)置為“已掛接”,然后從迭代器中進(jìn)入逆向遍歷倒掛裝置,將頭指針指向假期公告,接著在參照樹(shù)上找到和假期公告對(duì)應(yīng)的節(jié)點(diǎn),將其“是否已經(jīng)遍歷”狀態(tài)設(shè)置為“Y”,“是否是連接節(jié)點(diǎn)”設(shè)置為“Y”,接著在參照樹(shù)上找到假期公告的父節(jié)點(diǎn)公告,因公告不在離散節(jié)點(diǎn)集合中,作為假期公告的上級(jí)欄目,并將其“是否已經(jīng)遍歷”狀態(tài)設(shè)置為“Y”,“是否是連接節(jié)點(diǎn)”設(shè)置為“Y”,因公告在參照樹(shù)上沒(méi)有父欄目,所以將假期公告的上級(jí)欄目對(duì)應(yīng)的父欄目的“是否是連接節(jié)點(diǎn)”設(shè)置為“N”,并設(shè)置假期公告的上級(jí)欄目為空,至此頭指針指向的假期公告作為一個(gè)樹(shù)支進(jìn)入到權(quán)限樹(shù)倉(cāng)庫(kù)中,經(jīng)過(guò)此過(guò)程裝置的狀態(tài)如下如8所示,此過(guò)程的參照樹(shù)如圖9所示:
[0047]員工假期作為第二個(gè)離散節(jié)點(diǎn)進(jìn)入逆向遍歷倒掛裝置,因其在參照樹(shù)上的對(duì)應(yīng)節(jié)點(diǎn)的父欄目的“是否是連接節(jié)點(diǎn)”狀態(tài)為“Y “,所以直接將其掛接到父節(jié)點(diǎn)對(duì)應(yīng)的連接節(jié)點(diǎn)上,經(jīng)過(guò)此過(guò)程裝置的狀態(tài)如圖10所示,參照樹(shù)如圖11所示:
[0048]經(jīng)理假期公告作為最后一個(gè)離散節(jié)點(diǎn)進(jìn)入逆向遍歷倒掛裝置,其父節(jié)點(diǎn)領(lǐng)導(dǎo)假期公告不在離散節(jié)點(diǎn)集合中,所以將其“是否已經(jīng)遍歷”狀態(tài)設(shè)置為“Y”,“是否是連接節(jié)點(diǎn)”設(shè)置為“Y”,并將離散節(jié)點(diǎn)經(jīng)理假期掛接到領(lǐng)導(dǎo)假期公告節(jié)點(diǎn)下,但領(lǐng)導(dǎo)假期不是權(quán)限節(jié)點(diǎn)。接著從參照樹(shù)上再找領(lǐng)導(dǎo)假期公告的父欄目假期公告,因其“是否是連接節(jié)點(diǎn)”狀態(tài)為“Y “,所以將連接節(jié)點(diǎn)領(lǐng)導(dǎo)假期公告直接掛到權(quán)限樹(shù)上的假期公告節(jié)點(diǎn)上,經(jīng)過(guò)此過(guò)程裝置的狀態(tài)如圖12所示,參照樹(shù)如圖13所示,權(quán)限樹(shù)如圖14所示:
[0049]至此,迭代器中的離散節(jié)點(diǎn)全部迭代完成,此時(shí)權(quán)限樹(shù)倉(cāng)庫(kù)中的以假期公告為根的樹(shù)支就是最終的權(quán)限樹(shù),其中白色背景的節(jié)點(diǎn)為有權(quán)限節(jié)點(diǎn),棕黃色為非權(quán)限節(jié)點(diǎn)。
[0050]本領(lǐng)域技術(shù)人員可以理解,本發(fā)明實(shí)施例提供的技術(shù)方案全部或部分步驟是可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。比如可以通過(guò)計(jì)算機(jī)運(yùn)行程來(lái)完成。該程序可以存儲(chǔ)在可讀取存儲(chǔ)介質(zhì),例如,隨機(jī)存儲(chǔ)器、磁盤(pán)、光盤(pán)等。
[0051]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的【具體實(shí)施方式】之內(nèi)所作的等同替換或改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種權(quán)限樹(shù)的生成方法,其特征在于,所述方法包括如下步驟: A、從離散節(jié)點(diǎn)集合中選擇一個(gè)離參考樹(shù)根節(jié)點(diǎn)最近的未遍歷的離散節(jié)點(diǎn),將該離散節(jié)點(diǎn)設(shè)置成權(quán)限節(jié)點(diǎn)1,將該權(quán)限節(jié)點(diǎn)I的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,將頭指針指向該權(quán)限節(jié)點(diǎn)I ; B、從離散節(jié)點(diǎn)集合的未遍歷的離散節(jié)點(diǎn)中選擇離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未遍歷的離散節(jié)點(diǎn),將離權(quán)限節(jié)點(diǎn)I最近的一個(gè)未掛載的離散節(jié)點(diǎn)設(shè)置成下一個(gè)權(quán)限節(jié)點(diǎn),將下一個(gè)權(quán)限節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是;依據(jù)參考樹(shù)查找下一個(gè)權(quán)限節(jié)點(diǎn)的父節(jié)點(diǎn),如該父節(jié)點(diǎn)為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下;如該父節(jié)點(diǎn)不為權(quán)限節(jié)點(diǎn),則將該下一個(gè)權(quán)限節(jié)點(diǎn)掛載在該父節(jié)點(diǎn)下,并將該父節(jié)點(diǎn)的遍歷設(shè)置和連接節(jié)點(diǎn)設(shè)置修改成是,并將該父節(jié)點(diǎn)掛載在權(quán)限節(jié)點(diǎn)I下; 重復(fù)執(zhí)行B直至離散節(jié)點(diǎn)結(jié)合的所有離散節(jié)點(diǎn)遍歷,然后以權(quán)限節(jié)點(diǎn)I為權(quán)限樹(shù)的根形成權(quán)限樹(shù)。
【文檔編號(hào)】G06F17/30GK103617272SQ201310654772
【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2013年12月5日 優(yōu)先權(quán)日:2013年12月5日
【發(fā)明者】劉建軍 申請(qǐng)人:用友軟件股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1