BOSPortal培訓(xùn)_Portlet開發(fā)_第1頁
BOSPortal培訓(xùn)_Portlet開發(fā)_第2頁
BOSPortal培訓(xùn)_Portlet開發(fā)_第3頁
BOSPortal培訓(xùn)_Portlet開發(fā)_第4頁
BOSPortal培訓(xùn)_Portlet開發(fā)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司BOS Portal培訓(xùn)Portlet開發(fā)演講人:金蝶軟件(中國)有限公司返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/2提綱n Portlet介紹n 基本開發(fā)流程n 高級用法n 常用方法及接口n 開發(fā)規(guī)范與約束n 常見問題n 其他n 沙盤演練返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/3Portlet介紹n 門戶組成PortalPortletPagePage SelectionPage ContentPortlet ContentCoarse Grained:Community or Mandato

2、r related(Meta Portals, Community Portals) Middle Grained:Role or Group based (Distributed Administration)Fine Grained:User related personalization(Personalization-Engines)Page EntitlementsPersonalizationPortlet Entitlements返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/4Portlet介紹n Portlet角色轉(zhuǎn)變:模板-定義-實(shí)例-用戶級實(shí)例Portle

3、t模板Portlet.xmlPortlet定義T_Portal_PortletPortlet實(shí)例T_Portal_PortletPreferencesPortlet用戶實(shí)例UserT_Portal_PortletPreferences程序或SQL配置到頁簽實(shí)際運(yùn)行返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/5Portlet介紹n Portlet標(biāo)準(zhǔn)處理過程,渲染異步處理返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/6基本開發(fā)流程n 基本開發(fā)流程編寫業(yè)務(wù)代碼1Portlet定義設(shè)置4業(yè)務(wù)處理配置3Portlet模板配置2返回 版權(quán)所有 1993-2009 金

4、蝶軟件(中國)有限公司P/7基本開發(fā)流程1、編寫業(yè)務(wù)代碼n Portlet可能具有多個頁面,如用于展現(xiàn)業(yè)務(wù)邏輯的主頁面、業(yè)務(wù)設(shè)置頁面以及幫助說明頁面等。業(yè)務(wù)設(shè)置后面再介紹n 用于展現(xiàn)業(yè)務(wù)邏輯的主頁面稱之為“Portlet內(nèi)容頁面”,它是一個JSP頁面,但并不是完整的,其最終輸出為HTML片段,不能包含、以及標(biāo)簽Portlet內(nèi)容頁面Portlet業(yè)務(wù)設(shè)置頁面返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/8基本開發(fā)流程1、編寫業(yè)務(wù)代碼n 以下是錯誤寫法示例,Portlet內(nèi)容頁面不應(yīng)該包含藍(lán)色部分的標(biāo)簽EAS.返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/9基

5、本開發(fā)流程1、編寫業(yè)務(wù)代碼n Portlet內(nèi)容頁面由業(yè)務(wù)開發(fā)人員根據(jù)業(yè)務(wù)需求具體實(shí)現(xiàn)n 門戶框架提供了相關(guān)的開發(fā)接口以幫助開發(fā)人員完成具體業(yè)務(wù)邏輯的編寫,后面再介紹n 以如下hello word代碼為例n 文件存放路徑server/deploy/eas.ear/cp_web.war/html/custom/test.jsptest.jsp返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/10基本開發(fā)流程2、Portlet模板配置n 模板配置文件路徑n EAS5.4:serverprofilesserver1configportalConfigportlets.xmln EAS6

6、.0:serverdeployeas.earcp_web.warWEB-INFportlets_xxx.xmln xxx表示業(yè)務(wù)領(lǐng)域名稱,如bos、eas、sp、hr等n 二次開發(fā)為portlets_sp.xml,不存在則創(chuàng)建該文件n 注意:只要符合portlets_*.xml規(guī)則則會被系統(tǒng)加載n 關(guān)于“Portal配置文件拆分說明” 后面再介紹返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/11基本開發(fā)流程2、Portlet模板配置n 各配置參數(shù)值說明如下:n 1001:Portlet定義ID,全局唯一,不能重復(fù)。取值范圍具體約定如下BOS為 1-199 ,EAS為 200-

7、999, 二次開發(fā)為 1000 以后;n testPortlet:Portlet定義信息,無特別要求,一般使用英文字符標(biāo)識注意:該標(biāo)題信息僅用于在配置文件中區(qū)分不同的Portlet,與Portlet在運(yùn)行時顯示的標(biāo)題無關(guān),Portlet在運(yùn)行時顯示的標(biāo)題信息由Portlet定義決定 1001testPortlet view portlet.test返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/12基本開發(fā)流程3、業(yè)務(wù)處理配置n 業(yè)務(wù)處理配置文件路徑n server/deploy/eas.ear/cp_web.war/WEB-INF/tiles-defs_xxx.xml其中,x

