編寫CUSTOM 庫
CUSTOM庫是一個OracleForms Developer PL/SQL 庫,它允許你充分使用Oracle Forms Developer直接整合你的代碼到Oracle 應用程式而不必改變Oracle Application 的代碼。
什麼時候使用CUSTOM庫
在一些主要的情況下,可以使用CUSTOM庫。
Zoom Zoom 通常會開啟另一個form並且可以傳遞參數到達開的form中。
通用事件的邏輯 在確定的通用form事件中,增強Oracle 應用程式的邏輯例如:
WHEN-NEW-FORM-INSTANCE 或WHEN-VALIDATE-RECORD你可以使用通用事件來改變地區的提示和其他的屬性,隱hide地區,添加驗證和其它
產品特殊事件的邏輯 在確定的產品特殊事件中增強或替換Oracle 應用程式邏輯實現商務邏輯。
客戶定義菜單 在Oracle 應用程式form中添加條目到special菜單中,例如一個開啟客戶化form的條目。
設定視覺屬性 使用CUSTOM庫在運行時來改變視覺屬性,使用Oracle Forms內建程式 SET_VA_PROPERTY 來設定CUSTOM1 – CUSTOM5的視覺屬性,並使用APP_ITEM_PROPERTY2.SET_PROPERTY在運行時來應用視覺屬性。
編寫Zoom
Zoom允許使用者調用在每一個塊中調用邏輯,例如,你可能希望在輸入採購訂單form時開啟供應商form,你可以在這一個塊上使用Zoom並且當使用者調用它,你可以開啟供應商form
11i版本Zoom的行為:
Oracle 應用程式提供一個功能表項目和工具列中的一個按鈕,使用者可以調用Zoom,只有當這個塊在CUSTOM庫Zoom邏輯定義後,功能表項目和按鈕才可用。
當游標在form中改變到不同的塊中,form調用CUSTOM庫中的ZOOM_AVALIABLE 方法。如果這個方法返回TRUE,ZOOM條目和按鈕可用,如果返回FALSE不可用。
如果Zoom條目是可用的,這是當使用者調用Zoom時調用CUSTOM中的ZOOM方法。你基於當前form和塊編寫這個事件的方法。
在CUSTOM庫中編寫Zooms
1. 添加一個CUSTOM.ZOOM_AVALIABLE方法只是form 和塊什麼時候可以啟用Zoom
2. 添加在ZOOM事件中添加CUSTOM.EVENT過程。
支援一個塊中的多Zoom時間。
11i版中Oracle應用程式為Zoom提供一個LOV和相應的參數:
u LOV:APPCORE_ZOOM
u 參數:APPCORE_ZOOM_VALUE
使用LOV和參數當這個塊含有多餘1個的ZOOM時提供給使用者一個LOV。
編寫ZoomLOV到CUSTOM庫中。
在CUSTOM庫中(包括Zoom事件代碼)
1. 建立一個記錄組合,並填充可用的Zoom名字和值
2. 添加記錄組到APPCORE_ZOOM LOV中
3. 調用show_lov來顯示LOV給使用者
4. 如果使用者選擇一個Zoom,將傳回值給APPCORE_ZOOM_VALUE參數
5. 得到參數的值選擇不同的Zoom
編寫通用Form事件
你可以編寫邏輯,在特別的form並在塊的特別的事件中觸發,你可以編寫邏輯在一下的事件中:
? WHEN–FORM–NAVIGATE
? WHEN–NEW–FORM–INSTANCE
? WHEN–NEW–BLOCK–INSTANCE
? WHEN–NEW–RECORD–INSTANCE
? WHEN–NEW–ITEM–INSTANCE
? WHEN–VALIDATE–RECORD
? SPECIALn (n 是1 到 45之間的一個數)
? ZOOM
? EXPORT
? KEY–Fn (n 是1 到 8之間的一個數)
一些Oracle 應用程式forms例如多數的Oracle人力資源模組的form可能提供附加的事件調用CUSTOM庫,這些附加事件被列在擁有這個form的產品的文檔中。你可以編寫邏輯在CUSTOM庫中以相同的方法在通用時間中編寫邏輯。
在CUSTOM庫中為通用的form時間編寫邏輯:
1. 在CUSTOM.EVENT過程中為特別的事件添加一個分支。
在分支內部,指定你希望你的邏輯觸發的form 和 塊並添加邏輯到你希望發生的事件到這些塊中。
編寫產品指定的事件:
為了編寫產品指定的事件邏輯到CUSTOM庫中:
1. 為特殊的產品的指定的事件添加分支到CUSTOM.EVENT過程中
在分支中添加邏輯。
2. 如果要支援客戶化的執行類型,添加分支到CUSTOM.STYLE方法來指定執行類型。
添加客戶化條目到special菜單中。
為了在CUSTOM 庫中添加邏輯到special菜單中的條目
1. 在CUSTOM.EVENT過程中添加分支事件WHEN-NEW-FORM-INSTANCE
在這個分支中指定你希望添加邏輯的form和塊,添加邏輯到Special菜單中
2. 將特別的SPECIALn事件添加分支到CUSTOM.EVENT過程。
在這個分支中,指定邏輯發生的form和塊。添加邏輯到你的Special菜單中。如果是你開發的form你應該添加邏輯到使用者命名的SPECIALn觸發器中。
Oracle應用物件程式庫中產品特別的事件。
Oracle 應用物件程式庫提供可以使用CUSTOM庫使用的產品特別事件。
WHEN-LOGON-CHANGED 事件
使用WHEN-LOGON-CHANGED事件在使用者使用”File-> Log On as a Different User”立即觸發來驗證。這個方法是只是對基於Oracle Forms Developer開發的form有效。而對基於HTML或Java 的from是無用的。
你可以使用FND_PROFILE.GET方法得到新的使用者名稱和其他預置檔案值
如果因為一些原因在這個時間中的代碼拋出form_trigger_failure的異常,使用者將返登入介面。
WHEN-RSPONSIBILITY-CHANGED 事件
使用WHEN-RESPONSIBILITY-CHANGED事件當使用者使用“Fiel->SwitchResponsibility”來切換職責時觸發進行驗證。這個方法只對基於Oracle Forms Developer 開發的forms有效。
你可以通過FND_PROFILE.GET 方法得到新的職責名稱和其他預置檔案的值。如果因為一些原因在這個事件中的代碼拋出 form_trigger_failure的異常,使用者將返回如同選擇了一個錯誤的職責的值列表介面。
CUSTOM 包
CUSTOM包包含了下列的方法和過程
CUSTOM.ZOOM_AVALIABLE
CUSTOM.STYLE
CUSTOM.EVENT
CUSTOM.ZOOM_AVAILABLE
function custom.zoom_available return BOOLEAN;
如果對於這個塊Zoom是可用的,則返回TRUE,否則返回FALSE,通常用於測試form和塊。
通常這個方法返回FALSE
CUSTOM.STYLE
function custom.style(event_name varchar2) return integer;
這個方法允許你決定執行的類型。你可以選擇代碼的執行為,之前,之後,或替代。注意的是一些產品特定事件是不支援所有的執行類型的CUSTOM.STYLE不對通用form事件或Zoom起作用。
下列的包變數以用作傳回值:
Custom.before
Custom.after
Custom.override
Custom.standard
作為預設值,這個方法返回custom.standard
CUSTOM.EVENT
procedurecustom.event(event_name varchar2);
這個方法允許你在指定的事件中執行你的代碼。通常測試事件名稱然或測試form和塊。
作為預設這個方法應該返回null;