(01)-OAF 技術細節_第1頁
(01)-OAF 技術細節_第2頁
(01)-OAF 技術細節_第3頁
(01)-OAF 技術細節_第4頁
(01)-OAF 技術細節_第5頁
已閱讀5頁,還剩25頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Oracle Seeker, Oracle探索者· Home · Activity · Members · Groups · Forums · Blogs Top of FormBottom of FormYou are browsing the archive for Oracle. Previous EntriesNext Entries by aronezhangOAF中如何更改query的默認查詢12月 20, 2008 in Oracle EBS二次開發 by aronezhang  OA Framewo

2、rk使用Query Region來創建查詢,可以創建簡單的查詢、高級查詢和保存用戶個性化的查詢。query Region有三種構建方式:   1,resultsBasedSearch OA Framework根據查詢結果表格(或HGrid)中定義的可查詢的Item自動生成查詢面板。OA Framework在用戶選擇查詢按鈕后自動根據用戶輸入的值,生成Where子句,并執行查詢。   2,autoCustomizationCriteria OA Framework根據開發者定義的簡單查詢和高級查詢Region生成查詢面板。OA Framework在用戶選擇查詢按鈕后,根據用戶

3、輸入的值,生成Where子句,并執行查詢。 利用這種模式可以更改查詢項的類型,比如使用LOV、Poplist等,還可以加入結果表(或HGrid)中不存在的查詢項目。   3,None OA Framework根據開發者定義的簡單查詢和高級查詢Region生成查詢面板。開發人員需要自己實現視圖對象的查詢邏輯。這種方式一般用于無法使用query Region所提供的功能的情況。   本文主要介紹在autoCustomizationCriteria模式下如何控制query的查詢。比如對于日期的查詢一般用區間范圍進行查詢,而默認情況下,OA Framework生成的Where子句做