8、xx表示具體的業(yè)務(wù)領(lǐng)域名稱,如bos、eas、hr、sp等n portlet.test:tiles定義名稱,和前面的配置保持一致n 1001:對應(yīng)的Portlet定義ID,和前面的配置保持一致n /html/custom/test.jsp:業(yè)務(wù)處理頁面,如果是Struts,則還需要在struts-config.xml中進(jìn)行配置返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/13基本開發(fā)流程4、Portlet定義設(shè)置n Portlet定義設(shè)置INSERT INTO T_Portal_Portlet(FID,FCreatorID,FCreateTime,FLastUpdateUse

9、rID,FLastUpdateTime,FControlUnitID,FPortletDefineId,FPortletName_L1,FPortletName_L2,FPortletName_L3,FEnable,FPortletNumber,FDescription_L1,FDescription_L2,FDescription_L3) VALUES(NEWBOSID(0B344890),00000000-0000-0000-0000-00000000000013B7DE7F,ts2009-10-01 12:13:14,00000000-0000-0000-0000-00000000000

10、013B7DE7F,ts2009-10-01 12:13:14,00000000-0000-0000-0000-000000000000CCE7AED4,N1001,NULL,NPortlet標(biāo)題簡體,NPortlet標(biāo)題繁體,1,NPN-1001,NULL, NPortlet描述簡體, NPortlet描述繁體);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/14基本開發(fā)流程4、Portlet定義設(shè)置n 說明與注意事項(xiàng):n 插入字段FID的值請務(wù)必使用函數(shù)NEWBOSID,其中0B344890為Portlet實(shí)體元數(shù)據(jù)編碼,該值不能更改為其他值,否則程序獲取Portlet信

11、息時將出錯n 函數(shù)NEWBOSID(0B344890)每次執(zhí)行會產(chǎn)生新的ID值,如果作為腳本提交,請注意修改為一個確定的ID值,且一定要支持可重復(fù)升級n SQL語句需要通過管理控制臺或EAS自帶的查詢分析器執(zhí)行n 字段FPortletDefineId的值要和前面的配置保持一致n 在英文或繁體使用場景下,英文字段和繁體字段需要錄入對應(yīng)的英文和繁體信息,否則顯示的信息和語言不匹配n 字段FPortletNumber的值為Portlet編碼,其值不做硬性要求,但建議使用“PN-”+Portlet定義ID的形式,如PN-1001返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/15提綱n

12、 Portlet介紹n 基本開發(fā)流程n 高級用法n 常用方法及接口n 開發(fā)規(guī)范與約束n 常見問題n 其他n 沙盤演練返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/16高級用法n 三種高級用法支持帶參數(shù)1業(yè)務(wù)設(shè)置3一模板多定義2返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/17高級用法支持帶參數(shù)n Portlet定義支持帶參數(shù)n 使用場景:打開流程中心頁簽,可能需要定位到流程中心的不同樹節(jié)點(diǎn)上,該參數(shù)可以通過Portlet參數(shù)定義給予在代碼中可以通過如下代碼獲取該參數(shù)值:String param = (String)request.getAttribute(“

13、method”);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/18高級用法支持帶參數(shù)Insert Into T_Portal_Portlet(FID,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID,FPortletDefineId,FPortletName_L1,FPortletName_L2,FPortletName_L3,FEnable,FPortletNumber,FDescription_L1,FDescription_L2,FDescription_L3,FFlag)V

14、alues(693549f1-0107-1000-e000-045cc0a8125c0B344890,00000000-0000-0000-0000-00000000000013B7DE7F,ts2005-11-07 14:01:53,00000000-0000-0000-0000-00000000000013B7DE7F,ts2005-11-07 14:01:53,00000000-0000-0000-0000-000000000000CCE7AED4,N38,NULL,N流程中心,N流程中心,1,NPN-038,NULL,N流程處理中心,獨(dú)占式,N流程處理中心,獨(dú)佔(zhàn)式,NULL); Ins

