![金蝶BOS企業(yè)版V632-開發(fā)指南-管理門戶-Portlet開發(fā)_第1頁](http://file4.renrendoc.com/view/cceb34baed5c2b76fe3efde114d517a3/cceb34baed5c2b76fe3efde114d517a31.gif)
![金蝶BOS企業(yè)版V632-開發(fā)指南-管理門戶-Portlet開發(fā)_第2頁](http://file4.renrendoc.com/view/cceb34baed5c2b76fe3efde114d517a3/cceb34baed5c2b76fe3efde114d517a32.gif)
![金蝶BOS企業(yè)版V632-開發(fā)指南-管理門戶-Portlet開發(fā)_第3頁](http://file4.renrendoc.com/view/cceb34baed5c2b76fe3efde114d517a3/cceb34baed5c2b76fe3efde114d517a33.gif)
![金蝶BOS企業(yè)版V632-開發(fā)指南-管理門戶-Portlet開發(fā)_第4頁](http://file4.renrendoc.com/view/cceb34baed5c2b76fe3efde114d517a3/cceb34baed5c2b76fe3efde114d517a34.gif)
![金蝶BOS企業(yè)版V632-開發(fā)指南-管理門戶-Portlet開發(fā)_第5頁](http://file4.renrendoc.com/view/cceb34baed5c2b76fe3efde114d517a3/cceb34baed5c2b76fe3efde114d517a35.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、.:.;EAS門戶Portlet制造指南闡明本指南主要引見EAS門戶Portlet的制造過程。簡要論述了EAS門戶的新特性,詳細引見了制造Portlet的過程和步驟,對制造Portlet過程遇到的常見問題進展了闡明。本指南適用于EAS門戶Portlet開發(fā)人員。目錄 TOC o 1-3 h z u HYPERLINK l _Toc277854754 闡明 PAGEREF _Toc277854754 h 2 HYPERLINK l _Toc277854755 目錄 PAGEREF _Toc277854755 h 3 HYPERLINK l _Toc277854756 第1章 EAS門戶簡介 PA
2、GEREF _Toc277854756 h 4 HYPERLINK l _Toc277854757 1.1 EAS門戶新特性 PAGEREF _Toc277854757 h 4 HYPERLINK l _Toc277854758 第2章 Portlet制造 PAGEREF _Toc277854758 h 5 HYPERLINK l _Toc277854759 2.1 Portlet制造步驟 PAGEREF _Toc277854759 h 5 HYPERLINK l _Toc277854760 2.2 配置Portlet信息 PAGEREF _Toc277854760 h 5 HYPERLINK
3、 l _Toc277854761 2.2.1 配置Portlet定義信息 PAGEREF _Toc277854761 h 5 HYPERLINK l _Toc277854762 2.2.2 配置Portlet業(yè)務處置信息 PAGEREF _Toc277854762 h 6 HYPERLINK l _Toc277854763 2.3 向數(shù)據(jù)庫插入相關數(shù)據(jù) PAGEREF _Toc277854763 h 6 HYPERLINK l _Toc277854764 2.4 Portlet配置信息與數(shù)據(jù)庫數(shù)據(jù)的對應關系 PAGEREF _Toc277854764 h 8 HYPERLINK l _Toc2
4、77854765 2.5 制造Portlet內(nèi)容頁面,實現(xiàn)業(yè)務需求 PAGEREF _Toc277854765 h 9 HYPERLINK l _Toc277854766 2.5.1 Portlet內(nèi)容頁面JSP接口 PAGEREF _Toc277854766 h 10 HYPERLINK l _Toc277854767 2.5.2 Portlet內(nèi)容頁面JS接口 PAGEREF _Toc277854767 h 13 HYPERLINK l _Toc277854768 2.5.3 Portlet內(nèi)容頁面制造規(guī)范與約束 PAGEREF _Toc277854768 h 16 HYPERLINK l
5、 _Toc277854769 2.5.4 Portlet內(nèi)容頁面制造常見問題 PAGEREF _Toc277854769 h 19 HYPERLINK l _Toc277854770 2.5.5 Portlet內(nèi)容頁面HTC控件的交換 PAGEREF _Toc277854770 h 23 HYPERLINK l _Toc277854771 2.5.6 門戶優(yōu)化合并且刪除了部分js PAGEREF _Toc277854771 h 25 HYPERLINK l _Toc277854772 第3章 Portlet業(yè)務設置 PAGEREF _Toc277854772 h 27 HYPERLINK l
6、_Toc277854773 3.1 關聯(lián)Portlet業(yè)務設置頁面 PAGEREF _Toc277854773 h 28 HYPERLINK l _Toc277854774 3.2 Portlet業(yè)務設置頁面JSP接口 PAGEREF _Toc277854774 h 29 HYPERLINK l _Toc277854775 3.3 Portlet業(yè)務設置頁面JS接口 PAGEREF _Toc277854775 h 30 HYPERLINK l _Toc277854776 第4章 Portlet的運用 PAGEREF _Toc277854776 h 32 HYPERLINK l _Toc2778
7、54777 第5章 Portlet相關SQL腳本的導出和提交 PAGEREF _Toc277854777 h 35 HYPERLINK l _Toc277854778 5.1 例如SQL PAGEREF _Toc277854778 h 35 HYPERLINK l _Toc277854779 5.2 腳本提交位置 PAGEREF _Toc277854779 h 36 HYPERLINK l _Toc277854780 附錄1 Portal配置文件拆分闡明 PAGEREF _Toc277854780 h 38 HYPERLINK l _Toc277854781 附錄2 PortletUtil A
8、PI PAGEREF _Toc277854781 h 42 HYPERLINK l _Toc277854782 附錄3 Ajax之Buffalo開發(fā)指南 PAGEREF _Toc277854782 h 54 HYPERLINK l _Toc277854783 附錄4門戶Portlet之間通訊 PAGEREF _Toc277854783 h 59第1章 EAS門戶簡介1.1 EAS門戶新特性新的EAS門戶在上一版本門戶的根底上對整體框架進展了優(yōu)化,實現(xiàn)了相關新特性,包含如下功能:1自定義規(guī)劃:可自在規(guī)劃,跨列規(guī)劃;2頁簽配置完善:以拖拽方式把Portlet配置到頁簽上;3展現(xiàn)框架調(diào)整:可自在拖拽
9、規(guī)劃顯示,運轉期用戶可個性化配置界面展現(xiàn)款式;4提供容器Portlet:將多個單一Portlet組合成一個Portlet;5Portlet添加屬性設置:支持系統(tǒng)級和業(yè)務級屬性設置,且同時支持定義期和運轉期屬性設置;6Portlet異步加載:頁簽中每個Portlet異步加載,并發(fā)運轉;7通知和待辦可分類設置和授權:分類可由管理員一致建立和分配,同時允許用戶自定義分類和管理管理員設置的分類。第2章 Portlet制造2.1 Portlet制造步驟Portlet制造過程包含以下幾個步驟:1配置Portlet信息2向數(shù)據(jù)庫插入相關數(shù)據(jù)3制造Portlet內(nèi)容頁面,實現(xiàn)業(yè)務需求4制造Portlet業(yè)務設
10、置頁面可選最后一個步驟并不是必需的,在Portlet的業(yè)務需求需求業(yè)務設置時,才進展此步驟。下面將分小節(jié)詳細引見Portlet制造的各個步驟,關于Portlet業(yè)務設置的內(nèi)容將單獨在第3章中引見。2.2 配置Portlet信息2.2.1 配置Portlet定義信息1配置文件途徑EAS5.4版本:server/profiles/server1/config/portalConfig/portlets.xmlEAS6.0版本:server/deploy/eas.ear/cp_web.war/WEB-INF/portlets_xxx.xml其中,xxx表示詳細的業(yè)務領域稱號,如bos、eas等,詳細
11、信息請參考“附錄1 Portal配置文件拆分闡明2配置闡明1001testPortlet view portlet.test各配置參數(shù)值闡明如下:1001:Portlet定義ID,全局獨一,不能反復。取值范圍詳細商定如下:BOS為 1-199 ,EAS為 200-999, 二次開發(fā)為 1000 以后;testPortlet:Portlet定義信息,無特別要求,普通運用英文字符標識。留意該標題信息僅用于在配置文件中區(qū)分不同的Portlet,與Portlet在運轉時顯示的標題無關,Portlet在運轉時顯示的標題信息由數(shù)據(jù)庫中的內(nèi)容決議,2.3小節(jié)有詳細闡明;portlet.test:對應于“Po
12、rtlet業(yè)務處置信息的配置信息,詳細見下一小節(jié)。2.2.2 配置Portlet業(yè)務處置信息1配置文件途徑server/deploy/eas.ear/cp_web.war/WEB-INF/tiles-defs_xxx.xml其中,xxx表示詳細的業(yè)務領域稱號,如bos、eas等,詳細信息請參考2.2.1節(jié)中的附件。2配置闡明各配置參數(shù)值闡明如下:portlet.test:tiles定義稱號,和上一節(jié)Portlet定義信息的配置堅持一致;1001:對應的Portlet定義ID,和上一節(jié)Portlet定義信息的配置堅持一致;/html/custom/test.jsp:業(yè)務處置頁面即2.5節(jié)將提到的
13、“Portlet內(nèi)容頁面地址,假設是Struts,那么還需求在struts-config.xml中進展配置,詳細可以參考Struts官方文檔。2.3 向數(shù)據(jù)庫插入相關數(shù)據(jù)經(jīng)過EAS管理控制臺執(zhí)行如下腳本,在數(shù)據(jù)庫中插入一條記錄,KSQL語句如下:INSERT INTO T_Portal_Portlet(FID,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID,FPortletDefineId,FPortletName_L1,FPortletName_L2,FPortletName_L3,FEnable
14、,FPortletNumber,FDescription_L1,FDescription_L2,FDescription_L3, FPortletCategoryID) VALUES(NEWBOSID(0B344890),00000000-0000-0000-0000-00000000000013B7DE7F,ts2021-10-01 12:13:14,00000000-0000-0000-0000-00000000000013B7DE7F,ts2021-10-01 12:13:14,00000000-0000-0000-0000-000000000000CCE7AED4,N104,NULL,
15、N周江測試1,N周江測試1,1,NPN-104,NULL, N周江測試1, N周江測試1, XkGI/dDGlkWJhX5ZEW9lOEPH2a4=);闡明與本卷須知:1插入字段FID的值請務必運用函數(shù)NEWBOSID,其中0B344890為Portlet實體元數(shù)據(jù)編碼,該值不能更改為其他值,否那么程序獲取Portlet信息時將出錯。函數(shù)NEWBOSID(0B344890)每次執(zhí)行會產(chǎn)生新的ID值,假設作為腳本提交,請留意修正為一個確定的ID值,且一定要支持可反復晉級。2字段FPortletDefineId的值一定要和Portlet定義信息配置文件2.2.1節(jié)中定義的值堅持一致。3繁體字段一定
16、要運用繁體文字,否那么和言語不匹配。4字段FPortletNumber的值為Portlet編碼,其值不做硬性要求,但建議運用“PN-+Portlet定義ID的方式,如PN-1001。注:(2021-11-16) BOS SP3工程義務中參與Portlet分類管理,因此新增了字段FPortletCategoryID相關默許分類ID如下:根底系統(tǒng):FZIyxl8gLUmP15IW8klEnUPH2a4=根底資料: VTh25HxPQEKvvaIWWecTGEPH2a4=財務會計: VFcHBNjYQ0qfzqDnSOOmMkPH2a4=資產(chǎn)管理: 90O4cecHikiMJoEHN5Pg8kPH2
17、a4=人力資源: 5ZE/Jdo9XkGqY38v30oQXkPH2a4=管理睬計: 4M141/5vlU6fPGEOu+pG7UPH2a4=資金管理: hLg/8i2uPkmQOAKsHt88f0PH2a4=商業(yè)分析:IbLhLRrJxUyZgDXwsRDKR0PH2a4=協(xié)同平臺: m6AWen4UD0SBnZ2qs/Dn5kPH2a4=供應鏈管理:m6AWen4UD0SBnZ2qs/Dn5kPH2a4=本錢管理: R2IPXjFfWEKCFO8i99+bJEPH2a4=數(shù)據(jù)倉庫: cXvgkmCk+0Wf9OTQKtkG3UPH2a4=房地產(chǎn):kY+l8pEiI0mtkcUNsF/+uU
18、PH2a4=產(chǎn)業(yè)鏈協(xié)同: Q+Y2omUEm0ClpF1FbQAlEUPH2a4=其他:XkGI/dDGlkWJhX5ZEW9lOEPH2a4=因此新增Portlet時需求明確他的Portlet要放在哪個分類下,并將對應的分類id插入到Portlet表中。假設不插入該字段,Portlet會默許顯示在根節(jié)點分類下Portlet類別可以在Portlet管理里面新增,因此他可以新建一個本人的類別,同時需求查詢“t_portal_portletCategory表,獲取到他新建類別的id,再來插入他的Portlet到剛剛新建的類別中2.4 Portlet配置信息與數(shù)據(jù)庫數(shù)據(jù)的對應關系通常情況下,一條Po
19、rtlet配置信息portlets.xml以及tiles-defs.xml中各一個條目對應數(shù)據(jù)庫表T_Portal_Portlet中的一條數(shù)據(jù)。假設多個Portlet運用一樣的內(nèi)容頁面tiles-defs.xml中的,那么一條Portlet配置信息將對應數(shù)據(jù)庫表T_Portal_Portlet中的多條數(shù)據(jù)。一條Portlet配置信息對應數(shù)據(jù)庫表T_Portal_Portlet中的多條數(shù)據(jù)的運用場景:內(nèi)容管理定義了一個Portlet內(nèi)容頁面,每個欄目可以分別對應一個Portlet定義,不同的Portlet定義經(jīng)過參數(shù)進展區(qū)分,參數(shù)中記錄欄目ID??梢越?jīng)過程序動態(tài)創(chuàng)建,也可以采用實體提交的方式。對
20、應實體:com.kingdee.eas.portal.PortletInfo /Portlet定義com.kingdee.eas.portal.PortletParameterInfo /Portlet參數(shù)運用程序創(chuàng)建完后,需求刷新緩存才干起作用,相關API見2.5.1節(jié)第4點。2.5 制造Portlet內(nèi)容頁面,實現(xiàn)業(yè)務需求EAS門戶中的Portlet能夠具有多個頁面,如用于展現(xiàn)業(yè)務邏輯的主頁面、業(yè)務設置頁面以及協(xié)助 闡明頁面等。用于展現(xiàn)業(yè)務邏輯的主頁面我們稱之為“Portlet內(nèi)容頁面,它是一個JSP頁面,但并不是完好的,其最終輸出為HTML片段,不能包含、以及標簽。以下是錯誤寫法例如,P
21、ortlet內(nèi)容頁面不應該包含藍色部分的標簽:EAS.以下圖展現(xiàn)了Portlet內(nèi)容頁面以及Portlet業(yè)務設置頁面。圖2-1 Portlet內(nèi)容頁面 圖2-2 Portlet業(yè)務設置頁面Portlet內(nèi)容頁面由相關的各業(yè)務部門根據(jù)各自的業(yè)務需求詳細實現(xiàn)。EAS門戶框架在Portlet內(nèi)容頁面上下文中提供了相應的接口以協(xié)助 開發(fā)人員完成詳細業(yè)務邏輯的編寫。2.5.1 Portlet內(nèi)容頁面JSP接口1獲取EAS上下文Context運用工具類WebContextUtil的getEasContext()方法。例如:Context userCtx = WebContextUtil.getEasCo
22、ntext(request);2獲取上下文中的用戶、組織、職員等信息運用工具類ContextUtil,例如:.String name = null;PersonInfo personInfo = ContextUtil.getCurrentUserInfo(ctx).getPerson();if (personInfo != null) name = personInfo.getName();3調(diào)用效力器端方法EAS6.0打補丁PTM035205之前:與ControlBean中調(diào)用本地方法一樣,例如:Context ctx = WebContextUtil.getEasContext(requ
23、est);IMessageCenter iMessageCenter = MessageCenterFactory.getLocalInstance(ctx);IRowSet rowset = iMessageCenter.getAcceptedTask();EAS6.0打補丁PTM035205之后:IMessageCenter iMessageCenter = MessageCenterFactory.getRemoteInstance();IRowSet rowset = iMessageCenter.getAcceptedTask();4Portlet操作運用接口com.kingdee.
24、eas.portal.IPortalServiceFacade,該接口提供以下方法:禁用Portlet含批量處置:disablePortlet 啟用Portlet含批量處置:enablePortlet作廢Portlet:deletePortlet新增Portlet無前往值:addPortlet新增Portlet前往新建ID:addPortletReturnId更新Portlet:update刷新Portlet緩存:refreshPortletCache獲取Portlet:getPortlet留意:一切與Portlet相關的操作,如添加、刪除、更新等,都必需運用該接口,不要直接調(diào)用IPortle
25、t接口對Portlet進展操作;進展Portlet操作獲取Portlet除外后,在最后務必運用refreshPortletCache來刷新Portlet緩存數(shù)據(jù)。例如:IPortalServiceFacade service = PortalServiceFacadeFactory.getLocalInstance(ctx);service.enablePortlet(portletID);service.refreshPortletCache();對PortletExtInfo的操作,由于PortletInfo包含PortletExtInfo,因此同樣經(jīng)過接口com.kingdee.eas.
26、portal.IPortalServiceFacade進展,舉例如下:其中,portletInfo為PortletInfo的實例添加PortletExtInfoPortletExtInfo portletExtInfo = new PortletExtInfo();portletExtInfo.setTitle(自定義Portlet標題);portletExtInfo.setBizDefUrl(/html/portlet/example/demoPortletDefSetting.jsp);portletExtInfo.setBizInsUrl(/html/portlet/example/de
27、moPortletInsSetting.jsp);portletInfo.setPortletExt(portletExtInfo);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);/ 假設portletInfo是新增,那么psf.addPortlet(portletInfo);/ 假設portletInfo是修正,那么/psf.update(portletInfo.getId(), portletInfo);修正PortletExtInfoPortletExtInfo portletExt
28、Info = portletInfo.getPortletExt();portletExtInfo.setTitle(修正自定義Portlet標題);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);刪除PortletExtInfoportletInfo.setPortletExt(null);IPortalServiceFacade psf = PortalServiceFacadeFactory.ge
29、tLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);5獲取Portlet相關信息包括Portlet定義和實例信息,如Portlet在配置文件中的定義ID,在數(shù)據(jù)庫中的定義ID、實例ID以及Portlet的個性化信息自定義標題、高度、顏色配置等等。運用工具類com.kingdee.eas.portal.web.util.PortletUtil可以在Portlet內(nèi)容頁面以及業(yè)務設置頁面后續(xù)將提及上獲取Portlet的相關信息,包括Portlet的個性化信息假設存在的話。以Portlet內(nèi)容頁面為例,假設需求在此頁面獲得
30、Portlet的自定義顯示稱號以及Portlet實例的高度。首先引入PortletUtil:獲取Portlet自定義顯示稱號:String customizedName = PortletUtil.getCustomizedName(request);獲取Portlet實例高度:int insHeight = PortletUtil.getInsHeight(request);高度值單位為像素,假設高度值為0,那么表示實例的高度自順應。關于PortletUtil的接口請參考“附錄2 PortletUtil API。代碼參考:server/deploy/eas.ear/cp_web.war/ht
31、ml/portlet/example/demoPortlet.jsp2.5.2 Portlet內(nèi)容頁面JS接口這些JS接口變量或者函數(shù)在Portlet內(nèi)容頁面中可直接運用。1Buffalo Ajax框架定義了兩個Buffalo對象:buffaloAsync:異步方式buffaloSync:同步方式運用例如:buffaloAsync.remoteCall(messageService.getMsgCount, true, function(reply) var arr = reply.getResult(); .在Portlet內(nèi)容頁面中運用Buffalo時請直接運用以上兩個對象,不用重新創(chuàng)建B
32、uffalo對象。在上一版本中,框架提供的Buffalo對象稱號分別為:buffalo:異步方式buffalo1:同步方式這兩個對象在門戶框架新版本中依然保管,但不建議運用。請運用buffaloAsync和buffaloSync。留意,假設需求創(chuàng)建新的Buffalo對象,請防止運用buffaloAsync、buffaloSync、buffalo、buffalo1這4個變量命名,否那么將會覆蓋這些框架提供的Buffalo對象。2翻開客戶端GUI界面invokeFunction(uiClass, uiClassParam, uiOprt, openMethod);createModelUI(uiC
33、lass);createNewWinUI(uiClass);createNewTabUI(uiClass);openEasMainMenu();其中uiOprt可設置為字符串: ADDNEW、VIEW、EDITADDNEW:新增VIEW:查看EDIT:編輯openMethod可設置為數(shù)字:50、80、及其他數(shù)字50:模態(tài)窗口80:新開窗口其他值:新開頁簽單據(jù)查看GUI界面接口:viewBill(billId);參數(shù)為單據(jù)ID單據(jù)的UUID,非單據(jù)編號,EAS門戶頁面在不同幀下調(diào)用方式略有不用,門戶各頁簽Portlet比如我的日歷,我的任務臺等規(guī)范調(diào)用方式為直接調(diào)用: viewBill(63fY
34、Lq2CTOCwsBgFdet+6Qneydw=);而各自頁簽參與了幀frame的情況下如流程中心參與了newMessageFrame,需求如下調(diào)用: parent.viewBill(63fYLq2CTOCwsBgFdet+6Qneydw=); 其他多層幀的情況以此類推,需求經(jīng)過parent或者top等方式獲取上層的JS函數(shù)來調(diào)用。更多關于翻開GUI界面的函數(shù)請參考以下文件:server/deploy/eas.ear/cp_web.war/common/js/easHandler.js3拖動Portlet后刷新Portlet內(nèi)容該功能常用于Portlet寬度需求自順應的場景,如“通知Portl
35、et和“待辦事項Portlet,由于這兩個Portlet的寬度由JS動態(tài)計算而得,所以當他們挪動到其他不同寬度的區(qū)域時,需求重新計算寬度,這時候就需求刷新Portlet內(nèi)容以觸發(fā)寬度的重新計算。在Portlet內(nèi)容頁面中實現(xiàn)以下函數(shù),并前往true值:function afterPortletDrop(toWidth) return true;其中,是用于防止JS變量或函數(shù)命名沖突的標識關于JS腳本變量和函數(shù)命名約束以及該標識如何獲得等問題請參考2.5.3節(jié),該標識必需加上,否那么框架無法判別需求刷新哪個Portlet。參數(shù)toWidth為目的區(qū)域的寬度值,由框架傳送,在該函數(shù)內(nèi)可用該參數(shù)值進
36、展一些必要的處置。不實現(xiàn)該函數(shù)或者函數(shù)前往true以外的值,那么拖動Portlet后,Portlet內(nèi)容不刷新。4其他Portal途徑:kingdee.portalmon.portalContextPath;其值如::6888/easportalPortal當前顏色方案皮膚途徑:kingdee.portalmon.portalSkinPath;其值如::6888/easportal/skin/01添加CSS款式文件到門戶的head區(qū)域kingdee.portalmon.addStyleSheet(cssFilePath);其中cssFilePath為CSS文件的途徑,用法例如:kingdee.
37、portalmon.addStyleSheet();注,并不一定要運用WebContextUtil.render方法來獲得CSS文件的途徑,可以直接如下運用:kingdee.portalmon.addStyleSheet(/html/portlet/example/demoPortlet.css);但是,運用WebContextUtil.render方法獲取文件可獲得緊縮特性,建議運用該方法。最大化Portletkingdee.portalmon.maxizePortlet(windowTitle, servletUrl, params);其中,windowTitile為最大化Portlet時
38、,窗口的標題,servletUrl為最大化Portlet所運用的url地址,params為需求傳送的參數(shù)2.5.3 Portlet內(nèi)容頁面制造規(guī)范與約束1業(yè)務JSP代碼文件放置規(guī)范二次開發(fā)的業(yè)務JSP代碼受維護的需求放到server/deploy/eas.ear/cp_web.war/html/custom目錄下。非受維護的需求放到server/deploy/eas.ear/cp_web.war/custom目錄下。EAS規(guī)范產(chǎn)品的業(yè)務JSP代碼受維護的需在server/deploy/eas.ear/cp_web.war/html/portlet目錄下建立對應的業(yè)務系統(tǒng)子目錄,并放置對應的業(yè)務
39、JSP代碼。非受維護的在server/deploy/eas.ear/cp_web.war/biz目錄下建立對應子目錄,并放置對應業(yè)務JSP代碼。受維護和非受維護的區(qū)別受維護的JSP頁面必需求經(jīng)過EAS Portal登錄后才干訪問,非受維護是指不需求EAS Portal登錄就可以訪問。2JS代碼文件放置規(guī)范JS文件放置到以下目錄:server/deploy/eas.ear/cp_web.war/common/js/各業(yè)務部門請自行在js目錄下建立子文件夾,以區(qū)分框架和其他部門的JS代碼。該目錄下包括子目錄的一切JS文件在構建時都會自動進展緊縮,將JS文件放置在其他目錄將不會獲得緊縮特性。3Por
40、tlet內(nèi)容頁面中,JS腳本變量和函數(shù)命名約束重要在一個HTML文檔內(nèi),JavaScript全局變量和函數(shù)命名必需獨一,否那么會被后定義的覆蓋。由于EAS門戶中,不同頁簽,不同Portlet的內(nèi)容最終將輸出到一個HTML文檔中,為了防止不同的Portlet內(nèi)定義一樣稱號的JS變量或者在不同的頁簽內(nèi)包含一樣的Portlet定義,必需保證Portlet之間全局JS變量名和函數(shù)名獨一。提示:只需Portlet內(nèi)容頁面JSP片段需求思索命名問題,保證全局變量和函數(shù)命名獨一,其他獨立的頁面包含完好的HTML標簽的頁面,如運用iframe方式嵌入的頁面、Portlet業(yè)務設置頁面等那么不需求思索該問題。最
41、正確實際:盡量少運用全局變量。大量地運用全局變量將添加變量命名沖突的幾率,應該謹慎運用全局變量。關于如何減少JS全局變量和函數(shù)數(shù)量的方法請見2.5.4節(jié)。補充知識:在JS函數(shù)內(nèi),運用var關鍵字定義變量,變量的作用域為部分作用域,假設不運用var關鍵字,那么為全局作用域。JS函數(shù)內(nèi)的部分變量定義時都應該加上var關鍵字。運用以下兩種接口之一,均可獲得與當前Portlet實例相關的全局獨一標識“指紋信息。為Portlet內(nèi)容頁面中JS腳本的每個全局變量和函數(shù)加上該標識,那么可保證該Portlet實例的JS全局變量和函數(shù)在EAS門戶中全局獨一,防止不同Portlet之間以及不同頁簽一樣Portle
42、t不同實例之間的JS變量和函數(shù)命名沖突。接口1:運用com.kingdee.eas.portal.web.util.PortletUtil例如:/ fp is short for fingerprintString fp = PortletUtil.getFingerprint(request);接口2:運用com.kingdee.eas.portal.web.util.PortletIndexGenerator例如:/ fp is short for fingerprintString fp = PortletIndexGenerator.nextPortletIndex(request);
43、兩種接口的區(qū)別:接口1既可以在Portlet內(nèi)容頁面中運用,也可以在Portlet業(yè)務設置頁面中運用見第3章;而接口2只能在Portlet內(nèi)容頁面中運用。獲得“指紋信息后例如中為Java變量fp,為每個全局變量和函數(shù)加上該標識,代碼例如如下:var a = 1;var b = 2;function fnOne() function fnTwo() a href=# onclick=fnTwo()My Link上面的例子中,一共定義了4個全局變量包括函數(shù),通常情況下,應盡量控制全局變量的數(shù)量,關于如何減少JS全局變量和函數(shù)數(shù)量的方法請見2.5.4節(jié)。留意:該約束必需嚴厲執(zhí)行,以防止影響框架和Po
44、rtlet的功能。4Portlet內(nèi)容頁面中,CSS款式命名規(guī)范重要和JS腳本變量和函數(shù)命名需求全局獨一一樣,CSS中的class和id命名也需求思索到全局影響的情況。提示:只需Portlet內(nèi)容頁面JSP片段需求思索命名問題,保證class和id命名獨一,其他獨立的頁面包含完好的HTML標簽的頁面,如運用iframe方式嵌入的頁面、Portlet業(yè)務設置頁面等那么不需求思索該問題。頁面中的元素id屬性值需求保證全局獨一,這就需求進展類似JS腳本中變量命名約束的操作,如:div id=test-div-假設id值不添加獨一標識,那么在頁面中存在一樣Portlet的多個實例能夠位于不同頁簽內(nèi)時,
45、頁面中將出現(xiàn)多個id一樣的元素,這將對款式或腳本產(chǎn)生影響。在Portlet內(nèi)容頁面中書寫CSS款式有兩種方式:在標簽中加上style屬性這種方法最直接,而且由于優(yōu)先級最高,可以防止Portlet內(nèi)容的款式遭到Portal全局款式的影響,但維護起來比較費事。引入外部CSS文件這種方法可以對Portlet內(nèi)容的款式進展一致管理,方便維護。運用JS腳本引入外部CSS文件的方法如下:kingdee.portalmon.addStyleSheet();紅色部分交換成實踐的CSS文件地址。關于該JS接口在2.5.2 節(jié)Portlet內(nèi)容頁面JS接口已有詳細論述。留意:不要在Portlet內(nèi)容頁面中直接運用
46、標簽引入款式,框架目前不支持這種方式??梢赃\用標簽來書寫款式,但并不引薦,由于頁面中存在一樣Portlet的多個實例時,這些款式將被包含多次,當然,這通常不會是什么大問題。運用函數(shù)kingdee.portalmon.addStyleSheet添加款式文件時,即時頁面中存在一樣Portlet的多個實例,款式文件也只會在頁面頭部加載一次。運用引入外部CSS文件的方式時,CSS款式的命名需遵照以下規(guī)范:kpp-xxx-yyykpp前綴代表Kingdee Portal Portletxxx為模塊稱號,如mycalendar以“例如Portlet為例,其CSS款式的命名如下所示:.kpp-demopor
47、tlet-table .kpp-demoportlet-class-selector-name 2.5.4 Portlet內(nèi)容頁面制造常見問題1如何嵌入一個完好JSP頁面?可以在JSP頁面中嵌入iframe幀構造,場景:EAS Portal中嵌入的OA頁面,詳細可參考以下文件:server/deploy/eas.ear/cp_web.war/custom/yiruan_oa.jsp 2如何提交頁面數(shù)據(jù)?翻開新窗口進展處置運用最大化Portlet進展處置運用Ajax技術來提交。目前成熟的Ajax框架很多,EAS門戶中采用的是Buffalo框架,相關開發(fā)指南見“附錄3 Ajax之Buffalo開發(fā)
48、指南。3如何直接執(zhí)行SQL語句?import com.kingdee.eas.util.app.DbUtil;import com.kingdee.jdbc.rowset.IRowSet;Context userCtx = WebContextUtil.getEasContext(request);/執(zhí)行查詢IRowSet rowSet = DbUtil.executeQuery(ctx, select * from t_pm_user);if (rowSet != null) while (rowSet.next() String user = rowSet.getString(fnumbe
49、r);/執(zhí)行更新DbUtil.execute(ctx, update t_pm_user set fname_l2=zhangsan where fnumber=00201);4我覺得我的JS腳本中全局變量和函數(shù)的命名曾經(jīng)很規(guī)范了,比如都加了前綴xxx_yyy_zzz,是不是就可以不運用框架提供的方法進展變量和函數(shù)命名的修正呢?恐怕不行。由于即使命名曾經(jīng)做了規(guī)范,還是有能夠與其他Portlet或框架的JS變量和函數(shù)產(chǎn)生沖突。即使可以保證和其他Portlet或框架不產(chǎn)生沖突,不同頁簽下一樣Portlet不同實例的代碼一定也會產(chǎn)生沖突。比如頁簽1下有Portlet1的實例PortletIns1,其
50、中運用了全局JS變量a,頁簽2下有Portlet1的實例PortletIns2,必定也運用了一樣的全局JS變量a,由于不同頁簽之間的Portlet的代碼都在同一個EAS門戶的HTML中,所以JS變量產(chǎn)生了沖突。所以,請務必按照2.5.3節(jié)第2點的方法進展JS腳本全局變量和函數(shù)的命名規(guī)范。5如何盡量少地定義JS腳本中的全局變量函數(shù)?可參考以下風格:var mycalendar = a: 1, b: 2, fnOne: function() , fnTwo: function() a href=# onclick=mycalendar.fnTwo()My Link運用該方式,只需定義1個全局變量m
51、ycalendar,其他變量或函數(shù)都是部分變量,不會呵斥命名沖突。6原有的Portlet中的代碼主要是JS代碼需求按照JS變量和函數(shù)命名規(guī)范進展修正嗎?假設運用的是新的門戶框架,那么必需進展代碼重構。需求進展JS代碼重構的頁面僅僅是那些對門戶全局JS變量和函數(shù)有影響的頁面,如Portlet內(nèi)容頁面,而對于其他完好的頁面包含完好的HTML,如、等標簽,如Portlet業(yè)務設置頁面,以iframe方式嵌入到Portlet內(nèi)容頁面的頁面,那么不需求進展JS代碼重構,由于他們對門戶全局JS變量和函數(shù)不會產(chǎn)生影響。7舊Portlet的JS代碼中包含了很多全局變量和函數(shù),一個個修正似乎比較費事,有更快的方
52、法嗎?假設他的JS腳本中存在大量的全局變量,逐個交換比較費事,那么可運用以下的方法,運用1個全局變量來“包裝他的舊代碼:假設他的舊代碼如下:var var1 = 1;var var2 = 2;var var3 = 3;var var4 = 4;function fn1() function fn2() function fn3() 其中在HTML中運用了fn1和fn2兩個函數(shù)重構過程如下:定義1個全局變量,并運用某個方法例如中為init方法來初始化包裝他的舊代碼塊:var myapp = init: function() / 舊代碼塊 / var var1 = 1; var var2 = 2;
53、 function fn1() / 舊代碼塊 / myapp.init();檢查原有代碼中,在HTML里運用了哪些函數(shù),這里只運用了fn1和fn2兩個函數(shù)。在新代碼的init方法中為這兩個函數(shù)提供對外的“接口:var myapp = init: function() / 舊代碼塊 / var var1 = 1; var var2 = 2; function fn1() / 舊代碼塊 / / 提供對外的“接口 this.fn1 = fn1; this.fn2 = fn2; myapp.init();如今在HTML中這樣運用函數(shù):a href=# onclick=myapp.fn1()a href
54、=# onclick=myapp.fn2()以下圖展現(xiàn)了該重構的過程:圖2-3 重構過程例如這種方法適用于存在大量全局變量的頁面,可減少交換全局變量的數(shù)量。2.5.5 Portlet內(nèi)容頁面HTC控件的交換在前面的一段時間,門戶控件根本已由HTC交換為EXT控件,因此為提高門戶性能,本次優(yōu)化去除了門戶在TOP頁面中的HTC控件引入。修正能夠呵斥相關業(yè)務Portlet或業(yè)務頁面的原有的HTC控件不可用。處理方案:將HTC控件交換為EXT控件建議EXT控件的根本文件門戶曾經(jīng)在TOP中進展引入。因此業(yè)務portlet頁面或其他內(nèi)置頁面可直接運用。門戶運用的EXT版本為2.0 RC 1留意:單獨翻開的
55、頁面以及業(yè)務portlet中嵌入的iframe等,需求重新自行引入ext的類庫。引入文件參見cp_web.warhtmlcommontop.jsp自行引入HTC控件不引薦假設還是想運用原有的HTC或暫時不想交換,需在本人的頁面自行引入HTC控件如下兩個文件引入了一切原有的HTC控件,假設他只是想運用其中一兩種,請在top_htc_js.jsp文件中找到本人的HTC控件作單獨引入交換為EXTJS控件方式:用EXT控件交換HTC直接運用EXT的規(guī)范控件即可。以下以button控件交換為例在原有的標簽中如然后寫一個JavaScript函數(shù)創(chuàng)建一個EXT控件即可function initButton(
56、)new Ext.Button(renderTo: myBtn,text: 更多,handler: btnClick);這樣在運轉時直接渲染一個Ext的按鈕到標簽中詳細EXT控件運用可參考EXTJS開源類庫2.5.6 門戶優(yōu)化合并且刪除了部分js此處優(yōu)化門戶對各種KD擴展ext的js文件進展了合并。為了不維護兩份代碼添加任務量。對被合并的js進展了刪除。/common/js/extsp/js/compenent/KDMultiLangBox.js/common/js/extsp/js/compenent/KDLabel.js/common/js/extsp/js/compenent/KDPor
57、tlet.js/common/js/extsp/js/compenent/KDPagingToolBar.js/common/js/extsp/js/compenent/KDTabPanel.js/common/js/extsp/js/compenent/KDYStyleTabPanel.js/common/js/extsp/js/compenent/KDTabPanelMenu.js/common/js/extsp/js/compenent/KDTabPanelForColumn.js/common/js/extsp/js/compenent/KDTabPanelLoadScript.js合
58、并為:/common/js/extsp/KDUxCompenent.js/common/js/extsp/js/menu/KDMenu.js/common/js/extsp/js/menu/KDDateMenu.js/common/js/extsp/js/menu/KDDateItem.js/common/js/extsp/js/menu/KDDatePicker.js合并為:/common/js/extsp/KDUxMenu.js/common/js/extsp/js/layout/KDCardLayout.js/common/js/extsp/js/layout/KDTableLayout
59、2.0.js/common/js/extsp/js/layout/KDDivTableLayout2.0.js合并為:/common/js/extsp/KDUxLayout.js合并js都是純粹的將js文件內(nèi)容拷貝到一個大的js文件中。假設業(yè)務portlet如流程中心單獨引入了這些js,請修正引入文件,否那么能夠會出現(xiàn)腳本錯誤。目前有兩種方式處置:一是引入合并后的js文件。例如之前引入了KDTabPanelForColumn.js.請修正為引入KDUxCompenent.js。這樣的一點影響是他只運用其中一個js內(nèi)容,但是必需把整個大文件的內(nèi)容引入。二是在KDUxCompenent.js中拷貝
60、出對應組件的js代碼,本人新建一個js文件自行引入。第3章 Portlet業(yè)務設置Portlet業(yè)務設置頁面為獨立的JSP頁面,Portlet開發(fā)者可在Portlet業(yè)務設置頁面進展相關業(yè)務邏輯的編寫如保管用戶的設置信息等。Portlet業(yè)務設置頁面分為兩種類型:1定義期的Portlet業(yè)務設置頁面在此進展的設置對全部Portlet實例有效。該設置位于:門戶-配置管理-Portlet管理-設置-業(yè)務設置圖3-1 Portlet定義期業(yè)務設置頁面2運轉期的Portlet業(yè)務設置頁面在此進展的設置只對當前Portlet實例有效。該設置位于:詳細的某個Portlet實例-右上角設置按鈕-業(yè)務設置 圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2031年中國嬰幼兒推車行業(yè)市場競爭格局及發(fā)展趨勢預測報告
- 知識產(chǎn)權侵權行為的識別與處理
- 基礎教育市場行情動態(tài)分析及發(fā)展前景趨勢預測報告
- 訴前查封申請書
- 四川省簡陽市2023-2024學年八年級下學期期中考試物理試題【含答案、解析】
- 未來網(wǎng)絡編程技術的前沿研究
- 2025年葉酸鈣項目可行性研究報告
- 知識產(chǎn)權管理軟件-教育領域的應用實踐
- 病例分析的精髓深入挖掘診斷與治療策略
- 2024-2025學年一年級下學期數(shù)學第八單元《厘米的認識》(教案)
- 婦科圍手術期護理課件
- 臨床執(zhí)業(yè)醫(yī)師指導用書
- 版本管理方案
- 統(tǒng)編版一年級語文下冊部編版第六單元單元教材解讀(素材)(課件)
- 大慶油田環(huán)境保護與可持續(xù)發(fā)展
- 武術健身操教案
- 職業(yè)健康監(jiān)護評價報告編制指南
- 急診科中的婦科急癥處理
- 《機械基礎》課程標準
- 企業(yè)關停方案
- 鋁冶煉生產(chǎn)技術指標元數(shù)據(jù)規(guī)范
評論
0/150
提交評論