4、相等比較。 1. 為query Region創建簡單查詢面板,創建各個查詢Item,包括日期從和日期至。 2. 為各個查詢Item創建SearchMapping,除了日期從和日期至兩個查詢項。此時除了日期范圍,其余項目的查詢都已經可用。 3. 在query Region所在的Controller類processFormRequest()方法中加入以下代碼 ?Copy to clipboardView Code JAVA 123456789101112OAQueryBean querybean = (OAQueryBean)webBean.findIndexedChildRecursive(&q

5、uot;QueryRN");/ 判斷用戶是否選擇了查詢按鈕if (pageContext.getParameter(querybean.getGoButtonName() != null) String dateFrom = pageContext.getParameter("SearchDateFrom"); String dateTo = pageContext.getParameter("SearchDateTo");  OAApplicationModule am = pageContext.getApplicationMod

6、ule(webBean); Serializable params = dateFrom, dateTo;  am.invokeMethod("bindDateRangeWhereClause", params);4. 應用程序模塊中方法如下: ?Copy to clipboardView Code JAVA 123456789101112131415161718192021222324252627282930public void bindDateRangeWhereClause(String dateFrom, String dateTo) OAViewObj

7、ect vo = getXxxVO1();  String clause = null; String joinStr = "" if (vo.getWhereClause() != null) joinStr = "AND"   if (dateFrom != null) && (!("".equals(dateFrom.trim() clause = " RECEIPT_DATE >= :" whereClause.append(+bindCou

8、nt); parameters.addElement(Date.valueOf(dateFrom); clauseCount+;/ 條件:接收日期至if (dateTo != null) && (!("".equals(dateTo.trim() if (clauseCount > 0) whereClause.append(" AND "); whereClause.append(" RECEIPT_DATE <= :"); whereClause.append(+bind

9、Count); parameters.addElement(Date.valueOf(dateTo); clauseCount+;  Tags: OA Framework, Oracle, Oracle EBSNo Comments »by aronezhangOAF中如何新開一個窗口12月 20, 2008 in Oracle EBS二次開發 by aronezhang  OAF頁面要新開窗口,可以在帶有導航功能的Item,如link和button(非提交按鈕),指定Target Frame屬性為”_blank“,就可以新開窗口打開Desti

10、nation URI屬性指定的路徑。 如果用戶希望新開的窗口能隱藏地址欄、工具欄、菜單欄或者想控制窗口大小,那么在上面所說的Destination URI屬性中使用 javascript:window.open(OA.jsp?page=XXX,'<windowName>, <params>)   注意:在對按鈕的Destination URI屬性使用Javascript的新開窗口時,需要在首選項中設置可訪問功能為標準可訪問性,否則Javascript將無法執行。 雖然以上的方法能夠實現新開窗口,但還有很多的限制,比如如果在新開窗口前需要執行某些特定操作

11、、或者新開窗口的URL是需要通過執行某些邏輯才能得到的,那么上面的方法就無法實現了。 在OAF中,Oracle不建議在OAF中使用Javascript,但是OAF還是提供了API用于執行Javascript:?Copy to clipboardView Code JAVA 1234OAPageContext.putJavascriptFunction(String name, String function)OAPageContext.removeJavascriptFunction(String name)OAPageContext.putJavascriptLibrary(String n

12、ame, String library)OAPageContext.removeJavascriptLibrary(String name)    假設用戶提交了請求(點擊鏈接、提交按鈕等等觸發事件的情況)需要新開窗口,在processFormRequest方法中,按一下步驟進行: 1、首先執行pageContext.removeJavascripFunction() 這是非常重要的一點,因為一旦Javascript注冊到OAPageContext之后,就一直存在于OAPageContext中,這樣會導致每次頁面的刷新時都會執行Javascript。   2、在特

13、定的事件中,執行程序邏輯,注冊Javascript到OAPageContext對象中?Copy to clipboardView Code JAVA 123456789if (pageContext.getParameter("Open") != null) / 執行其它處理 .  / 定義Javascript String jScript = "window.open('OA.jsp?page=XXX')" pageContext.putJavascriptFunction("FunctionName",

14、jScript)  注意:在調用putJavascriptFunction()時,必須指定Name參數,只有這樣才可以調用removeJavascriptFunction()。      Tags: OA Framework, Oracle, Oracle EBS2 Comments »by aronezhangOAF中判斷當前事務存在未提交的更改12月 20, 2008 in Oracle EBS二次開發 by aronezhang  開發需求 在OAF的開發中,可能有這樣的需求,在選擇保存按鈕時,如果存在改動的數據,則提

15、交事務,保存到數據庫中; 如果不存在改動的數據,就提示用戶當前沒有數據可更改。   解決思路 判斷頁面中所使用的視圖對象是否發生過改動   方法一、調用OADBTransaction.isDirty()方法 此方法用于判斷當前事務中,視圖對象是否發生過變更。但是此方法只對基于實體對象的視圖對象有效,如果存在基于查詢的視圖對象,需要調用PL/SQL來改變數據庫的就不行了。   方法二、調用OAViewObject.isDirty()方法 此方法可以判斷單個視圖對象是否發生過變更,無論是基于實體對象的視圖對象還是基于查詢的視圖對象。   方法三、調用實體對象

16、的getPostState()方法來判斷 有時使用OAViewObject.isDirty()也有一定的限制。如果重新執行了查詢,則視圖對象的Dirty標志被重置,此時不可以使用該方法來判斷是否存在變更,而需要使用下面所說的方法或第四種方法。 調用ViewRowImpl.getEntity(0).getPostState()可以判斷視圖行對應的實體對象是否發生過變更,這樣就可以不顧是否重新查詢導致Dirty標志重置。   方法四、使用數據緩存 進入頁面前把數據緩存到Transaction中,在保存按鈕事件時,比較Transaction保存的實體對象行的每個屬性是否和當前視圖對象行屬性

17、一致。 使用方法四的理由是,如果存在insertRow(),然后又刪除了新建的行row.remove(),此時系統就會認為視圖對象存在未保存的變更。而使用第四種方法可以避免這種情況(一般情況下,應該也能說服客戶接受這種情況)。 另外如果是基于查詢建立的視圖對象(使用PL/SQL保存到數據庫中),并且存在臨時屬性的變更的情況(調用過row.setAttribute(),即使屬性是不需要保存到數據庫),就只能使用第四種方法。     Tags: OA Framework, Oracle, Oracle EBSNo Comments »by aronezhangOAF中

18、實現動態LOV12月 16, 2008 in Oracle EBS二次開發 by aronezhang EBS 10.5.10 介紹 Oracle標準頁面上也有使用動態LOV的情況,主要是子在應用Key Flex。代碼可參考oracle.apps.ap.oie.framework.kff.webui.KffRegionCO。但是Oracle標準頁面上的動態LOV存在Bug,不能在彈出的LOV查詢頁面中多次輸入條件查詢,原因在下面會提及。不知在R12中,這個Bug是否已經修正。本文所介紹的方法在11.5.10版本下運行正常,而且沒有標準動態LOV的Bug,并實際運用

19、在項目上。 要在OAF中動態創建LOV的功能是很復雜的一件事,本文所講述的動態LOV創建場合用于事先不能知道頁面上會有多少個LOV,而且LOV所使用的SQL查詢,也是由用戶交互而獲得的。 思路如下:首先創建一個通用的LOV Region,建立一個查詢的視圖對象(Select From Dual),這個LOV并不能查出任何內容,在運行時動態更改視圖對象的定義。   1,創建LOV   首先在使用LOV的頁面的控制器的processRequest方法中創建一個LOV?Copy to clipboardView Code JAVA 1234567891011OAMess

20、ageLovInputBean lovItem = (OAMessageLovInputBean)createWebBean(pageContext,LOV_TEXT,null );region.addIndexedChild(lovItem); lovItem.setAttributeValue(REGION_CODE, "/xxx/oracle/apps/cux/lov/webui"); lovItem.setAttributeValue(REGION_APPLICATION_ID,new Integer(pageContext.getResponsibili

21、tyApplicationId(); addLovItem.setLovRegion(pageContext,"/xxx/oracle/apps/cux/lov/webui/CommonLovRN");lovItem.setUnvalidated(false);lovItem.addLovRelations(pageContext,lovItem.getID(),LOV_RESULT,LOV_REQUIRED_NO);lovItem.setPrompt();  需要注意的是動態建立LOV時,不要使用addLovRelations去增加LOV_CRITER

22、IA(criteria item),如果設置了criteria item, 那么LOV就會用原始定義的SQL去拼頁面上的值組成SQL查詢,而不會使用我們設置的動態SQL去查詢。 (順便提一下,對于不是動態創建的LOV,而需要動態修改LOV對應的視圖對象定義的情況,因為LOV基本的對應項必須設置成criteria item, 為了防止LOV的自動查詢,可以設置lovMAP的Programmatic Query為True,這樣就不會把頁面上的值自動加到WHERE子句后查詢。)   2,修改視圖對象的查詢 在LOV的控制器類的processRequest中動態修改視圖對

23、象的查詢,因為我們屏蔽了LOV的自動查詢,所以在processRequest中還必須處理自動查詢的情況 (自動查詢的情況是因為用戶輸入了值或之前已經選擇了,重新打開LOV),這里不給出具體的代碼。在LOV控制器的processFormRequest方法中必須做以下處理, 因為盡管我們更改了視圖對象的定義,但是當點查詢按鈕時,LOV還是按最原始定義的SQL綁定條件來查詢,所以這里的操作是不讓LOV執行查詢,而進入processRequest重新更改視圖的定義:?Copy to clipboardView Code JAVA 1234567891011121314if ("lovFilt

24、er".equals(pageContext.getParameter("event") try String strRedirectUrl = pageContext.getRequestUrl(); int intIndex = strRedirectUrl.indexOf("&amp;"); strRedirectUrl = strRedirectUrl.substring(0, intIndex + 1) + "searchText=" + URLEncoder.encode(pageContext.getP

25、arameter("searchText") + "&amp;" + "FormRequest=Y&amp;" + strRedirectUrl.substring(intIndex + 1);  pageContext.sendRedirect(strRedirectUrl); catch (Exception expt)         Tags: OA Framework, Oracle, Oracle EBSNo Comments »by aronez

26、hangOAF個性化開發實例12月 13, 2008 in Oracle EBS二次開發 by aronezhang EBS   需求下圖是Oracle標準頁面,有一個簡單的開發需求,當Expense Template等于“管理費用”時,Approver的LOV輸入框默認為“XXX”,并且LOV只讀,不能進行選擇。 分析 這個看似極其簡單的開發,其背后所隱藏的技術知識卻是不那么簡單的。 當Expense Template選擇為“管理費用”時,Approver LOV輸入框只讀,這里牽涉到的開發基本為給Expense Templ

27、ate加上FireAction的功能, 然后在Expense Template的Value Change事件中去修改Approver LOV的只讀屬性。 因為開發規范是不允許直接修改Oracle的代碼,所以此開發將通過集成標準的控制器類,在客戶化的控制器類中實現添加Expense Template的FireAction功能,和修改Approver LOV只讀屬性, 然后通過個性化,將控制器類替換成客戶化的控制器類。    技術要點 1,修改Approver LOV的只讀屬性剛剛進行OAF開發的開發人員可能覺得這是很簡單的事,只要在客戶化的控制器類的pro

28、cessFormRequest()方法中調用以下代碼:?Copy to clipboardView Code JAVA 12OAMessageLovInputBean lovBean = (OAMessageLovInputBean)webBean.findChildRecursive("Approver");lovBean.setReadOnly(true);就可以實現了,如果這樣做開發,那么就錯了,在運行時會拋出異常:?Copy to clipboardView Code TEXT 123The OA passivation framework coding stand

29、ard has been violated. Web bean properties cannot be modified in the controller processFormData or processFormRequest method. Web bean properties should be modified in the processRequest method only.  (這里有兩個方法是例外,setValue()和setText(),因為Value并不影響控件樹)為什么把LOV設為只讀會出錯呢?這是因為OAF在運行時,表現為一棵控件樹。 當進入頁面時,控

30、件樹被初始化創建,而當用戶事件觸發POST請求時,控件樹并不會被重新生成(提高性能),要改變控件的屬性只有兩個辦法,一個是重新生成控件樹,二是使用PPR。   方法一:重構控件樹 重構控件樹就意味著在processFormRequest()方法處理事件時,需要Forward到本頁,并通過參數控制來設置Approver LOV只讀,這樣會刷新整個頁面,而且對編碼也帶來困難。 方法二:使用PPR 實現方法是利用OAF數據綁定機制,將Approver LOV的ReadOnly屬性綁定到視圖對象的屬性,通過改變視圖對象屬性的值來控制Approver LOV的只讀。 這里又引出第2個技術要點:

31、  2,動態創建視圖對象 創建視圖對象需要首先創建OAViewDef對象,然后利用OAViewDef對象來創建視圖對象。 這里談一下Oracle的一個開發規范,OAViewDef接口在oracle.apps.fnd.framework.server包下,按照Oracle的規范,任何webui下的類不允許import任何server下的類。我是一個規范的嚴格遵守者,這樣就會使開發變得更復雜。 要在server包下引用OAViewDef接口,就必須創建應用程序模塊,將動態創建視圖對象的代碼移到應用程序模塊中實現。在客戶化控制器類中,動態創建應用程序模塊,然后調用應用程序模塊的方

32、法。   實現步驟   假設開發人員對Oracle標準的頁面結構都已經非常了解了,包括需要集成哪個標準的控制器,頁面上所使用的視圖對象。 1、創建客戶化應用程序模塊cux.oracle.apps.ap.oie.entry.server.CuxPVOAM 2、創建視圖對象cux.oracle.apps.ap.oie.entry.server.CuxPVO,視圖對象中只有一個臨時屬性ReadOnlyFlag,類型為Boolean(此步可選) 3、創建客戶化控制器類,繼承標準的控制器類 4、在CuxPVOAMImpl.java中創建兩個方法:?Copy to clipboardV

33、iew Code JAVA 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import oracle.apps.fnd.framework.OAViewObject;import oracle.apps.fnd.framework.server.OAViewDefImpl;import oracle.jbo.AttributeDef;import oracle.jbo.Row; public void initPVO() OAApplicationMod

34、uleImpl rootAM = (OAApplicationModuleImpl)getRootApplicationModule();  / 創建視圖對象 OAViewDefImpl viewDef = (OAViewDefImpl viewDef)getOADBTransaction().createViewDef(); viewDef.setFullName("CuxPVODef"); viewDef.setViewObjectClass("oracle.apps.fnd.framework.server.OAViewObjectImpl &qu

35、ot;); viewDef.addTransientAttrDef("ReadOnlyFlag", "java.lang.Boolean", null, false, AttributeDef.UPDATEABLE);  OAViewObject pvo = (OAViewObject)rootAM.createViewObject("CuxViewPVO", viewDef); / 初始化PVO if (!pvo.isPreparedForExecution() pvo.executeQuery(); pvo.setMax

36、FetchSize(1); Row row = pvo.createRow(); pvo.insertRow(row); row.setAttribute("ReadOnlyFlag", Boolean.FALSE);   public void handleTemplateChange() OAApplicationModuleImpl rootAM = (OAApplicationModuleImpl)getRootApplicationModule(); OAViewObject vo = (OAViewObject)rootAM.findViewObjec

37、t("XxxVO1"); /標準的VO OAViewObject pvo = (OAViewObject)rootAM.findViewObject("CuxViewPVO");  if () pvo.first().setAttribute("ReadOnlyFlag", Boolean.TRUE); vo.first().setAttribute("Xxx", ); / 設置Approver LOV綁定的視圖對象屬性值 else pvo.first().setAttribute("ReadO

38、nlyFlag", Boolean.FALSE);   5、在客戶化控制器中添加相應代碼 processRequest代碼:?Copy to clipboardView Code JAVA 12345678910111213141516171819202122232425public void processRequest(OAPageContext pageContext, OAWebBean webBean) cessRequest(pageContext, webBean);  / 啟用Expense Template的FireAction

39、功能OAMessageChoiceBean choiceBean = (OAMessageChoiceBean)webBean.findChildRecursive("ExpenseTemplate"); choiceBean.setFireActionForSubmit("change", null, null, true);  / 創建客戶化應用程序模塊 OAApplicationModule rootAM = pageContext.getRootApplicationModule(); OAApplicationModule pvoAM

40、 = (OAApplicationModule)rootAM.findApplicationModule("CuxPVOAM"); if(pvoAM = null) rootAM.createApplicationModule("CuxPVOAM","cux.oracle.apps.ap.oie.entry.server.CuxPVOAM"); pvoAM = HssCustomizeHelper.getNestedAMInstance(rootAM, "CuxPVOAM"); pvoAM.invokeMethod

41、("initPVO");  / 將ReadOnly屬性綁定到視圖對象屬性OAMessageLovBean approverLov = (OAMessageChoiceBean)webBean.findChildRecursive("Approver"); approverLov.setAttributeValue(READ_ONLY_ATTR, new OADataBoundValueViewObject(approverLov,"ReadOnlyFlag","CuxPVO");將開發測試后的代碼發布到服

42、務器。(測試可以在本地,將頁面上的控制器類替換成客戶化的控制器來進行)   processFormRequest代碼: ?Copy to clipboardView Code JAVA 12345678910111213141516171819public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) cessFormRequest(pageContext, webBean);  OAApplicationModule rootAM = pageCont

43、ext.getRootApplicationModule(); OAApplicationModule pvoAM = (OAApplicationModule)rootAM.findApplicationModule("CuxPVOAM"); if(pvoAM = null) rootAM.createApplicationModule( "CuxPVOAM","cux.oracle.apps.ap.oie.entry.server.CuxPVOAM"); pvoAM = HssCustomizeHelper.getNestedAM

44、Instance(rootAM, "CuxPVOAM");   if ("change".equals(pageContext.getParameter(EVENT_PARAM) pvoAM.invokeMethod("handleTemplateChange");  HssCustomizeHelper.getNestedAMInstance()的代碼如下: ?Copy to clipboardView Code JAVA 12345678910111213141516171819202122public sta

45、tic OAApplicationModule getNestedAMInstance(OAApplicationModule parentAM, String nestedAMName) OAApplicationModule am = null;  String amNames = parentAM.getApplicationModuleNames(); for (int i=0; i&lt; amNames.length; i+) if (amNamesi.endsWith(nestedAMName) return (OAApplicationModule)paren

46、tAM.findApplicationModule(amNamesi); else am = getNestedAMInstance(OAApplicationModule)parentAM.findApplicationModule(amNamesi),nestedAMName); if (am != null) return am; return am;7、重啟Apache 8、進入頁面,設置個性化,替換標準的控制器類為客戶化控制器類。   重新整理后的Oracle OAF學習筆記?4.應用構建基礎之實現視圖1樓   2008-02-01頁

47、面創建頁面的基本步驟是創建pages,region,items。Page LayoutRegion的關鍵屬性創建一個pageLayout區域時,應該特別注意下面的屬性:· AutoFooter將這個設置為true以保證在頁面上有應用的保密和版權說明鏈接。 · Help Target如果你需要為當前頁顯示幫助按鈕,必須在這里指定幫助文件(通常是文件名)。 · AM Definition用于設置頁面的根應用模塊。必須使用類的全名,比如:oracle.apps.fnd.framework.toolbox.tutorial.server.SearchAM · F

48、unction Name總是設置頁面的保密函數 · Window Title瀏覽器窗口標題 · Title顯示在page header中的文本。 · Form在pageLayout中設置為true,這通常是默認設置,不要在其子對象中添加親折form。OA Framework在同一個頁面中只支持一個form。 · pageLayout Components注意OA Framework頁面基礎一文中提到的,頁面包含了特殊的被命名的組件,其中一個就是標識圖案。為了在頁面關聯標識圖案,選擇pageLayout區域或pageLayoutComponents節點,然

49、后右鍵菜單中選擇創建image item,并把它的Image URI屬性設置為<imageName>.gif。Item 的關鍵屬性每個item類型都有自己的一套屬性,不可能每個都介紹,這里介紹一些通常的公共屬性。· Extends說明新的item繼承于一個已存在的item。 · Attribute Set命名了的item的屬性集合。 · Destination URI對于支持頁面導航的對象,這個是導航的目標,比如:OA.jsp?page=/oracle/apps/fnd/framework/toolbox/tutorial/webui/PoDetail

50、sPG&retainAM=Y。 · (Client Action)Action Type標明item是否可以提交表單,或者產生局部頁面渲染事件(partialpage rendering (PPR))。 · CSS Class指定item使用的樣式表。(多數item,UIX將把這個值按BLAF UI指導方案中的值設置)。 · Rendered指明相應的對象是否包含了webbean層級結構,需要UIX將HTML發送給瀏覽器渲染。對于多數item來說,這用于指定一個item是否顯示,但有些item是不會實際顯示出來的(比如隱藏域),實際上是指定對象是否存在于頁

51、面上。 · View Instance讓item綁定到下層的視圖對象上以便讀寫數據,這里標明將item綁定到哪個視圖對象實例(包含在一個應用模塊中的)。 · View Attribute將視圖對象實例的屬性與item綁定。 · Admin Personalization決定是否允許系統管理員進行個性化定制。 · User Personalization決定是否允許用戶個性化定制。 · Initial Value定義item的缺省值。Simplest Possible Expression Language (SPEL)對于所選的屬性,OA Fr

52、amework支持使用SPEL表達式快速的將屬性綁定到下層數據源提供的屬性值上。比如,你可以將按鈕的Rendered屬性綁定到一個視圖對象的屬性上以檢查是否需要顯示或隱藏。屬性中使用的SPEL語法如下:$oa.<ViewInstanceName>.<ViewAttributeName>技巧: SPEL是一個業界標準的表達式語言,它包含于JSTL中。組件重用OA Component開發環境所宣稱的一項關鍵優勢就是可以重用通用的page,region,item定義。Regions共享可以按下面的步驟創建共享的region。注意: 共享region可以包含一個或多個子regi

53、on。· 頂級共享region必須保存在它的XML文件中。 · 可以將共享region設置為接收其它region的值。值可能通過“狀態管理”一文中描述的方式通過請求傳遞,或者使用頁面事務緩存的值。 · 共享region必須處理失效的情況。比如,如果沒有合適的參數傳遞到region,共享region應該接收或者拋出一個有意義的異常。 · 如果region的scope被設置為Public: o 頂級region必須有自己的應用模塊。應用模塊應該包含與這個region相關的視圖對象。 o 頂級region必須有自己的控制器。如果需要可以為子region添加控制

54、器。· 共享region必須添加完整的注釋文檔。特殊情況: LOVLOV與共享region的區別:· LOV不需要關聯控制器 · 當在頁面上使用LOV時,并不從它繼承,而是將頁面字段的External LOV屬性配置為頁面與LOV的數據交換。Pages共享page實際上只是頂級region為共享region的pageLayout組件。共享page與共享region的創建過程類似。· 如果要重用一個單獨的page或page flow,只要簡單的創建一個新的菜單功能并將它指向主頁面。 · 如果需要將頁面插入到另一個使用了不同根應用模塊的page f

55、low,則必須創建一個新的page,并繼承共享的page的pageLayout region下的內容。記住正確設置將新頁面的根應用模塊。Items共享可以從任何區域的單個item繼承,盡管我們推薦將準備重用的item放到一個重用region中。共享容器region將確保不會任意的修改item而不明確這樣修改將影響使用這個item的頁面。通過設置item的Extends屬性設置共享。屬性集 Atribute Sets屬性集是一個命名了的可重用的屬性集合,可以用于任何OA組件,包括regions,items和其它屬性集。它被設計為可以在整個Oracle Application中可以重用的組件,它有

56、效的節約了Oracle和其客戶的開銷。· Oracle節約了翻譯和管理的開銷 · 客戶可以更快的定制應用的全局個性化效果。另外,少數UI元素占用更少的中間層內存,提高了性能和伸縮性。通常,attributes sets被組織到OA組件包中(獨立的XML包文件中),這個包與數據訓表對應,一個包對應一個表:· 包名與不帶下劃線的數據庫表名對應。比如,在OA Framework ToolBox中,有一個表FWK_TBX_PO_HEADERS。對應的屬性集包名為FwkTbxPoHeaders。 · 各個屬性集是為了顯示表中各個列而設置的。 · 基于列的

57、屬性集命名與列一致。比如,在FWK_TBS_PO_HEADERS表有一個名為HEADER_ID的列。對應的屬性集被命名為 HeaderId。如果多個屬性集對應于同一個列(這個值被用于不同的情況并使用了不同的prompt屬性)時根據實際使用的位置使用不同的前綴來區分。 · 屬性集也可以包含通用域頭部和按鈕等的設置。命名則使用與它們相關聯的標簽。使用屬性集在下面的情況下使用屬性集:· 所有的items都與table.column數值關聯。比如,供應商查詢字段和數據列表中的供應商字段可以使用同樣的屬性集。 · 所有通用按鈕(確定、應用、退出等等)。這種情況下也可以繼承按鈕的快捷鍵。技巧: OA Framework通用按鈕屬性集包位于/oracle/apps/fnd/attributesets/Buttons/<AttributeSetName>。· 所有通用表格動作列(像刪除、修

溫馨提示

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

評論

0/150

提交評論