15、ert Into T_Portal_PortletParameter(FID,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID,FParamName,FParamValue,FPortletID)Values(a092a05c-0106-1000-e000-0459c0a8125c4C5D2CF9,00000000-0000-0000-0000-00000000000013B7DE7F,ts2005-09-29 14:55:43,00000000-0000-0000-0000-000000000000

16、13B7DE7F,ts2005-09-29 14:55:43,00000000-0000-0000-0000-000000000000CCE7AED4,Nmethod,NdefaultAction,693549f1-0107-1000-e000-045cc0a8125c0B344890); 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/19高級用法一模板多定義n 一個Portlet模板可對應(yīng)多個Portlet定義n 通常情況下,一條Portlet配置信息(portlets.xml以及tiles-defs.xml中各一個條目)對應(yīng)數(shù)據(jù)庫表T_Portal_Portlet中的一條

17、數(shù)據(jù)n 如果多個Portlet使用相同的內(nèi)容頁面(tiles-defs.xml中的),則一條Portlet配置信息將對應(yīng)數(shù)據(jù)庫表T_Portal_Portlet中的多條數(shù)據(jù)n 使用場景:內(nèi)容管理定義了一個Portlet模板,每個欄目可以分別對應(yīng)一個Portlet定義,不同的Portlet定義通過參數(shù)進(jìn)行區(qū)分,參數(shù)中記錄欄目IDn 可調(diào)用門戶接口程序動態(tài)創(chuàng)建,參考下面章節(jié)com.kingdee.eas.portal.IPortalServiceFacade.addPortlet(PortletInfo)com.kingdee.eas.portal.PortletInfo /Portlet定義co

18、m.kingdee.eas.portal.PortletParameterInfo /Portlet參數(shù)/創(chuàng)建完成后,需要刷新緩存才能起作用/IPortalServiceFacade.refreshPortletCache()返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/20高級用法業(yè)務(wù)設(shè)置n 業(yè)務(wù)設(shè)置n 定義期的Portlet業(yè)務(wù)設(shè)置頁面,在此進(jìn)行的設(shè)置對全部Portlet實(shí)例有效。(該設(shè)置位于:門戶-配置管理-Portlet管理-設(shè)置-業(yè)務(wù)設(shè)置)返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/21高級用法業(yè)務(wù)設(shè)置n 業(yè)務(wù)設(shè)置n 運(yùn)行期的Portlet業(yè)務(wù)設(shè)

19、置頁面,在此進(jìn)行的設(shè)置只對當(dāng)前用戶級Portlet實(shí)例有效。(該設(shè)置位于:具體的某個Portlet實(shí)例-右上角設(shè)置按鈕-業(yè)務(wù)設(shè)置)返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/22高級用法業(yè)務(wù)設(shè)置n 業(yè)務(wù)設(shè)置n Portlet業(yè)務(wù)設(shè)置頁面為獨(dú)立的JSP頁面,Portlet開發(fā)者可在Portlet業(yè)務(wù)設(shè)置頁面進(jìn)行相關(guān)業(yè)務(wù)邏輯的編寫(如保存用戶的設(shè)置信息等)。n Portlet業(yè)務(wù)設(shè)置頁面分為兩種類型:定義期的Portlet業(yè)務(wù)設(shè)置頁面運(yùn)行期的Portlet業(yè)務(wù)設(shè)置頁面n Portlet業(yè)務(wù)設(shè)置的兩種頁面(定義期和運(yùn)行期)可以是同一個頁面,也可以是不同的頁面,取決于具體的業(yè)務(wù)需求

20、??蚣芴峁〢PI獲取Portlet信息n 參考實(shí)現(xiàn):(“通知Portlet”業(yè)務(wù)設(shè)置頁面)n server/deploy/eas.ear/cp_web.war/html/portlet/newprocesscenter/noticePortletSettings.jsp返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/23高級用法業(yè)務(wù)設(shè)置n 關(guān)聯(lián)Portlet業(yè)務(wù)設(shè)置頁面n 由于Portlet業(yè)務(wù)設(shè)置頁面是獨(dú)立的頁面,門戶框架對業(yè)務(wù)設(shè)置頁面的具體實(shí)現(xiàn)不作限制和要求n 門戶框架負(fù)責(zé)關(guān)聯(lián)業(yè)務(wù)設(shè)置頁面,即根據(jù)關(guān)聯(lián)信息,判斷“業(yè)務(wù)設(shè)置”按鈕是否可用,當(dāng)用戶點(diǎn)擊“業(yè)務(wù)設(shè)置”按鈕時,打開關(guān)聯(lián)

