Form 個性化控制講義
Kenver (譯)
綱要:
概述
如何使用 Form 個性化控制
轉移個性化設計至其他環境
1. 概述
Form 個性化允許您修改基於Form 基礎頁面的事件,包括:修改物件的屬性、執行內建函數、產生提示信息和添加標籤入口。
對於每個功能(需在功能處指定上下文條件,相應的Form才能執行)來說,您可以制定一個或一個以上的規則。每條規則包括:一個事件,事件執行的條件(可選),事件執行的範圍,一個或多個動作。
Form上的一個Trigger 就是一個事件。例如,開啓頁面的Trigger (WHEN-NEW-FORM-INSTANCE),或者光標從一條記錄移至另一條新的記錄所觸發的Trigger (WHEN-NEW-RECORD-INSTANCE)等等,這幾乎是每個Form 傳送資料都必須執行的,或者確認傳送資料附加的事件。
若指定了事件執行的範圍,當Form 在運行的時候,系統會去檢查當前的規則是否可執行。事件執行的範圍有以下層級:Site、Resoponsibility、User、Industry ,每個規則可有相應層級的執行範圍與之相關聯。
注:Industry 層級的執行範圍指的是爲下一版本預留。
事件執行的條件是一段SQL 語句,來控制事件在何時執行。只有在執行條件的返回結果是真時,該時間纔會執行。
一個動作包含以下的任意一項內容:
² 設置屬性,如:設置一個欄位狀態爲必輸,隱藏一個Tab 頁籤等。
² 執行內建函數,如:GO_BLOCK,DO_KEY,FND_FUNCTION.EXECUTE 等。
² 顯示提示信息。
² 呼叫一個特殊標籤入口。
規則一旦建立,當目標功能執行時,這些規則會被系統視爲Form 裏的一個事件,並且會自動執行。
2. 如何使用Form 個性化控制
要創建一個個性化控制,首先要進入到目標功能Form ,然後按下拉菜單 Help à Diagnotics à Custoner Code à Personalize 。若該下拉菜單不可見,請檢查系統Profile 設定選項:FND_HIDE_DIAGNOSTICS (Hide Diagnostics menu entry) 和DIAGNOSTICS (Utilities:Diagnostics)。
進入到個性化控制頁面時,系統會羅列當前功能頁上已定義的規則。您若做了修改,請保存然後重新進入該功能頁,這樣所做的改動才能生效。您也可以按下按鈕‘Validate’和‘Apply’,分別來驗證修改的值和快速查看所做改動的執行結果,而不必重新進入功能頁。
個性化設置的界面(當前功能頁:FND_FNDSCAUS,FORM:FNDSCUS)
每個規則包含的欄位:
Seq :對應規則的序號。值從1-100,序號可重複,值小的優先執行。
Description :描述,可用於註明當前規則的用途。
Enable:勾選時當前規則纔有效。
定位至Condition 頁簽有如下欄位:
Trigger Event :選擇規則執行的Trigger ,您可以從LOV 中挑選,或者自己鍵入當前Form 還未用到的Tirgger,該欄位是複合型的,可從LOV挑選,也可自己輸入。個性化規則會先匹配事件,然後按序號順序執行。
Trigger Object :選擇對象。對象的挑選值依賴Trigger Event,根據不同的Trigger Event 其狀態亦不同。即,可能是不可輸入的,也可能是必須輸入的。例如,如果你挑選的Trigger Event 是
WHEN–NEW–ITEM–INSTANCE ,此時您必須輸入一個 Trigger Object 。
Condition:這個欄位是選擇性輸入的SQL 語句段,只有SQL 語句段返回值是真,個性化定義的動作纔會執行。條件可包含如下內容:
² SQL 函數和運算子,如AND 、OR 、TO_CHAR 、DECODE 和 NVL 等。
² 關聯到Form 某個字段(:Block.feild),包括::System , :Globle, :parameter 。
² 調用服務器上沒有外部參數的函數。
輸入的判斷條件語法上必須是正確的,可按下按鈕‘Validate’來檢查語法的正確性。若語法上有錯誤,系統會彈出一個錯誤信息提示框警示出錯的部分。
一些判斷條件的例子:
條件 |
備註 |
:users.user_name is not null and :users.description is null |
個性化規則動作執行的條件,User_name不爲空,且 Description 爲空 |
sysdate >= to_date(‘1-1-2005’, ‘DD- MM-RRRR’) |
個性化規則動作執行的條件,系統日期大於等於2005年1月1號 |
Processing Mode :設定執行的模式。Not-in-Entry-Query-Mode,查詢模式下不使用個性化規則;
Only-in-Entry-Query-Mode ,僅在查詢模式下使用個性化規則;BOTH, 兩種狀態下都使用個性化規則。
Level :個性化規則執行的層級。
Value :層級的值。
定位至Actions 頁簽有如下欄位:
Seq :個性化規則動作的序號,值從1-100,序號可重複,值小的優先執行。
Type :個性化規則動作的類型,包括:(1)Property 即物件的屬性。(2)Buildtin 即Form 的內建函數如:GO_BLOCK,DO_KEY 等。(3)Message 即提示消息。(4)Special 呼叫一個下拉菜單入口,定義其標籤,已經在哪個Block 可激活。
Discription:用於註明當前個性化動作的用途。
Language:個性化規則動作執行的語言環境
Enable :勾選該個性化動作纔有效。
以下按鈕出現依賴於Type 欄位的挑選值:
Add Parameter,出現時機:Type 爲 Builtin ,挑選值爲FND_FUNCTION.EXECUTE 。
Add Block,LOV 挑選Block 的名字。
Add Item,LOV 挑選Item 的名字。
下圖區域依Type 挑選值爲Property 時出現。
Select By Text … 快速需找某個欄位名錶述方式。
Object Type :物件類型。如:Item ,Block ,Window ,Tab ,Canvas ,Radio Button,View,
Globle ,Parameter 。
Target Object :目標物件。指定當前個性化動作的執行對象,即指定要針對哪個物件進行動作設定。
Property Name :屬性名。指定物件的屬性。
Value :給出物件屬性值。
Get Value :取得當前對象屬性值。
下圖區域依Type 挑選值爲Message 時出現。
Message Type :用於設定提示信息的類型。'Show', 'Hint', ‘Warn’, 'Error', 和‘Debug’。值得注意的是,若消息類型挑選了‘Warn’或 'Error', 當您按下按鈕‘Cancel ’ 時,系統會執行 form_trigger_failure 這個Trigger ,以阻止Form 繼續執行。‘Debug’ 類型的 message 只有頁面上的 Show Debug Message 這個複選框勾選才會顯示。
Message Text :提示消息的內容。
下圖區域依Type 挑選值爲Builtin 時出現。
Builtin Type :指定所使用的內建函數。
Argument :內建函數所使用的參數。
當Builtin Type 爲FND_FUNCTION.EXECUTE時,會出現以下區域。
Function Name :指定要執行的函數。
Parameters :執行函數的參數。
下圖區域依Type 挑選值爲Special 時出現。
Menu Etry :指定下拉菜單的入口。由3個集組成。每個集15個,挑選不同的集,下拉標籤將出現在不同的下拉菜單位置上。若你挑選了Form 已有的Menu並且創建了個性化控制,那麼所創建的個性化規則將改寫Form原有的菜單入口功能。
Menu Lable :標籤的標示符。
Render Line Before Menu :若勾選,在標籤上方會出現一條直線以做區隔所用。
Enable In Block :在哪個Block 標籤被激活。
Icon Name :若需要在工具欄上添加一個圖形(功能與點擊對應下拉菜單的標籤相同),則可以在此指定圖形的名稱。
每個屬性值輸入的字符串可能直接被引用,也可能個性化規則在運行時才被檢查。(取決於字符串是否以”= ”開頭)
不以”=”開頭,值在個性化規則運行時直接被引用。
以”=”開頭,值在個性化規則運行時被檢查,允許添加上下文邏輯,如:
ü SQL 運算子:||,TO_CHAR,DECODE,和 NVL
ü 綁定變量值:(:Block.Field),:System,:Globle,:Parameter
ü 調用服務器上的函數。
ü Select 語句,但必須遵循以下條件:
u 需以’ = SELECT’ 開頭。
u 查詢值結果必須爲字符型的,且長度不超過2000個字節。
u 所查詢的欄位的別名需給“A”。
u 語句段的查詢結果集不超過一行,若超過一行,只有第一行被使用。
使用“=”的一些例子:
輸入的字符 |
執行結果 |
='Your password will expire on '||(sysdate+7) |
Your password will expire on 2007-12-28 (假設系統日期爲2007-12-21) |
='Your password must have at least '||:global.password_length||' characters.' |
Your password must have at least 8 characters。 (假設該Global項的值長度爲8) |
=’Your password isn’’t valid.’
|
Your password isn’t valid. |
=:items.part_number
|
{欄位=:items.part_number 的值} |
=SELECT meaning A from fnd_lookups where lookup_type = 'DAY_NAME' and lookup_code = 'SAT'
|
Saturday {假設系統作業是在英文環境下執行} |
=SELECT 'The office is closed on '||meaning A from fnd_lookups where lookup_type = 'DAY_NAME' and lookup_code = 'SAT'
|
The office is closed on Saturday {假設系統作業是在英文環境下執行} |
3. 轉移個性化設計至其他環境上
在測試環境上設計並且通過測試的個性化規則,可通過以下辦法快速轉移至新的環境。
(1) 下載頁面配置命令
FNDLOAD <userid>/<password> 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> FND_FORM_CUSTOM_RULES function_name=<function name> |
(2) 上傳頁面配置命令
FNDLOAD <userid>/<password> 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> |