基于樹形結(jié)構(gòu)的過濾方法與裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別地涉及一種基于樹形結(jié)構(gòu)的過濾方法與裝置。
【背景技術(shù)】
[0002]在計(jì)算機(jī)技術(shù)領(lǐng)域中,樹形數(shù)據(jù)結(jié)構(gòu)是軟件開發(fā)中常見的結(jié)構(gòu),很多系統(tǒng)都有樹形菜單、下拉聯(lián)動對于樹形數(shù)據(jù)的過濾方法也是各有不同,一種高可用的、可過濾的樹形的方法可以有效的提高軟件開發(fā)效率,節(jié)約開發(fā)成本。通常情況下,開發(fā)人員在開發(fā)一個左側(cè)樹狀菜單,例如有三級,第一級為一級分類,第二級為二級分類,第三級為三級分類,而同時(shí)在頁面中又需要根據(jù)不同的規(guī)則進(jìn)行對數(shù)據(jù)過濾,例如,根據(jù)不同權(quán)限看到樹不同的節(jié)點(diǎn),此時(shí)開發(fā)人員的第一考慮是如果能復(fù)用樹形菜單的方法會節(jié)省大量的開發(fā)時(shí)間。
[0003]現(xiàn)有技術(shù)方案為:當(dāng)一個網(wǎng)頁頁面顯示樹狀菜單時(shí),先獲取原始數(shù)據(jù),然后拼裝成樹形結(jié)構(gòu),再做過濾處理,再組裝成需要的數(shù)據(jù)格式,最后傳給前臺頁面,前臺頁面通過javascript控件展現(xiàn)樹狀菜單。進(jìn)一步地,當(dāng)有多個頁面需要展現(xiàn)不同的樹狀菜單時(shí),往往需要開發(fā)多套樹形結(jié)構(gòu)方法,對應(yīng)不同頁面開發(fā)不同的方法,不同的頁面調(diào)用不同的方法來進(jìn)行展示樹形菜單的結(jié)構(gòu),且多次訪問需要多次調(diào)用數(shù)據(jù)源。
[0004]現(xiàn)有技術(shù)方案存在以下缺點(diǎn):頁面每次展示樹狀數(shù)據(jù)都需要調(diào)用源數(shù)據(jù)接口,調(diào)用頻率高;由于頁面需要展示不同功能的數(shù)據(jù),需要同時(shí)開發(fā)多套不同的方法來對應(yīng)不同的頁面需求,代碼可重復(fù)率低。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種基于樹形結(jié)構(gòu)的過濾方法,通過ActiveMQ消息機(jī)制、Redis緩存方案以接口的方式提供公共數(shù)據(jù),實(shí)現(xiàn)有效的減少公共接口的調(diào)用量,提高公共接口數(shù)據(jù)處理性能;同時(shí)通過對原始數(shù)據(jù)格式化以及進(jìn)行數(shù)據(jù)過濾操作,實(shí)現(xiàn)數(shù)據(jù)過濾的可擴(kuò)展性與代碼調(diào)用的簡潔性。即只需開發(fā)對應(yīng)業(yè)務(wù)的過濾器和訪問者即可,編程人員只需關(guān)注業(yè)務(wù),減少編碼的重復(fù)工作量,提高開發(fā)效率,支持水平過濾。本發(fā)明還公開了一種基于樹形結(jié)構(gòu)的過濾裝置。
[0006]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種基于樹形結(jié)構(gòu)的過濾方法,包括:根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù);通過定義多個類的方式對所述樹形原始數(shù)據(jù)執(zhí)行數(shù)據(jù)過濾操作,獲得具有擴(kuò)展屬性的樹形數(shù)據(jù);以及將具有擴(kuò)展屬性的所述樹形數(shù)據(jù)通過用戶頁面控件顯示為樹形結(jié)構(gòu)。
[0007]可選地,所述通過定義多個類的方式執(zhí)行數(shù)據(jù)過濾操作具體包括:分類ID、分類名稱;定義多個對象方法,定義訪問者類以及定義數(shù)據(jù)過濾類;實(shí)例化數(shù)據(jù)過濾類以及實(shí)例化訪問者類;調(diào)用所述實(shí)例化訪問者類的遍歷方法對整樹進(jìn)行遍歷,其中在對整樹進(jìn)行遍歷過程中,調(diào)用所述實(shí)例化數(shù)據(jù)過濾類的裁剪方法判斷節(jié)點(diǎn)是否需要裁剪。
[0008]可選地,在根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù)的同時(shí),將所述樹形原始數(shù)據(jù)同步到Redis緩存服務(wù)器。
[0009]可選地,若對所述樹形原始數(shù)據(jù)進(jìn)行變更操作,則源數(shù)據(jù)應(yīng)用服務(wù)器向ActiveMQ消息服務(wù)器發(fā)送MQ消息,并將變更的數(shù)據(jù)同步到所述Redis緩存服務(wù)器中。
[0010]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個方面,提供了一種基于樹形結(jié)構(gòu)的過濾裝置,包括:樹形原始數(shù)據(jù)獲取模塊,用于根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù);數(shù)據(jù)過濾模塊,用于通過定義多個類的方式對所述樹形原始數(shù)據(jù)執(zhí)行數(shù)據(jù)過濾操作,獲得具有擴(kuò)展屬性的樹形數(shù)據(jù);以及樹形結(jié)構(gòu)顯示模塊,用于將具有擴(kuò)展屬性的所述樹形數(shù)據(jù)通過用戶頁面控件顯示為樹形結(jié)構(gòu)。
[0011]可選地,所述數(shù)據(jù)過濾模塊包括:分類單元、定義單元、實(shí)例化單元以及遍歷單元;其中所述分類單元,用于分類ID、分類名稱;所述定義單元,用于定義多個對象方法,定義訪問者類以及定義數(shù)據(jù)過濾類;所述實(shí)例化單元,用于實(shí)例化數(shù)據(jù)過濾類以及實(shí)例化訪問者類;所述遍歷單元,用于調(diào)用所述實(shí)例化訪問者類的遍歷方法對整個樹形結(jié)構(gòu)進(jìn)行遍歷,其中在對整個樹形結(jié)構(gòu)進(jìn)行遍歷過程中,調(diào)用所述實(shí)例化數(shù)據(jù)過濾類的裁剪方法判斷節(jié)點(diǎn)是否需要裁剪。
[0012]可選地,還包括:緩存模塊,用于在根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù)的同時(shí),將所述樹形原始數(shù)據(jù)同步到Redis緩存服務(wù)器。
[0013]可選地,進(jìn)一步包括:MQ消息發(fā)送模塊,用于若對所述樹形原始數(shù)據(jù)進(jìn)行變更操作,則源數(shù)據(jù)應(yīng)用服務(wù)器向ActiveMQ消息服務(wù)器發(fā)送MQ消息,并將變更的數(shù)據(jù)同步到所述Redis緩存服務(wù)器中。
[0014]根據(jù)本發(fā)明的技術(shù)方案,本發(fā)明提出了一種基于樹形結(jié)構(gòu)的過濾方法,通過ActiveMQ消息機(jī)制、Redis緩存方案以接口的方式提供公共數(shù)據(jù),實(shí)現(xiàn)有效的減少公共接口的調(diào)用量,提高公共接口數(shù)據(jù)處理性能;同時(shí)通過對原始數(shù)據(jù)格式化以及進(jìn)行數(shù)據(jù)過濾操作,實(shí)現(xiàn)數(shù)據(jù)過濾的可過濾性與代碼調(diào)用的簡潔性。即只需開發(fā)對應(yīng)業(yè)務(wù)的過濾器和訪問者即可,編程人員只需關(guān)注業(yè)務(wù),減少編碼的重復(fù)工作量,提高開發(fā)效率,支持水平過濾。本發(fā)明還公開了一種基于樹形結(jié)構(gòu)的過濾裝置。
【附圖說明】
[0015]附圖用于更好地理解本發(fā)明,不構(gòu)成對本發(fā)明的不當(dāng)限定。其中:
[0016]圖1是根據(jù)本發(fā)明實(shí)施例的一種基于樹形結(jié)構(gòu)的過濾方法的步驟流程圖;
[0017]圖2是根據(jù)本發(fā)明一種基于樹形結(jié)構(gòu)的過濾方法的頁面菜單示例圖;以及
[0018]圖3是根據(jù)本發(fā)明實(shí)施例的一種基于樹形結(jié)構(gòu)的過濾裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]以下結(jié)合附圖對本發(fā)明的示范性實(shí)施方式做出說明,其中包括本發(fā)明實(shí)施方式的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識到,可以對這里描述的實(shí)施方式做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同樣,為了清楚和簡明,以下的描述中省略了對公知功能和結(jié)構(gòu)的描述。
[0020]如圖1所示,本發(fā)明實(shí)施例的一種基于樹形結(jié)構(gòu)的過濾方法的步驟流程圖。具體步驟如下:
[0021]步驟S 1:根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù)。
[0022]具體地,根據(jù)訪問頁面請求,獲取樹形原始數(shù)據(jù)為:源數(shù)據(jù)接口通過源數(shù)據(jù)應(yīng)用服務(wù)器從數(shù)據(jù)庫服務(wù)器獲取樹形原始數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)如下格式所示:
[0023]/**
[0024]* —級分類 ID
[0025]*/
[0026]Private int categoryNol ;
[0027]/**
[0028]* 一級分類名稱
[0029]*/
[0030]Private int categoryNamel ;
[0031]/**
[0032]* 二級分類 ID
[0033]*/
[0034]Private int categoryNo2 ;
[0035]/**
[0036]* 二級分類名稱
[0037]*/
[0038]Private int categoryName2 ;
[0039]/**
[0040]*三級分類ID
[0041]*/
[0042]Private int categoryNo3 ;
[0043]/**
[0044]