21、的業(yè)務(wù)設(shè)置頁面n 假設(shè)已經(jīng)為hello word示例portlet制作了兩個業(yè)務(wù)設(shè)置頁面定義期的Portlet業(yè)務(wù)設(shè)置頁面位于:/html/custom/testPortletDefSetting.jsp運(yùn)行期的Portlet業(yè)務(wù)設(shè)置頁面位于:/html/custom/testPortletInsSetting.jsp返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/24高級用法業(yè)務(wù)設(shè)置n 關(guān)聯(lián)Portlet業(yè)務(wù)設(shè)置頁面INSERT INTO T_PORTAL_PortletExt(FID,FShowTitleArea,FTitle_l2,FTitle_l3,FShowTitle

22、AreaBorder,FShowContentAreaBorder,FHeight,FBizDefUrl,FBizInsUrl,FAttrConfigurable,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID) VALUES (NEWBOSID(D9493F71),1,N測試Portlet,N測試Portlet,1,1,0,N/html/custom/testPortletDefSetting.jsp,N/html/custom/testPortletInsSetting.jsp,1,000000

23、00-0000-0000-0000-00000000000013B7DE7F,ts2009-10-01 12:13:14,00000000-0000-0000-0000-00000000000013B7DE7F,ts2009-10-01 12:13:14,00000000-0000-0000-0000-000000000000CCE7AED4);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/25高級用法業(yè)務(wù)設(shè)置n 關(guān)聯(lián)Portlet業(yè)務(wù)設(shè)置頁面n 插入字段FID的值請務(wù)必使用函數(shù)NEWBOSID,其中 D9493F71為PortletExt實(shí)體元數(shù)據(jù)編碼,該值不能更改為其他值

24、,否則程序獲取Portlet信息時將出錯。函數(shù)NEWBOSID( D9493F71)每次執(zhí)行會產(chǎn)生新的ID值,如果作為腳本提交,請注意修改為一個確定的ID值,且一定要支持可重復(fù)升級n 字段FTitle_l2和FTitle_l3分別為該P(yáng)ortlet的默認(rèn)簡體中文名稱和繁體中文名稱。繁體字段一定要使用繁體文字,否則和語言不匹配n 字段FBizDefUrl的值為Portlet定義期的業(yè)務(wù)設(shè)置頁面地址,字段FBizInsUrl的值為Portlet運(yùn)行期的業(yè)務(wù)設(shè)置頁面地址。如果業(yè)務(wù)需求中,Portlet在定義期沒有業(yè)務(wù)設(shè)置項(xiàng)(“業(yè)務(wù)設(shè)置”按鈕為灰色不可用),則字段FBizDefUrl的值為空,同理,如

25、果Portlet在運(yùn)行期沒有業(yè)務(wù)設(shè)置項(xiàng),則字段FBizInsUrl的值為空返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/26高級用法業(yè)務(wù)設(shè)置n 關(guān)聯(lián)Portlet業(yè)務(wù)設(shè)置頁面n 執(zhí)行完上面的SQL后,假設(shè)剛插入的那條數(shù)據(jù)的FID為UMQxuEXcSvep+D1FEhuX19lJP3E=,再執(zhí)行以下KSQL:n UPDATE T_Portal_Portlet set FPortletExtID = UMQxuEXcSvep+D1FEhuX19lJP3E= where FID=對應(yīng)的portlet定義id;n 最后,重啟服務(wù)器,使業(yè)務(wù)設(shè)置頁面關(guān)聯(lián)生效n 注意:建議禁用Portle

26、t業(yè)務(wù)設(shè)置頁面中的緩存功能,否則獲得的信息可能與數(shù)據(jù)庫中的數(shù)據(jù)不同步。具體方法是在Portlet業(yè)務(wù)設(shè)置頁面中加入以下meta:n n n 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/27提綱n Portlet介紹n 基本開發(fā)流程n 高級用法n 常用方法及接口n 開發(fā)規(guī)范與約束n 常見問題n 其他n 沙盤演練返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/28常用方法及接口n 獲取EAS上下文(Context)n 獲取上下文中的用戶、組織、職員等信息示例:Context userCtx = WebContextUtil.getEasContext(reque

27、st);String name = null;PersonInfo personInfo = ContextUtil.getCurrentUserInfo(ctx).getPerson();返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/29常用方法及接口n 調(diào)用服務(wù)器端APP方法EAS6.0打補(bǔ)丁PTM035205之前:Context ctx = WebContextUtil.getEasContext(request);IUser iUser = UserFactory.getLocalInstance(ctx);UserInfo userinfo = iUser.getU

28、ser(userNumber);補(bǔ)丁PTM035205之后:IUser iUser = UserFactory.getRemoteInstance();UserInfo userinfo = iUser.getUser(userNumber);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/30常用方法及接口n Portlet操作接口n 使用接口com.kingdee.eas.portal.IPortalServiceFacade,提供以下方法n 禁用Portlet(含批量處理):disablePortlet n 啟用Portlet(含批量處理):enablePortletn

