到的數(shù)據(jù)轉(zhuǎn)換成更適合前端的JSON(一種輕量級(jí)的數(shù)據(jù)交換格式,易于機(jī)器的解析)數(shù)據(jù)。在這里采用一個(gè)簡單易用的開源數(shù)據(jù)轉(zhuǎn)換框架Jackson(可以輕松的將Java對(duì)象轉(zhuǎn)換成json對(duì)象和xml文檔,同樣也可以將j son、xml轉(zhuǎn)換成Java對(duì)象)來實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換。定義了一個(gè)數(shù)據(jù)庫表數(shù)據(jù)轉(zhuǎn)換成JSON的轉(zhuǎn)換方法searchTreeeSoIut1nArgument(),該方法中通過solut1nService對(duì)象的getTreeJsonChart O方法返回需要的JSON類型研討信息對(duì)象,并將其存放在JsonChart類型的對(duì)象數(shù)組中,再由JSONArray對(duì)象轉(zhuǎn)化成Str ing類型進(jìn)行前后臺(tái)的數(shù)據(jù)傳輸。renderText O方法是基類act1n中定義的一個(gè)方法,其作用是將所返回的String數(shù)據(jù)封裝至ijHttpServletResponse對(duì)象中,通過對(duì)該對(duì)象的寫入操作實(shí)現(xiàn)數(shù)據(jù)對(duì)前端的輸出傳遞。如圖3所示。
[0035]數(shù)據(jù)轉(zhuǎn)化的關(guān)鍵引入代碼:
[0036]public void searchTreeSolut1nArgument(){
[0037]J sonChart[]j sonChart = solut1nService.getTreeJsonChart(discuss1nRoom.getId());
[0038]JSONArray jsonarr = new JSONArray ();
[0039]Jsonarr.add(jsonChart);
[0040]String jsonString = jsonarr.toString();
[0041 ] this.renderText(jsonString.substring(I,jsonString.length()-1));}
[0042]步驟三:引入數(shù)據(jù)解析模塊,通過數(shù)據(jù)封裝模塊把數(shù)據(jù)庫的數(shù)據(jù)組裝完成后,再通過servlet內(nèi)置對(duì)象傳遞到前端的數(shù)據(jù)解析模塊,數(shù)據(jù)解析模塊通過Javascript腳本語言對(duì)返回的數(shù)據(jù)進(jìn)行重新的解析,把解析出來的數(shù)據(jù)作為參數(shù)傳遞給圖形繪制模塊提供的統(tǒng)一接口中。如圖4所示。
[0043]步驟四:圖形繪制模塊接收到來自數(shù)據(jù)解析模塊的參數(shù)數(shù)據(jù),調(diào)用圖形繪制模塊中的tree, js組件來完成研討信息可視化的思維導(dǎo)圖繪制,在整個(gè)的繪制過程中,采用反轉(zhuǎn)Ajax(Ajax是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁的技術(shù))的推送技術(shù),異步的提交數(shù)據(jù)請(qǐng)求,不斷的更新數(shù)據(jù),重畫圖形。最終來完成研討信息的思維導(dǎo)圖。在前端的jsp或者h(yuǎn)tml頁面添加js文件路徑的引入并添加幾行關(guān)鍵代碼,創(chuàng)建tree對(duì)象并傳入將要顯示的數(shù)據(jù)參數(shù)。窗口參數(shù)根據(jù)頁面的窗口大小進(jìn)行設(shè)定,然后用jQuery(是JavaScript和查詢,即是輔助JavaScript開發(fā)的庫)中的$.ajax()方法向處理層提交申請(qǐng),該方法通過不斷的向控制層提交請(qǐng)求實(shí)現(xiàn)反轉(zhuǎn)ajax方式,控制層轉(zhuǎn)發(fā)到相應(yīng)的act 1n(是用戶請(qǐng)求和業(yè)務(wù)邏輯之間的橋梁,每個(gè)Act 1n充當(dāng)客戶的一項(xiàng)業(yè)務(wù)代理)中進(jìn)行處理。Act 1n調(diào)用相關(guān)service方法將數(shù)據(jù)結(jié)果進(jìn)行內(nèi)置對(duì)象的封裝,并且用返回函數(shù)的形式提交到前端的顯示頁面進(jìn)行處理。這里的url就是請(qǐng)求的,dataType為返回函數(shù)的類型,success為請(qǐng)求提交成功后,服務(wù)層返回函數(shù),其參數(shù)data為返回的數(shù)據(jù)封裝對(duì)象。如圖5所示。
【主權(quán)項(xiàng)】
1.一種基于D3的研討系統(tǒng)思維導(dǎo)圖,其特征在于:包括依次連接的數(shù)據(jù)封裝模塊、數(shù)據(jù)解析模塊、圖形繪制模塊;數(shù)據(jù)封裝模塊獲取數(shù)據(jù)庫的數(shù)據(jù),之后將數(shù)據(jù)庫的數(shù)據(jù)封裝成JSON格式傳入數(shù)據(jù)解析模塊,經(jīng)過重解析以后傳入圖形繪制模塊,最終完成研討信息思維導(dǎo)圖可視化的過程。2.根據(jù)權(quán)利要求1所述的基于D3的研討系統(tǒng)思維導(dǎo)圖,其特征在于:所述數(shù)據(jù)封裝模塊中,采用數(shù)據(jù)轉(zhuǎn)換框架把從數(shù)據(jù)庫中獲取的數(shù)據(jù)轉(zhuǎn)換成JSON數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的基于D3的研討系統(tǒng)思維導(dǎo)圖,其特征在于:所述數(shù)據(jù)解析模塊中,利用JavaScript腳本語言對(duì)返回的數(shù)據(jù)進(jìn)行重新解析,并把解析以后的數(shù)據(jù)作為參數(shù)傳遞到圖形繪制模塊的接口中。4.根據(jù)權(quán)利要求1所述的基于D3的研討系統(tǒng)思維導(dǎo)圖,其特征在于:所述圖形繪制模塊接收數(shù)據(jù)解析模塊傳遞過來的信息,利用D3完成研討信息思維導(dǎo)圖的繪制。5.—種基于D3的研討系統(tǒng)思維導(dǎo)圖的開發(fā)方法,其特征在于:包括以下步驟: 步驟一:在項(xiàng)目工程中首先引入D3.js和tree.js兩個(gè)依賴js的文件; 步驟二:數(shù)據(jù)封裝模塊把由數(shù)據(jù)庫接收到的數(shù)據(jù)轉(zhuǎn)換成更適合前端的JSON數(shù)據(jù); 采用一個(gè)開源數(shù)據(jù)轉(zhuǎn)換框架Jackson來實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換,定義一個(gè)數(shù)據(jù)庫表數(shù)據(jù)轉(zhuǎn)換成JSON的轉(zhuǎn)換方法SearchTreeeSolut1nArgument (),該方法中通過solut1nService對(duì)象的getTree JsonChart ()方法返回需要的JSON類型研討信息對(duì)象,并將其存放在JsonChart類型的對(duì)象數(shù)組中,再由JSONArray對(duì)象轉(zhuǎn)化成String類型進(jìn)行前后臺(tái)的數(shù)據(jù)傳輸;利用renderText()方法將所返回的String數(shù)據(jù)封裝到HttpServletResponse對(duì)象中,通過對(duì)該對(duì)象的寫入操作實(shí)現(xiàn)數(shù)據(jù)對(duì)前端的輸出傳遞; 步驟三:通過數(shù)據(jù)封裝模塊把數(shù)據(jù)庫的數(shù)據(jù)組裝完成后,再通過servlet內(nèi)置對(duì)象傳遞到前端的數(shù)據(jù)解析模塊,數(shù)據(jù)解析模塊通過Javascript腳本語言對(duì)返回的數(shù)據(jù)進(jìn)行重新的解析,把解析出來的數(shù)據(jù)作為參數(shù)傳遞給圖形繪制模塊提供的統(tǒng)一接口中; 步驟四:圖形繪制模塊接收到來自數(shù)據(jù)解析模塊的參數(shù)數(shù)據(jù),調(diào)用圖形繪制模塊中的tree, js組件來完成研討信息可視化的思維導(dǎo)圖繪制,在整個(gè)的繪制過程中,采用反轉(zhuǎn)Ajax的推送技術(shù),異步的提交數(shù)據(jù)請(qǐng)求,不斷的更新數(shù)據(jù),重畫圖形,最終來完成研討信息的思維導(dǎo)圖; 在顯示端的jsp或者h(yuǎn)tml頁面添加js文件路徑的引入并添加幾行關(guān)鍵代碼,創(chuàng)建tree對(duì)象并傳入將要顯示的數(shù)據(jù)參數(shù);窗口參數(shù)根據(jù)頁面的窗口大小進(jìn)行設(shè)定,然后用jQuery中的$.a jax ()方法向處理層提交申請(qǐng),該方法通過不斷的向控制層提交請(qǐng)求實(shí)現(xiàn)反轉(zhuǎn)ajax方式,控制層轉(zhuǎn)發(fā)到相應(yīng)的act1n中進(jìn)行處理;Act1n調(diào)用相關(guān)service方法將數(shù)據(jù)結(jié)果進(jìn)行內(nèi)置對(duì)象的封裝,并且用返回函數(shù)的形式提交到前端的顯示頁面進(jìn)行處理。
【專利摘要】本發(fā)明提供一種基于D3的研討系統(tǒng)思維導(dǎo)圖及其開發(fā)方法;在B/S框架的基礎(chǔ)上,在分析了國內(nèi)外在研討信息思維導(dǎo)圖的展示方面的優(yōu)缺點(diǎn)的基礎(chǔ)上,同時(shí)采用當(dāng)今流行的D3可視化技術(shù),利用從數(shù)據(jù)庫中獲取的研討信息數(shù)據(jù)動(dòng)態(tài)繪制出研討信息思維導(dǎo)圖。本發(fā)明易用性高,采用簡單,交互性強(qiáng),在層次性的展示方面顯得清晰,由于采用了樹算法,使得思維導(dǎo)圖以樹形結(jié)構(gòu)展示且在多人思維展示的上面不會(huì)顯得節(jié)點(diǎn)擁擠,同時(shí)可以實(shí)時(shí)動(dòng)態(tài)的顯示研討信息,清晰地了解研討信息之間的關(guān)系,從而使得人們可以達(dá)到討論問題的最好效果。
【IPC分類】G06F17/30
【公開號(hào)】CN105653650
【申請(qǐng)?zhí)枴?br>【發(fā)明人】熊才權(quán), 陳韶斌, 李元, 朱建軍, 李煊
【申請(qǐng)人】湖北工業(yè)大學(xué)
【公開日】2016年6月8日
【申請(qǐng)日】2015年12月28日