




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、插件開(kāi)發(fā)指南目錄1文檔概述12擴(kuò)展插件簡(jiǎn)介22.1擴(kuò)展插件的特點(diǎn)22.2術(shù)語(yǔ)及定義22.3常見(jiàn)問(wèn)題23快速開(kāi)始53.2開(kāi)始一個(gè)簡(jiǎn)單的應(yīng)用54擴(kuò)展插件開(kāi)發(fā)指南124.1第一課:擴(kuò)展插件開(kāi)發(fā)基礎(chǔ)124.2第二課:替換infotalk文件224.3第三課:自定義模塊244.4第四課:自定義資源樹(shù)右鍵菜單344.5第五課:自定義任務(wù)面板474.6第六課:新增系統(tǒng)選項(xiàng)574.7第七課:如何修改infotalk js文件的方法614.8第八課:服務(wù)端java接口調(diào)用624.9第九課:高級(jí)應(yīng)用645擴(kuò)展點(diǎn)945.1服務(wù)端945.2客戶端966示例集1006.1新增資源類型1006.2靈活分析queryvie
2、w對(duì)象的擴(kuò)展1036.3數(shù)據(jù)集定義businessview對(duì)象擴(kuò)展1056.4數(shù)據(jù)集定義中新增sql表達(dá)式校驗(yàn)控制1066.5用戶密碼合法性判斷的添加106 第 107 頁(yè) 共108頁(yè)1 文檔概述使用下表快速訪問(wèn)插件開(kāi)發(fā)指南。若要了解請(qǐng)參見(jiàn)擴(kuò)展插件簡(jiǎn)介簡(jiǎn)單介紹擴(kuò)展插件的特點(diǎn)及常見(jiàn)問(wèn)題。快速開(kāi)始讓讀者盡快掌握擴(kuò)展插件開(kāi)發(fā)的基本步驟。擴(kuò)展插件開(kāi)發(fā)指南通過(guò)一些課程來(lái)指導(dǎo)如何開(kāi)發(fā)擴(kuò)展插件。擴(kuò)展點(diǎn)介紹產(chǎn)品中已提供的擴(kuò)展點(diǎn),供擴(kuò)展開(kāi)發(fā)參考。示例集給讀者提供常用的擴(kuò)展開(kāi)發(fā)示例。文檔目的隨著客戶對(duì)bi前端功能的要求越來(lái)越深入,infotalk的很多應(yīng)用項(xiàng)目都有定制化需求。為滿足這類需求,產(chǎn)品進(jìn)一步增強(qiáng)“穩(wěn)定內(nèi)
3、核+api擴(kuò)展”的架構(gòu),支持插件擴(kuò)展。每個(gè)項(xiàng)目的定制化的需求都可以做成單獨(dú)的插件,這樣,最大限度地控制項(xiàng)目化的需求對(duì)產(chǎn)品的影響,控制不同項(xiàng)目之間相互影響,項(xiàng)目需求響應(yīng)的及時(shí)性也能得到保證。適用范圍本文面向infotalk定制開(kāi)發(fā)人員以及研發(fā)人員。2 擴(kuò)展插件簡(jiǎn)介擴(kuò)展插件從應(yīng)用角度上看,它是一個(gè)可以加載到infotalk中執(zhí)行的功能插件;從技術(shù)角度上看,它是一個(gè)web項(xiàng)目,包含html、jsp、java、js和資源等文件。2.1 擴(kuò)展插件的特點(diǎn)l 擴(kuò)展插件通過(guò)infotalk加載執(zhí)行。l 擴(kuò)展插件中的文件會(huì)覆蓋infotalk相同路徑下的同名文件。l 擴(kuò)展插件可以調(diào)用infotalk的內(nèi)部對(duì)象。
4、l 擴(kuò)展插件可以通過(guò)擴(kuò)展點(diǎn)對(duì)infotalk進(jìn)行定制開(kāi)發(fā),能夠把新功能無(wú)縫集成到系統(tǒng)中。2.2 術(shù)語(yǔ)及定義術(shù)語(yǔ)定義擴(kuò)展點(diǎn)為了能夠在不改動(dòng)infotalk代碼的情況下,讓新開(kāi)發(fā)的插件無(wú)縫集成到系統(tǒng)中,infotalk系統(tǒng)框架提供了大量的功能插入接口,這些接口即稱之為“擴(kuò)展點(diǎn)”。一級(jí)模塊“審核”、“瀏覽”、“定制”、“管理”、“儀表盤”、“個(gè)人設(shè)置”、“幫助”等功能模塊入口。二級(jí)模塊一級(jí)模塊的子模塊入口。任務(wù)面板infotalk模塊主界面中大圖標(biāo)展現(xiàn)的快捷功能操作入口區(qū)。資源樹(shù)以樹(shù)的方式展現(xiàn)infotalk資源。知識(shí)庫(kù)用于存儲(chǔ)infotalk系統(tǒng)資源信息的數(shù)據(jù)庫(kù)我們稱之為知識(shí)庫(kù)。知識(shí)庫(kù)對(duì)象使用hi
5、bernate運(yùn)行機(jī)制,知識(shí)庫(kù)表映射到一個(gè)pojo實(shí)體類,該實(shí)體類指知識(shí)庫(kù)對(duì)象。知識(shí)庫(kù)升級(jí)infotalk使用升級(jí)類代碼對(duì)知識(shí)庫(kù)版本進(jìn)行維護(hù),當(dāng)擴(kuò)展插件中需要修改知識(shí)庫(kù)對(duì)象時(shí)就必須添加相應(yīng)的升級(jí)類進(jìn)行知識(shí)庫(kù)版本的維護(hù)。java查詢指基于java數(shù)據(jù)源中java查詢對(duì)象作為查詢?cè)吹囊环N業(yè)務(wù)查詢。2.3 常見(jiàn)問(wèn)題2.3.1 為什么要使用擴(kuò)展插件?l 從項(xiàng)目角度上看把項(xiàng)目定制化的需求做成擴(kuò)展插件,這樣能夠最大限度地控制項(xiàng)目化的需求對(duì)產(chǎn)品的影響,控制不同項(xiàng)目之間相互影響,項(xiàng)目需求響應(yīng)的及時(shí)性也能得到保證。l 從產(chǎn)品開(kāi)發(fā)角度上看把產(chǎn)品新功能模塊的開(kāi)發(fā)做成擴(kuò)展插件,這樣可以有效避免新功能開(kāi)發(fā)對(duì)產(chǎn)品的影響,
6、從而最大限度的保證產(chǎn)品的質(zhì)量。2.3.2 如何在infotalk中加載擴(kuò)展插件?l 項(xiàng)目定制化的需求開(kāi)發(fā)的擴(kuò)展插件啟動(dòng)infotalk服務(wù)器,訪問(wèn)http:/ip:host/infotalk/config。在config界面上,指定擴(kuò)展插件的路徑,如“c: /infotalkextension/src/web/”,保存配置。l 研發(fā)內(nèi)部開(kāi)發(fā)的新功能擴(kuò)展插件:修改infotalk.war/web-inf/extensions/extensions.list文件,每一行為一個(gè)擴(kuò)展插件路徑的聲明。聲明加載指定目錄的擴(kuò)展插件如:“.extensionmanager.sandboxsrcweb”。2.3
7、.3 infotalk是否可以同時(shí)加載多個(gè)擴(kuò)展插件?infotalk里面允許同時(shí)加載多個(gè)擴(kuò)展插件。把多個(gè)插件放到同一個(gè)目錄中,然后通過(guò)config配置界面把擴(kuò)展插件路徑指向該目錄,或者在extensions.list文件中添加多個(gè)擴(kuò)展插件路徑。2.3.4 擴(kuò)展插件的加載策略是什么?擴(kuò)展策略:infotalk服務(wù)器啟動(dòng)時(shí),會(huì)自動(dòng)加載所有擴(kuò)展插件,并調(diào)用相關(guān)的激活方法。若擴(kuò)展插件中存在與infotalk.war中同名的文件時(shí),會(huì)優(yōu)先讀取擴(kuò)展插件中的文件,當(dāng)多個(gè)擴(kuò)展插件中存在同名文件時(shí)會(huì)以第一個(gè)擴(kuò)展插件優(yōu)先,但configurationpatch.js會(huì)自動(dòng)合并,不存在覆蓋問(wèn)題。擴(kuò)展插件的聲明方式:
8、產(chǎn)品允許采用兩種方式來(lái)設(shè)置擴(kuò)展包的加載路徑。l 通過(guò)infotalk.war/web-inf/extensions/extensions.list文件進(jìn)行聲明。l 通過(guò)infotalk配置界面進(jìn)行聲明。擴(kuò)展插件的加載順序:l 先加載 infotalk.war/web-inf/extensions/extensions.list 文件聲明的擴(kuò)展包,再加載infotalk配置界面中指定的目錄。l 在extensions.list文件中,每一行為一個(gè)擴(kuò)展插件路徑的聲明,系統(tǒng)按順序加載各個(gè)擴(kuò)展插件。例如:下面聲明了三個(gè)擴(kuò)展插件,系統(tǒng)加載順序依次是sample3、sample1.ext、sample2.
9、ext。l 通過(guò)infotalk配置界面聲明擴(kuò)展插件的存放路徑時(shí),該路徑中可以保存多個(gè)以.ext結(jié)尾的擴(kuò)展插件或者包含多個(gè)擴(kuò)展插件的目錄。其對(duì)擴(kuò)展插件的加載順序是按擴(kuò)展插件的名字順序來(lái)進(jìn)行加載,假如該目錄中存放了三個(gè)插件,則系統(tǒng)依次加載sample1.ext、sample2.ext、sample3。2.3.5 在websphere部署擴(kuò)展插件的問(wèn)題當(dāng)使用websphere作為服務(wù)器時(shí),可能會(huì)出現(xiàn)無(wú)法加載擴(kuò)展插件內(nèi)的圖片、servlet的情況,在出現(xiàn)此情況下,請(qǐng)按以下步驟進(jìn)行修改:(1) 展開(kāi)服務(wù)器 應(yīng)用程序服務(wù)器。(2) 點(diǎn)擊 server1。(3) 點(diǎn)擊 web容器設(shè)置 web容器。(4)
10、點(diǎn)擊 定制屬性。(5) 點(diǎn)擊 新建。(6) 輸入名稱:com.ibm.ws.webcontainer.invokefilterscompatibility,值為true。(7) 保存并重新啟動(dòng)應(yīng)用服務(wù)器。3 快速開(kāi)始3.1.1 下載java開(kāi)發(fā)工具在這里推薦一個(gè)開(kāi)源的java開(kāi)發(fā)工具eclipse,下載地址:/downloads/ 。3.2 開(kāi)始一個(gè)簡(jiǎn)單的應(yīng)用3.2.1 示例說(shuō)明這是一個(gè)簡(jiǎn)單的應(yīng)用開(kāi)發(fā),它演示了“如何修改infotalk本身的圖片,如何添加一級(jí)模塊菜單,如何在資源樹(shù)的右鍵菜單添加第三方的功能菜單”的開(kāi)發(fā)過(guò)程。具體需求如下:需求一:在in
11、fotalk主界面的“瀏覽”菜單旁邊添加“163網(wǎng)站”,點(diǎn)擊后即在瀏覽面板中顯示163網(wǎng)頁(yè)。需求二:在infotalk“定制展現(xiàn)定制”界面資源樹(shù)右鍵菜單中添加“hello 163”菜單項(xiàng),點(diǎn)擊“hello 163”菜單彈出163網(wǎng)站頁(yè)面。3.2.2 第一步:創(chuàng)建擴(kuò)展插件使用eclipse 開(kāi)發(fā)工具,通過(guò)“file - new - project”創(chuàng)建一個(gè)hellodemo的項(xiàng)目,該項(xiàng)目的目錄結(jié)構(gòu)如下:3.2.3 第二步:配置文件在“meta-inf”目錄中創(chuàng)建擴(kuò)展插件的聲明文件extension.xml。在該文件中聲明擴(kuò)展插件的名稱、別名和描述,該聲明文件是必需的。3.2.4 第三步:定制開(kāi)發(fā)
12、需求一:在“瀏覽”菜單旁邊添加“163網(wǎng)站”在“hellodemosrcwebvisionjsext”目錄中添加擴(kuò)展點(diǎn)聲明文件configurationpatch. js。在“hellodemosrcwebvisionjsextsamples”目錄中添加動(dòng)作對(duì)象類urlaction.js。configurationpatch.js聲明文件如下:(具體的說(shuō)明請(qǐng)參照“擴(kuò)展點(diǎn)配置”)var configurationpatch = patches : path : /extensionpoints/mainframe/actions, /*一級(jí)模塊擴(kuò)展點(diǎn)*/key : 1, /*指功能模塊位置,這里
13、指放在第1位,也就是瀏覽模塊之前*/operation : insert, /*執(zhí)行插入的動(dòng)作,這里指插入163網(wǎng)站功能模塊*/value : /*功能模塊信息*/groupid : default, /*組的id,這里使用默認(rèn)值*/classname : ext.samples.urlaction, /*功能模塊執(zhí)行的動(dòng)作類,這里我們定義了urlaction動(dòng)作類*/text: 163網(wǎng)站 /*功能模塊顯示名稱*/urlaction.js源代碼如下:(一級(jí)模塊和二級(jí)模塊的動(dòng)作文件,必須繼承abstractaction基類)var urlaction = function(treeslot,
14、toolbarslot, viewslot, leftpane, splitter, tabslot) /執(zhí)行父類結(jié)構(gòu)方法urlaction.superclass.constructor.call(this, treeslot, toolbarslot, viewslot, leftpane, splitter, tabslot);/模塊的顯示名稱this.text = 163網(wǎng)站; /打開(kāi)鏈接地址this.url = ; this.treeslot = treeslot;this.toolbarslot = toolbarslot;this.viewslot
15、 = viewslot;this.leftpane = leftpane;this.splitter = splitter;this.tabslot = tabslot;this.status = hidden;/* * 指定繼承abstractaction */lang.extend(urlaction, mon.abstractaction);/* * 當(dāng)打開(kāi)模塊時(shí)調(diào)用 */urlatotype.open = function(arg) /隱藏左邊的目錄樹(shù)this.leftpane.style.display = none;/隱藏左邊目錄樹(shù)
16、與右邊主界面之間的分隔線this.splitter.style.display = none;/隱藏主界面的工具欄this.toolbarslot.style.display = none;/生成iframe,在iframe中打開(kāi)指定的jsp文件this.viewslot.innerhtml = ;/返回true表示成功return true;/* * 當(dāng)模塊關(guān)閉時(shí)調(diào)用 */urlatotype.close = function(arg) /恢復(fù)目錄樹(shù)、分隔線、工具欄可見(jiàn)this.leftpane.style.display = ;this.splitter.style.di
17、splay = ;this.toolbarslot.style.display = ;/釋放iframethis.viewslot.innerhtml = ;return true;需求二:在“定制”-“瀏覽”界面資源樹(shù)右鍵菜單中添加“hello”菜單項(xiàng)操作步驟如下:(1) 修改configuration.js聲明文件,添加資源樹(shù)右鍵菜單的聲明。(2) 在“hellodemosrc webvisionjsextsamples”目錄中添加自定義右鍵菜單句柄類hellopopupmenuhandler.js。(3) 在hellopopupmenuhandler對(duì)象中新建“hello”菜單項(xiàng)。具體修
18、改說(shuō)明如下:l configuration.js聲明文件修改如下:(具體的說(shuō)明請(qǐng)參照“擴(kuò)展點(diǎn)配置”)var configurationpatch = /*extensionpoints.catalogtree.displaycustomhandler是“定制”-“瀏覽”資源樹(shù)擴(kuò)展點(diǎn)路徑*/ extensionpoints : catalogtree: displaycustomhandler:classname : ext.samples.hellopopupmenuhandler ,patches : path : /extensionpoints/mainframe/actions, /*
19、一級(jí)模塊擴(kuò)展點(diǎn)*/key : 1, /*指功能模塊位置,這里指放在第1位,也就是瀏覽模塊之前*/operation : insert, /*執(zhí)行插入的動(dòng)作,這里指插入163網(wǎng)站功能模塊*/value : /*功能模塊信息*/groupid : default, /*組的id,這里使用默認(rèn)值*/classname : ext.samples.urlaction, /*功能模塊執(zhí)行的動(dòng)作類,這里我們定義了urlaction動(dòng)作類*/text: 163網(wǎng)站 /*功能模塊顯示名稱*/l hellopopupmenuhandler.js源代碼如下:/* * 構(gòu)造函數(shù) */var hellopopupme
20、nuhandler = function(popupmenu) this.popupmenu = popupmenu;/* * 析構(gòu)函數(shù) */hellopopupmenuhtotype.destroy = function() /* * 初始化菜單,只會(huì)調(diào)用一次。一般在這里創(chuàng)建菜單項(xiàng) */hellopopupmenuhtotype.initmenu = function() /創(chuàng)建菜單項(xiàng):參數(shù)為【顯示名稱】、【功能編號(hào)(傳遞到docmd方法中)】、【快捷鍵】、【圖標(biāo)】、【插入在哪個(gè)菜單項(xiàng)之前】this.popupmenu.hellomenu = this
21、.popupmenu.createmenuitem(hello 163, hellocommand, h, null, 刷新);/* * 清空菜單狀態(tài),每次彈出前調(diào)用。一般應(yīng)在這里隱藏本handler所創(chuàng)建的所有菜單 */hellopopupmenuhtotype.clearmenustate = function() this.popupmenu.hellomenu.setvisibility(false);/* * 根據(jù)傳入的node控制菜單的顯示與否 */hellopopupmenuhtotype.resetmenustate = function
22、(node) if(!node)return;this.popupmenu.hellomenu.setvisibility(true);/* * 當(dāng)點(diǎn)擊菜單時(shí),響應(yīng)的代碼 */hellopopupmenuhtotype.docmd = function(node, func) if (!node)return;if(typeof func = string)if(func = hellocommand)window.open();3.2.5 第四步:打包擴(kuò)展插件使用jar命令將擴(kuò)展插件打包,以ext為擴(kuò)展名。操作步驟如下:(1) 啟動(dòng)命令行
23、提示符cmd;(2) 通過(guò)cd命令進(jìn)入到項(xiàng)目所在的srcweb目錄,例如:d:hellodemosrcweb;(3) 輸入命令:c: jdk1.5.0_01binjar.execvfhellodemo.ext *.*(4) 回車后,即將hellodemosrcweb目錄下的所有內(nèi)容打包進(jìn)hellodemo.ext文件。3.2.6 第五步:加載擴(kuò)展插件(1) 啟動(dòng)infotalk應(yīng)用服務(wù)器。(2) 訪問(wèn)http:/ip:host/infotalk/config頁(yè)面。(3) 設(shè)置擴(kuò)展插件存放路徑。如:d:infotalkextensions。(4) 保存設(shè)置。(5) 重新啟動(dòng)infotalk應(yīng)用服
24、務(wù)器,登錄后即可看到效果。3.2.7 示例代碼下載4 擴(kuò)展插件開(kāi)發(fā)指南4.1 第一課:擴(kuò)展插件開(kāi)發(fā)基礎(chǔ)4.1.1 創(chuàng)建項(xiàng)目工程使用eclipse 開(kāi)發(fā)工具,通過(guò)“file - new - project”創(chuàng)建一個(gè)擴(kuò)展插件項(xiàng)目工程,該項(xiàng)目的目錄結(jié)構(gòu)如下:相關(guān)目錄及文件說(shuō)明如下:l web目錄,是擴(kuò)展插件的根目錄。l meta-inf目錄,是擴(kuò)展插件的配置文件和相關(guān)的類存放位置。n classes:包含擴(kuò)展插件中類文件編譯后的class文件(可選)。n lib目錄:擴(kuò)展插件引用到的類庫(kù)。infotalk已經(jīng)包括的類庫(kù),不應(yīng)該放在此目錄中(可選)。n applicationcontext.xml:擴(kuò)
25、展插件spring配置文件(可選)。n extension.xml:擴(kuò)展插件配置文件(必選)。l vision目錄,是前端文件存放位置。n img目錄:資源圖片存放目錄(可選)。n js目錄:javascript前端文件存放目錄(可選)。n jsextconfigurationpatch.js:前端配置文件,多個(gè)擴(kuò)展插件會(huì)自動(dòng)合并(可選)。說(shuō)明l vision目錄中,同路徑下的同名文件會(huì)替換infotalk相關(guān)文件,因此定制開(kāi)發(fā)的文件一般放到ext目錄中。4.1.2 配置擴(kuò)展插件 插件聲明文件extension.xml(必要)extension.xml文件是擴(kuò)展插件的必要聲明文件
26、,存放于meta-inf目錄中。基本要素:屬性描述可選與否name擴(kuò)展插件的名稱。必選alias擴(kuò)展插件的別名。必選desc擴(kuò)展插件的描述。必選version擴(kuò)展插件的版本號(hào)。必選enable-jsp-processor支持在擴(kuò)展插件中使用jsp文件??蛇xfile-encoding聲明擴(kuò)展插件中js、html等文件的編碼,默認(rèn)為utf-8??蛇xservlet聲明擴(kuò)展插件中的servlet對(duì)象,請(qǐng)參考web.xml中的結(jié)構(gòu)??蛇xservlet-mapping聲明servlet的映射,請(qǐng)參考web.xml中的結(jié)構(gòu)??蛇x文件內(nèi)容示例: gbk testservlet bof.extension.te
27、st.testservlet x xv y yv 1 testservlet /testservlet spring聲明文件applicationcontext.xml(可選)applicationcontext.xml文件是擴(kuò)展插件中的spring聲明文件,存放于meta-inf目錄中。該文件是可選的。在java代碼中調(diào)用服務(wù)器端sdk提供的接口時(shí)不需要本文件;僅當(dāng)需要在擴(kuò)展插件中使用infotalk內(nèi)部模塊的方法,或?qū)⑿略瞿K注冊(cè)到framework和rmimodule中時(shí),才需要定義此文件。應(yīng)用說(shuō)明:l infotalk使用spring加載服務(wù)器上的組件,因此當(dāng)擴(kuò)展插件需
28、要使用到infotalk原有功能時(shí)必須也使用spring進(jìn)行組件加載。l 在infotalk啟動(dòng)過(guò)程中會(huì)自動(dòng)加載infotalk.warweb-infapplicationcontext.xml初始化內(nèi)置組件,然后再按擴(kuò)展插件順序加載擴(kuò)展插件中的applicationcontext.xml。l 在擴(kuò)展插件中的applicationcontext.xml可以直接引用infotalk內(nèi)置的對(duì)象,只需要通過(guò)相應(yīng)的id引用就可以,例如下面示例中testext可以直接引用dao而無(wú)需再聲明daomodule。infotalk常用內(nèi)置的對(duì)象說(shuō)明如下:id描述dao處理數(shù)據(jù)庫(kù)相關(guān)操作。state處理會(huì)話操作
29、。catalogtree處理資源樹(shù)操作。usermanager處理用戶管理操作。rmi聲明前端請(qǐng)求對(duì)應(yīng)的模塊。framework處理模塊的升級(jí)和激活pojo對(duì)象。l 當(dāng)需要在framework或者rmi模塊中注冊(cè)時(shí),需要再次聲明相應(yīng)的組件。向rmi和framework注冊(cè)testext組件時(shí),需要再次聲明rmi和framework組件并添加到相應(yīng)的屬性中,infotalk會(huì)自動(dòng)合并內(nèi)置對(duì)象中的list或map屬性。上述示例將testext組件添加到rmi和framework原有l(wèi)ist和map中。文件內(nèi)容示例: testext testext 擴(kuò)展點(diǎn)配置文件configurat
30、ionpatch.js(可選)configurationpatch.js存放于擴(kuò)展插件中的visionjsext目錄中。該文件是擴(kuò)展插件中前端js擴(kuò)展點(diǎn)配置文件??梢酝ㄟ^(guò)對(duì)此文件的配置,把擴(kuò)展功能添加到相應(yīng)的擴(kuò)展點(diǎn)中;也可以對(duì)照infotalk前端界面做一些相應(yīng)的調(diào)整。configurationpatch.js包含兩個(gè)屬性,分別是extensionpoints、patches的屬性:l extensionpoints是客戶端擴(kuò)展點(diǎn)內(nèi)容的定義,客戶端會(huì)根據(jù)擴(kuò)展點(diǎn)內(nèi)容的聲明作出相應(yīng)的處理,infotalk會(huì)自動(dòng)合并原有configuration.js和所有擴(kuò)展插件中的聲明。extensionpoi
31、nts對(duì)象支持以下常用屬性:屬性用途mainframe可以在mainframe.actions下添加一級(jí)菜單模塊。custom、manager等在相應(yīng)一級(jí)模塊下添加二級(jí)模塊、任務(wù)面板操作入口。catalogtree添加右鍵菜單。l patches提供了更豐富的屬性定義,并且可以對(duì)extensionpoints中原有定義的屬性進(jìn)行修改。比如修改infotalk原有擴(kuò)展點(diǎn)內(nèi)容,或在指定位置插入新的擴(kuò)展點(diǎn)。每個(gè)patch對(duì)象包含以下屬性:屬性描述path表示該path要修改的configuration.js中的對(duì)象路徑。key需要替換的鍵值,可以為數(shù)字或者字符串,當(dāng)operation為appendo
32、bject時(shí)忽略此項(xiàng)。n 0和正數(shù):比如0,代表從左到右第一個(gè)鍵值n 負(fù)數(shù):比如-1,代表從右到左第一個(gè)鍵值operationpath的動(dòng)作,共有以下幾種:n replace:替換原來(lái)的值。n append:添加到原有數(shù)組中,value可以為數(shù)組或?qū)ο?。n appendobject:添加到原有對(duì)象中,value為是對(duì)象。n insert:插入原有數(shù)組中。n remove:刪除原有對(duì)象中的值。value修改后的值,當(dāng)operation為remove時(shí)忽略此項(xiàng)l extensionpoints、patches均為數(shù)組,可以定義多個(gè)擴(kuò)展點(diǎn)對(duì)象。說(shuō)明infotalk可供擴(kuò)展的所有擴(kuò)展點(diǎn)請(qǐng)參閱“擴(kuò)展點(diǎn)說(shuō)
33、明”。擴(kuò)展點(diǎn)聲明示例:var configurationpatch = /*調(diào)整前端界面:移除一級(jí)模塊中的定制模塊*/patches: path: /extensionpoints/custom/actions,key: 6,operation: remove,extensionpoints : /*添加一級(jí)模塊:在一級(jí)模塊未尾添加二個(gè)模塊入口 */mainframe : actions : classname :ext.b.fibonacciaction,groupid :default,classname :ext.b.numberseriesaction,groupid :default
34、, /*添加二級(jí)模塊:在定制模塊的二級(jí)模塊未尾添加一個(gè)模塊入口 */custom: actions: classname :ext.b.fibonacciaction,groupid :default, /*添加任務(wù)入口:在數(shù)據(jù)集定義任務(wù)面板中添加一個(gè)操作入口 */datasettaskpanel : config: handlers:classname:ext.custom.customtaskpanel, /*編輯菜單項(xiàng):對(duì)“定制”-“展現(xiàn)定制”中資源樹(shù)的右鍵菜單項(xiàng)進(jìn)行編輯 */catalogtree: displaycustomhandler:classname : ext.b.disp
35、laycustom_treepopupmenuhandler; 自定義portlet聲明文件portlet.xml(可選)portlet.xml文件是擴(kuò)展插件中的自定義portlet聲明文件,存放于meta-inf目錄中。infotalk本身提供web鏈接、靈活分析、儀表分析、地圖分析、多維分析、復(fù)雜報(bào)表、指標(biāo)報(bào)表、目錄等多種portlet資源。自定義 portlet用于實(shí)現(xiàn)產(chǎn)品未支持的資源類型,它必須滿足portlet和portletedit的接口規(guī)范。自定義portlet基本要素:屬性描述titleportlet的默認(rèn)標(biāo)題。iconportlet在資源樹(shù)節(jié)點(diǎn)上顯示的圖標(biāo),圖標(biāo)
36、文件放在src/web/img/catalogtree目錄下。portlet-nameportlet名稱,portlet的標(biāo)識(shí)。display-nameportlet顯示名稱,添加portlet時(shí)界面上顯示的名稱。descriptionportlet描述信息。is-bof-tree-node是否是資源樹(shù)上的節(jié)點(diǎn)對(duì)象。portlet-viewer-js-class展示界面對(duì)應(yīng)的文件。portlet-editor-js-class編輯界面對(duì)應(yīng)的文件。文件內(nèi)容示例: helloworld helloworld helloworld false csdc.helloworldportletcsdc.h
37、elloworldportletedit 4.1.3 打包擴(kuò)展插件使用jar命令將擴(kuò)展插件打包,以ext為擴(kuò)展名。操作步驟如下:(1) 啟動(dòng)命令行提示符cmd;(2) 通過(guò)cd命令進(jìn)入到項(xiàng)目所在的srcweb目錄,例如:d:hellodemosrcweb;(3) 輸入命令:c: jdk1.5.0_01binjar.execvfhellodemo.ext *.*(4) 回車后,即將hellodemosrcweb目錄下的所有內(nèi)容打包進(jìn)hellodemo.ext文件。4.1.4 加載擴(kuò)展插件 通過(guò)配置界面對(duì)擴(kuò)展插件進(jìn)行加載加載單個(gè)插件:(1) 啟動(dòng)infotalk應(yīng)用服務(wù)。(2) 訪問(wèn)
38、http:/ip:host/infotalk/config頁(yè)面。(3) 設(shè)置擴(kuò)展插件存放路徑。如:d: infotalkextensions。(4) 保存設(shè)置。(5) 重新啟動(dòng)infotalk應(yīng)用服務(wù)器。加載多個(gè)插件:為了能夠同時(shí)加載多個(gè)擴(kuò)展插件,把sample1.ext、sample2.ext和sample3三個(gè)擴(kuò)展插件存放在d: infotalkextensions目錄中。在config頁(yè)面,設(shè)置擴(kuò)展包存放路徑為:d: infotalkextensions。說(shuō)明:l 一般情況下建議將擴(kuò)展插件打包為*.ext文件,但系統(tǒng)也支持直接將開(kāi)發(fā)的擴(kuò)展插件srcweb目錄直接拷貝到擴(kuò)展包的加載目錄,這
39、樣該擴(kuò)展插件也能被加載。如上圖所示,sample1和sample2分別打包為 ext 文件了,而sample3則直接拷貝的srcweb目錄,這三個(gè)擴(kuò)展包都會(huì)被正確加載。l 擴(kuò)展插件加載順序參看常見(jiàn)問(wèn)題:擴(kuò)展插件的加載策略是什么。 通過(guò)修改extensions.list文件對(duì)擴(kuò)展插件進(jìn)行加載通過(guò)修改infotalk.war/web-inf/extensions/extensions.list文件,對(duì)擴(kuò)展插件進(jìn)行加載。文件中的每一行為一個(gè)擴(kuò)展插件路徑的聲明。如圖所示:說(shuō)明:l 擴(kuò)展插件加載順序參看常見(jiàn)問(wèn)題:擴(kuò)展插件的加載策略是什么。 列出已加載擴(kuò)展插件登錄infotal
40、k,通過(guò)【管理】【工具】【開(kāi)發(fā)人員調(diào)試工具集】【列出已加載擴(kuò)展插件】,查看所部署的擴(kuò)展插件是否已正確加載。4.2 第二課:替換infotalk文件 infotalk擴(kuò)展插件可以方便的替換infotalk原有的文件,包括圖片、樣式、html、jsp和js文件等。當(dāng)需要替換原有的文件時(shí),在擴(kuò)展插件中建立與該文件在infotalk.war包中一致的目錄結(jié)構(gòu),在該目錄中建立同名的文件。infotalk會(huì)優(yōu)先加載擴(kuò)展插件中的文件。替換文件最常用的場(chǎng)景:l 通過(guò)替換圖片及樣式來(lái)改變infotalk的皮膚。l 通過(guò)替換html文件來(lái)改變infotalk的布局。l 修改某javascript對(duì)象的方法。4.2
41、.1 替換圖片文件示例說(shuō)明:infotalk默認(rèn)登錄界面的背景圖如下所示:按招商銀行項(xiàng)目要求,需要修改登錄界面。具體界面如下:實(shí)現(xiàn)步驟:(1) 在infotalk.war包中找到登錄背景圖片所在目錄:“infotalk.warvisionimglogin”。(2) 把需要替換的背景圖、輸入框的背景圖及確定按鈕圖,分別命名為login_bg2.jpg、login_bg3.gif、login_btn_ok.gif。(3) 在sample項(xiàng)目中按背景圖文件在infotalk.war中的目錄結(jié)構(gòu)創(chuàng)建相同的目錄,并把制作好的三個(gè)圖片文件放到該目錄中。(4) 將sample項(xiàng)目打包為sample2.ext
42、,參照上節(jié)在infotalk應(yīng)用服務(wù)器中加載擴(kuò)展插件。(5) 重啟infotalk應(yīng)用服務(wù)器后,再次登錄即可看到替換的效果。示例代碼下載4.3 第三課:自定義模塊自定義模塊是指對(duì)一級(jí)模塊和二級(jí)模塊進(jìn)行改造。通常用于集成第三方系統(tǒng)頁(yè)面以及對(duì)系統(tǒng)主界面的改造。4.3.1 模塊的擴(kuò)展點(diǎn)模塊的擴(kuò)展點(diǎn)主要用于對(duì)一級(jí)模塊和二級(jí)模塊進(jìn)行一些添加、編輯、刪除的操作。通過(guò)擴(kuò)展點(diǎn)的配置,可以方便的把新功能無(wú)縫集成到系統(tǒng)中,而無(wú)需修改系統(tǒng)代碼。擴(kuò)展點(diǎn)動(dòng)作類名描述mainframe.actionsfreequery.actions. mainframeaction 主框架browse.actionsfreequery
43、.actions. browseaction 瀏覽custom.actionsfreequery.actions.customaction 定制manager.actionsfreequery.actions.manageraction 管理myaccount.actionsfreequery.actions.myaccountaction 個(gè)人設(shè)置4.3.2 模塊動(dòng)作接口對(duì)象mon.abstractaction對(duì)象。繼承該對(duì)象主要用于做模塊的點(diǎn)擊操作,不存在二級(jí)模塊展現(xiàn)。var abstractaction = function(treeslot, toolb
44、arslot, viewslot, leftpane, splitter, tabslot)/*當(dāng)打開(kāi)模塊時(shí)調(diào)用*/abstractatotype.open = function(arg)/* 當(dāng)模塊關(guān)閉時(shí)調(diào)用*/abstractatotype.close = function(arg)freequery.actions.abstracttabaction對(duì)象。繼承該對(duì)象主要用于展現(xiàn)二級(jí)模塊的操作。var abstracttabaction = function(treeslot, toolbarslot, viewslot, leftpane, split
45、ter, tabslot,locationslot, viewclass) /*獲取二級(jí)模塊定義*/abstracttabatotype.readconfig = function()/*獲取面板接口對(duì)象*/abstracttabatotype.getslots = function()在二個(gè)接口對(duì)象的構(gòu)造函數(shù)中涉及到六個(gè)系統(tǒng)的載體對(duì)象:l treeslot:資源樹(shù)載體;l toolbarslot:工具欄載體;l viewslot:展現(xiàn)區(qū)載體;l leftpane:左面板載體;l splitter:左面板與右面板之間的分離區(qū);l tabslot:二級(jí)模塊載體
46、。這些對(duì)象對(duì)應(yīng)的界面載體如圖所示:4.3.3 一級(jí)模塊示例一級(jí)模塊指【瀏覽】、【定制】、【管理】、【儀表盤】、【個(gè)人設(shè)置】、【幫助】等功能模塊入口。如圖所示: 在未尾添加新模塊示例說(shuō)明在infotalk一級(jí)模塊未尾處添加新模塊“163網(wǎng)站”,點(diǎn)擊該模塊在瀏覽區(qū)域中展現(xiàn)163網(wǎng)站內(nèi)容。如圖所示:修改configurationpatch.js擴(kuò)展點(diǎn)配置文件var configurationpatch = extensionpoints : mainframe : actions : /在標(biāo)簽欄的末尾添加【urlaction】classname :ext.actions.urlaction,groupid :defaulturlaction模塊動(dòng)作接口實(shí)現(xiàn)類在visionjsextactions目錄下新建urlaction.js文件,用于定義“163網(wǎng)站”模塊的點(diǎn)擊動(dòng)作。urlaction對(duì)象繼承mon.abstractaction模塊動(dòng)作基類。示例代碼如下:var url
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三單元課外古詩(shī)詞誦讀《行軍九日思長(zhǎng)安故園》《夜上受降城聞笛》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)
- Unit6lesson 5教學(xué)設(shè)計(jì)2024-2025學(xué)年冀教版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 2025年板翅式換熱器合作協(xié)議書
- 2024北京市地鐵運(yùn)營(yíng)有限公司運(yùn)營(yíng)四分公司電動(dòng)列車司機(jī)招聘筆試參考題庫(kù)附帶答案詳解
- 2025年黑龍江商業(yè)職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)一套
- 第二章 直線與圓的方程 單元小結(jié)教學(xué)設(shè)計(jì)-2024-2025學(xué)年高二上學(xué)期數(shù)學(xué)人教A版(2019)選擇性必修第一冊(cè)
- 2025至2030年中國(guó)枕下墊板數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 第13課 我們小點(diǎn)兒聲 一年級(jí)道德與法治上冊(cè)(2024版)教學(xué)設(shè)計(jì)
- 機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第12章 深度學(xué)習(xí)(自動(dòng)編碼解碼器、卷積神經(jīng)網(wǎng)絡(luò))
- 湖北省武漢市部分重點(diǎn)中學(xué)2023-2024年高二上學(xué)期期末考試地理試卷(解析版)
- 產(chǎn)品手繪設(shè)計(jì)表現(xiàn)技法PPT完整全套教學(xué)課件
- GA/T 1988-2022移動(dòng)警務(wù)即時(shí)通信系統(tǒng)功能及互聯(lián)互通技術(shù)要求
- 文科學(xué)術(shù)規(guī)范與學(xué)術(shù)論文寫作課件
- 人教版小學(xué)二年級(jí)體育下冊(cè)全冊(cè)教案
- 農(nóng)業(yè)政策學(xué)PPT完整全套教學(xué)課件
- 國(guó)家電網(wǎng)招聘之其他工學(xué)類復(fù)習(xí)資料大全
- 天山天池景區(qū)介紹-天山天池景點(diǎn)PPT(經(jīng)典版)
- 電動(dòng)機(jī)潤(rùn)滑檔案
- 房地產(chǎn) -中建一局成本復(fù)盤案例匯編
- 回延安部編語(yǔ)文名師公開(kāi)課一等獎(jiǎng)教學(xué)設(shè)計(jì)課件2
- 正常分娩 第三產(chǎn)程的臨床經(jīng)過(guò)及護(hù)理
評(píng)論
0/150
提交評(píng)論