29、作廢Portlet:deletePortletn 新增Portlet(無返回值):addPortletn 新增Portlet(返回新建ID):addPortletReturnIdn 更新Portlet:updaten 刷新Portlet緩存:refreshPortletCachen 獲取Portlet:getPortlet返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/31常用方法及接口n 所有與Portlet相關(guān)的操作,如添加、刪除、更新等,都必須使用該接口,不要直接調(diào)用IPortlet接口對Portlet進(jìn)行操作n 進(jìn)行Portlet操作(獲取Portlet除外)后,在最后

30、務(wù)必使用refreshPortletCache來刷新Portlet緩存數(shù)據(jù)IPortalServiceFacade service = PortalServiceFacadeFactory. getRemoteInstance();service.enablePortlet(portletID);service.refreshPortletCache();返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/32常用方法及接口n 業(yè)務(wù)設(shè)置接口n 對PortletExtInfo的操作,由于PortletInfo包含PortletExtInfo,因此同樣通過接口com.kingdee.e

31、as.portal.IPortalServiceFacade進(jìn)行舉例如下:(portletInfo為PortletInfo的實(shí)例)添加PortletExtInfo:PortletExtInfo portletExtInfo = new PortletExtInfo();portletExtInfo.setTitle(自定義Portlet標(biāo)題);portletExtInfo.setBizDefUrl(/html/custom/testPortletDefSetting.jsp);portletExtInfo.setBizInsUrl(/html/custom/testPortletInsSett

32、ing.jsp);portletInfo.setPortletExt(portletExtInfo);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/33常用方法及接口n 業(yè)務(wù)設(shè)置接口IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);/ 如果portletInfo是新增,則psf.addPortlet(portletInfo);/ 如果portletInfo是修改,則/psf.update(portletInfo.getId(), portletInfo);修改PortletE

33、xtInfo:PortletExtInfo portletExtInfo = portletInfo.getPortletExt();portletExtInfo.setTitle(修改自定義Portlet標(biāo)題);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/34常用方法及接口n 業(yè)務(wù)設(shè)置接口刪除PortletExtInfo:portle

34、tInfo.setPortletExt(null);IPortalServiceFacade psf = PortalServiceFacadeFactory.getLocalInstance(ctx);psf.update(portletInfo.getId(), portletInfo);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/35常用方法及接口n Portlet業(yè)務(wù)設(shè)置頁面JS接口n 在Portlet運(yùn)行期的業(yè)務(wù)設(shè)置頁面中,關(guān)閉設(shè)置窗口后刷新Portlet內(nèi)容n 場景:當(dāng)用戶進(jìn)行業(yè)務(wù)設(shè)置(如設(shè)置顯示條目數(shù)量等)后,關(guān)閉設(shè)置窗口時,往往需要刷新Portlet內(nèi)容以重

35、新獲取業(yè)務(wù)數(shù)據(jù)。n 有兩種方法可以使設(shè)置窗口關(guān)閉后刷新Portlet內(nèi)容:n 參考代碼:(示例Portlet運(yùn)行期業(yè)務(wù)設(shè)置頁面)/html/portlet/example/demoPortletInsSetting.jsp方法1:設(shè)置返回值為1window.returnValue = 1;方法2:使用框架JS接口/ true表示設(shè)置窗口關(guān)閉時,自動刷新Portlet內(nèi)容,反之為不刷新kingdee.portal.portlet.refreshOnSettingsClosed(true);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/36常用方法及接口n Portlet業(yè)務(wù)設(shè)置

36、頁面JS接口n 在Portlet運(yùn)行期的業(yè)務(wù)設(shè)置頁面中調(diào)用Portlet內(nèi)容頁面的JS函數(shù)n 只要獲取父窗口的window對象即可,示例代碼:n 參考代碼:(示例Portlet運(yùn)行期業(yè)務(wù)設(shè)置頁面)n /html/portlet/example/demoPortletInsSetting.jsp/ 方法一:獲取傳遞進(jìn)來的窗口參數(shù),該參數(shù)為父窗口的js對象windowvar parentWindow = window.dialogArguments;/ 方法二:使用框架預(yù)定義函數(shù)var parentWindow = kingdee.portal.portlet.getPortalWinObj();

37、/ 調(diào)用父窗口中的js函數(shù)(該函數(shù)在Portlet內(nèi)容頁面中定義)parentWindow.demoportlet.test();返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/37常用方法及接口n PortletUtil接口n 可以在Portlet內(nèi)容頁面以及業(yè)務(wù)設(shè)置頁面上獲取Portlet的相關(guān)信息, 包括Portlet的個性化信息(如果存在),參考“EAS門戶Portlet制作指南”的“附錄2 PortletUtil API”n 包括Portlet定義和實(shí)例信息,如Portlet在配置文件中的定義ID,在數(shù)據(jù)庫中的定義ID、實(shí)例ID以及Portlet的個性化信息(自定義標(biāo)

38、題、高度、顏色配置等)等/獲取Portlet自定義顯示名稱:String customizedName = PortletUtil.getCustomizedName(request);/獲取Portlet實(shí)例高度:int insHeight = PortletUtil.getInsHeight(request);/高度值單位為像素,如果高度值為0,則表示實(shí)例的高度自適應(yīng)/代碼參考:html/portlet/example/demoPortlet.jsp返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/38常用方法及接口n Ajax JS接口Buffalo Ajaxn 框架定義了

39、四個Buffalo對象buffaloAsync:異步方式buffaloSync:同步方式buffalo:異步方式(已廢棄,不建議使用)buffalo1:同步方式(已廢棄,不建議使用)n 在Portlet內(nèi)容頁面中使用Buffalo時請直接使用前兩個對象,不必重新創(chuàng)建Buffalo對象n 注意,如果需要創(chuàng)建新的Buffalo對象,請避免使用buffaloAsync、buffaloSync、buffalo、buffalo1這4個變量命名,否則將會覆蓋這些框架提供的Buffalo對象。具體使用方法,請參考“EAS門戶Portlet制作指南”中的“附錄3 Ajax之Buffalo開發(fā)指南”示例:buf

40、faloAsync.remoteCall(messageService.getMsgCount, true, function(reply) var arr = reply.getResult(); .返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/39常用方法及接口n 打開客戶端GUI界面JS接口n invokeFunction(uiClass, uiClassParam, uiOprt, openMethod);/通用方法n createModelUI(uiClass);/以模態(tài)窗口打開n createNewWinUI(uiClass);/新開窗口n createNewTa

41、bUI(uiClass);/新開頁簽n openEasMainMenu();/打開主菜單n 其中uiOprt可設(shè)置為字符串: ADDNEW、VIEW、EDITn ADDNEW:新增;VIEW:查看;EDIT:編輯 n openMethod可設(shè)置為數(shù)字:50、80、及其他數(shù)字n 50:模態(tài)窗口;80:新開窗口;其他值:新開頁簽返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/40常用方法及接口n 打開客戶端GUI界面JS接口n 單據(jù)查看GUI界面接口:viewBill(billId);n 參數(shù)為單據(jù)ID(單據(jù)的UUID,非單據(jù)編號),門戶頁面在不同幀下調(diào)用方式略有不用,門戶各頁簽P

42、ortlet(比如我的日歷,我的工作臺等)標(biāo)準(zhǔn)調(diào)用方式為直接調(diào)用: n 而各自頁簽加入了幀(iframe)的情況下(如流程中心加入了newMessageFrame),需要如下調(diào)用: n 其他多層幀的情況以此類推,需要通過parent或者top等方式獲取上層的JS函數(shù)來調(diào)用n 更多關(guān)于打開GUI界面的函數(shù)請參考以下文件:server/deploy/eas.ear/cp_web.war/common/js/easHandler.jsviewBill(63fYLq2CTOCwsBgFdet+6Qneydw=);parent.viewBill(63fYLq2CTOCwsBgFdet+6Qneydw=)

43、; 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/41常用方法及接口n 拖動Portlet后Portlet內(nèi)容自動刷新 JS接口n 場景:常用于Portlet寬度需要自適應(yīng)的場景,如“通知Portlet”和“待辦事項(xiàng)Portlet”,由于這兩個Portlet的寬度由JS動態(tài)計算而得,所以當(dāng)他們移動到其他不同寬度的區(qū)域時,需要重新計算寬度,這時候就需要刷新Portlet內(nèi)容以觸發(fā)寬度的重新計算n 在Portlet內(nèi)容頁面中實(shí)現(xiàn)以下函數(shù),并返回true值:n 其中,是用于避免JS變量或函數(shù)命名沖突的標(biāo)識,該標(biāo)識必須加上,否則框架無法判斷需要刷新哪個Portlet。參數(shù)toWidt

44、h為目標(biāo)區(qū)域的寬度值,由框架傳遞,在該函數(shù)內(nèi)可用該參數(shù)值進(jìn)行一些必要的業(yè)務(wù)處理。不實(shí)現(xiàn)該函數(shù)或者函數(shù)返回true以外的值,則拖動Portlet后,Portlet內(nèi)容不刷新n 關(guān)于JS腳本變量和函數(shù)命名約束以及該標(biāo)識如何獲得等問題,后面再介紹function afterPortletDrop(toWidth) return true; 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/42常用方法及接口n 添加CSS樣式文件到門戶的head區(qū)域JS方法mon.addStyleSheet(cssFilePath);其中cssFilePath為CSS文件的路徑,用法示例:n 注,并不一

45、定要使用WebContextUtil.render方法來獲得CSS文件的路徑,可以直接如下使用:n 但是,使用WebContextUtil.render方法獲取文件可獲得壓縮特性,建議使用該方法mon.addStyleSheet();mon.addStyleSheet(/html/portlet/example/demoPortlet.css);返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/43常用方法及接口n 其他JS接口n Portal路徑:mon.portalContextPath;其值如::6888/easportaln Porta

46、l當(dāng)前色彩方案皮膚路徑:mon.portalSkinPath;其值如::6888/easportal/skin/01n 最大化Pmon.maxizePortlet(windowTitle, servletUrl, params);其中,windowTitile為最大化Portlet時,窗口的標(biāo)題,servletUrl為最大化Portlet所使用的url地址,params為需要傳遞的參數(shù)返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/44提綱n Portlet介紹n 基本開發(fā)流程n 高級用法n 常用方法及接口n 開發(fā)規(guī)范與約束n 常見問題n 其

47、他n 沙盤演練返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/45開發(fā)規(guī)范與約束n 業(yè)務(wù)JSP代碼文件放置規(guī)范n 二次開發(fā)的業(yè)務(wù)JSP代碼受保護(hù):需要放到serverdeployeas.earcp_web.warhtmlcustom目錄下非受保護(hù):需要放到serverdeployeas.earcp_web.warcustom目錄下n EAS標(biāo)準(zhǔn)產(chǎn)品的業(yè)務(wù)JSP代碼受保護(hù):需在serverdeployeas.earcp_web.warhtmlportlet目錄下建立對應(yīng)的業(yè)務(wù)系統(tǒng)子目錄,并放置對應(yīng)的業(yè)務(wù)JSP代碼非受保護(hù):在serverdeployeas.earcp_web.wa

48、rbiz目錄下建立對應(yīng)子目錄,并放置對應(yīng)業(yè)務(wù)JSP代碼n 受保護(hù)和非受保護(hù)區(qū)別受保護(hù)的JSP頁面必須要通過EAS Portal登陸后才能訪問,非受保護(hù)是指不需要EAS Portal登陸就可以訪問 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/46開發(fā)規(guī)范與約束n JS代碼文件放置規(guī)范n JS文件放置到以下目錄:server/deploy/eas.ear/cp_web.war/common/js/n 各業(yè)務(wù)可自行在JS目錄下建立子文件夾,以區(qū)分框架和其他部門的JS代碼。該目錄下(包括子目錄)的所有JS文件在構(gòu)建時都會自動進(jìn)行壓縮,將JS文件放置在其他目錄將不會獲得壓縮特性返回

49、版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/47開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,JS腳本變量和函數(shù)命名約束(重要)n 在一個HTML文檔內(nèi),JavaScript全局變量和函數(shù)命名必須唯一,否則會被后定義的覆蓋。由于門戶中,不同頁簽,不同Portlet的內(nèi)容最終將輸出到一個HTML文檔中,為了避免不同的Portlet內(nèi)定義相同名稱的JS變量或者在不同的頁簽內(nèi)包含相同的Portlet定義,必須保證Portlet之間全局JS變量名和函數(shù)名唯一n 提示:只有Portlet內(nèi)容頁面(HTML片段)需要考慮命名問題,保證全局變量和函數(shù)命名唯一,其他獨(dú)立的頁面(包含完整的HTML標(biāo)

50、簽的頁面,如使用iframe方式嵌入的頁面、Portlet業(yè)務(wù)設(shè)置頁面等)則不需要考慮該問題n 最佳實(shí)踐:盡量少使用全局變量。大量地使用全局變量將增加變量命名沖突的幾率,應(yīng)該謹(jǐn)慎使用全局變量。關(guān)于如何減少JS全局變量和函數(shù)數(shù)量的方法請見“Portlet制作指南”的2.5.4節(jié)n 補(bǔ)充知識:在JS函數(shù)內(nèi),使用var關(guān)鍵字定義變量,變量的作用域?yàn)榫植孔饔糜?,如果不使用var關(guān)鍵字,則為全局作用域。JS函數(shù)內(nèi)的局部變量定義時都應(yīng)該加上var關(guān)鍵字返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/48開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,JS腳本變量和函數(shù)命名約束(重要)n 可使用

51、以下兩種接口之一,均可獲得與當(dāng)前Portlet實(shí)例相關(guān)的全局唯一標(biāo)識(“指紋”信息)。為Portlet內(nèi)容頁面中JS腳本的每個全局變量和函數(shù)加上該標(biāo)識,則可保證該P(yáng)ortlet實(shí)例的JS全局變量和函數(shù)在EAS門戶中全局唯一,避免不同Portlet之間以及不同頁簽相同Portlet不同實(shí)例之間的JS變量和函數(shù)命名沖突。接口接口1:使用com.kingdee.eas.portal.web.util.PortletUtil示例:/ fp is short for fingerprintString fp = PortletUtil.getFingerprint(request);接口接口2:使用co

52、m.kingdee.eas.portal.web.util.PortletIndexGenerator示例:/ fp is short for fingerprintString fp = PortletIndexGenerator.nextPortletIndex(request); 返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/49開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,JS腳本變量和函數(shù)命名約束(重要)n 兩種接口的區(qū)別:接口1既可以在Portlet內(nèi)容頁面中使用,也可以在Portlet業(yè)務(wù)設(shè)置頁面中使用;而接口2只能在Portlet內(nèi)容頁面中使用獲得“指紋”信息后

53、(示例中為Java變量fp),為每個全局變量和函數(shù)加上該標(biāo)識,代碼示例如下:var a = 1;var b = 2;function fnOne() function fnTwo() a href=”#” onclick=”fnTwo()”My Link上面的例子中,一共定義了4個全局變量(包括函數(shù)),通常情況下,應(yīng)盡量控制全局變量的數(shù)量返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/50開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,CSS樣式命名規(guī)范(重要)n 和JS腳本變量和函數(shù)命名需要全局唯一一樣,CSS中的class和id命名也需要考慮到全局影響的情況。n 提示:只有Po

54、rtlet內(nèi)容頁面(JSP片段)需要考慮命名問題,保證class和id命名唯一,其他獨(dú)立的頁面(包含完整的HTML標(biāo)簽的頁面,如使用iframe方式嵌入的頁面、Portlet業(yè)務(wù)設(shè)置頁面等)則不需要考慮該問題n 頁面中的元素id屬性值需要保證全局唯一,需要進(jìn)行類似JS腳本中變量命名約束的操作,如:div id=test-div-n 如果id值不添加唯一標(biāo)識,則在頁面中存在相同Portlet的多個實(shí)例(可能位于不同頁簽內(nèi))時,頁面中將出現(xiàn)多個id相同的元素,這將對樣式或腳本產(chǎn)生影響。返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/51開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,C

55、SS樣式命名規(guī)范(重要)n 在Portlet內(nèi)容頁面中書寫CSS樣式有兩種方式:n 在標(biāo)簽中加上style屬性n 這種方法最直接,而且由于優(yōu)先級最高,可以避免Portlet內(nèi)容的樣式受到Portal全局樣式的影響,但維護(hù)起來比較麻煩n 引入外部CSS文件n 這種方法可以對Portlet內(nèi)容的樣式進(jìn)行統(tǒng)一管理,方便維護(hù)n 使用JS腳本引入外部CSS文件的方法如下:mon.addStyleSheet();n 紅色部分替換成實(shí)際的CSS文件地址。前面已有介紹返回 版權(quán)所有 1993-2009 金蝶軟件(中國)有限公司P/52開發(fā)規(guī)范與約束n Portlet內(nèi)容頁面中,CSS樣式命名規(guī)范(重要)n 注意:n 不要在Portlet內(nèi)容頁面中直接使用標(biāo)簽引入樣式,框架目前不支持這種方式n 可以使用標(biāo)簽來書寫樣式,但并不推薦,因?yàn)轫撁嬷写嬖谙嗤琍ortlet的多個實(shí)例時,這些樣式將被包含多次n 使用函數(shù)mon.addStyleSheet添加樣式文件時,即時頁面中存在相同Portlet的多個實(shí)例,樣式文件也只會在頁面頭部加載一次n 使用引入外部CSS文件的方式時,CSS樣式的命名需遵循以下規(guī)范:kpp-xxx-yyykpp前綴代表Kingdee Portal Portletxxx為模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論