In this Document

  Purpose
  Scope
  Details
  Diagnostics & Utilities Community:
  References

APPLIES TO:

Oracle Application Object Library - Version 11.5.10.0 to 12.1.3 [Release 11.5 to 12.1]
Information in this document applies to any platform.
Checked for relevance on 28JUL2014

PURPOSE

With the Oracle E-Business Suite release 11.5.10, the Oracle has introduced a mechanism which revolutionizes the way the forms can be customized to fulfill the customer needs. For many years, Oracle Applications has provided a custom library using which the look and behavior of the standard forms can be altered, but the custom library modifications require extensive work on SQL and PL/SQL. In the release 11.5.10, Oracle has provided a simple and easy feature to implement the customer specific requirements without modifying the underlying forms code or CUSTOM library. Although CUSTOM library still can be used for forms customization to implement the complex business logic, the personalization feature provided in the latest release is easy, faster and requires minimum development effort.

SCOPE

Oracle Applications release 11.5.10 has provided a user interface "Personalization form" which will be used to define the personalization rules. These personalization rules establish the custom actions to be performed by the forms during runtime. The actions may include changing prompts, showing custom messages or prevent the user from doing the transactions etc. This feature also provides a well-built controlling mechanism which restricts the execution of the personalization rules at different levels (Industry, site responsibility and user). The personalization does not violate the support from Oracle and these rules also conceded with the future upgrades without any additional effort.

DETAILS

This feature has several significant limitations due to the architecture of Oracle Forms and/or the e-Business Suite. 

[1] User can only change what Oracle Forms allows at runtime. For example, the following cannot be changed:

  • User cannot create new items
  • User cannot move items between canvases
  • User cannot display an item, which is not on a canvas (thus, individual flexfield segments cannot be displayed)
  • User cannot set certain properties such as the Data type of an Item.
  • User cannot change frames, graphics, or boilerplate
  • User cannot hide the item that currently has focus

[2] Form Personalization can only respond to events that are centrally processed and dispatched by APPCORE. These are limited to:

  • WHEN-NEW-FORM-INSTANCE, WHEN-NEW-BLOCK-INSTANCE, WHENNEW-RECORD-INSTANCE, WHEN-NEW-ITEM-INSTANCE. These events occur as the user moves focus within the form.
  • WHEN-VALIDATE-RECORD (in many but not all forms). This event occurs whenever changes have been made to the current record in the current block.
  • SPECIAL1 through SPECIAL45. These occur when the user selects entries from the Tools, Reports and Actions drop down menus.
  • Product-specific events. These are typically documented in implementation manuals, such as 'Configuring, Reporting and System Administration in Oracle HRMS'.
  • Form Personalization can only respond to events that are centrally processed and dispatched by APPCORE. These are limited to:

WHENNEW-RECORD-INSTANCE
should read
WHEN-NEW-RECORD-INSTANCE

[3] User can see only the events that are being passed by enabling the 'Show Events' option in the Custom Code menu. 

[4] Certain personalization must be performed at specific events:

  • To specify the Initial Value of an Item, user must perform that action in the WHEN-NEW-RECORD-INSTANCE event of the block that contains the item.
  • Special menu entries can only be created at form start up (WHEN-NEW-FORM INSTANCE)

[5] Both the Personalization form and the runtime-processing engine will report errors for these cases and skip processing of them. 

[6] Certain objects may not be available to user to change, or cannot be validated:

  • If a Tab within a form has no items directly rendered on it, that Tab will not appear in the list of objects that user can modify. In some cases, making that Tab the active tab before invoking the Personalization feature may cause it to be detected.
  • The object types GLOBAL and PARAMETER cannot be detected, thus these fields have no LOVs to restrict their input. Use the 'Validate' or 'Apply Now' buttons to determine if the values users have entered actually exist. Note that GLOBAL variables are dynamically created, so whether they exist or not can be a matter of timing.

[7] Most significantly, this may interfere with, or be overridden by, base product code; any change user make might interfere with the normal operation of the form. This can manifest itself in several ways, such as:

  • User may make a personalization but it does not take effect, because there is code in the form that overrides it. In some cases user may be able to perform user personalization by moving the Trigger Event to a 'lower' level, such as block or item-level.
  • User personalization may simply produce the wrong result, because user change interacted with the base code in unexpected and untested ways. At best this error will occur immediately upon the personalization being applied; at worst it could affect some later processing which does not appear to be directly related to the object or event.
  • In extreme cases, user changes may prevent the form from running at all, making it difficult to open the Personalization screen to remove the offending personalization unless user turn off Custom Code. Because of this, it is critical that any change be thoroughly tested in a Test environment. See the 'Troubleshooting, Support, and Upgrade considerations' section later in this chapter for more information.

[9] Use of the Apply Now button does not always work if dependent on the results of another action. 

[10] Forms Personalization is not possible for any flexfield structure or segments.

This is a limitation of Forms Personalization on Flexfield. Logged an Enhancement Request Bug 5506506 - "PERSONALIZE FLEXFIELDS BY USING FORMS PERSONALIZATION" but was rejected the enhancement request as this is not feasible. A Flexfield is a single field in a Form but then when you click into it and it opens up the flexfields window, the multiple fields you see is actually a user exit with multi segment values, not form fields. No Form Personalization events are passed to flexfield windows (user exits). No Form Personalization events are passed to segments inside the flexfield window (user exit).

However, you can do a little more on Flexfields using some custom code and Forms Personalization like?

1. Make a Flexfield Segment as read only.
2. Populate a Flexfield Segment with some pre-defined value dynamically at run time business logic.
3. Can restrict users from entry in a particular segment of a Flexfield.

[11] The argument (sql) length for creating a record group must be within 2000 Characters.  A viable workaround is to create a view that contains the required SQL then use that view as the data source for the SQL creating the record group.

[12] Populating LOV dynamically from a Record Group must be against the WHEN-NEW-ITEM-INSTANCE of that LOV item. 

[13] The use of the action RAISE FORM_TRIGGER_FAILURE may not work properly in some triggers. 

[14] Use of Builtin Action "Raise Form_Trigger_Failure" and pressing the button "Apply Now" will show the message "One or more required fields are missing values". 

[15] It is not possible to use server-side functions that have OUT parameters as the condition to execute the actions. 

[16] Expected user is an Admin/Developer

  • Knowledge of Oracle Developer is extremely desirable
  • Knowledge of PL/SQL, Coding Standards and/or APIs required in some cases.

[17] Normal rules for customizations apply

  • Extensive testing in a Test environment is required.
  • A patch does not touch user code, but user still must re-test after applying a patch.

Limitations of Forms Personalization (文档 ID 420518.1)的更多相关文章

  1. 转://【MOS】关于在不同版本和平台之间进行还原或复制的常见问题 (文档 ID 1526162.1)--跨版本恢复

    Questions and Answers 1) 我能用更高版本的 Oracle 还原或复制旧版本的数据库吗? 2) 我能在两个不同的补丁程序集之间进行还原或复制吗? 3) 我能在同一操作系统的不同版 ...

  2. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding

    1 概述 这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析.当前分析的版本 sphinx-2.0.4 2 index 功能 3 文件表 4 索引文件结构 4. ...

  3. 数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

    数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

  4. Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1)

      Rolling Cursor Invalidations with DBMS_STATS.AUTO_INVALIDATE (文档 ID 557661.1) 转到底部 In this Documen ...

  5. oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

    数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1) 文档内容   用途   详细信息   Patchsets ...

  6. ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

    ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26 ...

  7. Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1)

    Best Practices and Recommendations for RAC databases with SGA size over 100GB (文档 ID 1619155.1) APPL ...

  8. How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)

    How To Upgrade ASMLib Kernel Driver as Part of Kernel Upgrade? (文档 ID 1391807.1)

  9. Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1)

    Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1) This document is intended for DBA' ...

随机推荐

  1. python--MySQL数据库初识

    一 . MySQL安装 # 下载MySQL地址 https://dev.mysql.com/downloads # 要选稳定的,不要选最新的,稳定的就是半年以上没有出现过bug 现在5.6.43为绝大 ...

  2. 数据结构( Pyhon 语言描述 ) — — 第6章:继承和抽象类

    继承 新的类通过继承可以获得已有类的所有特性和行为 继承允许两个类(子类和超类)之间共享数据和方法 可以复用已有的代码,从而消除冗余性 使得软件系统的维护和验证变得简单 子类通过修改自己的方法或者添加 ...

  3. DFS:POJ3620-Avoid The Lakes(求最基本的联通块)

    Avoid The Lakes Time Limit: 1000MS Memory Limit: 65536K Description Farmer John's farm was flooded i ...

  4. MFC中关于子进程创建和关闭操作

    创建子进程 PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo; //This is an [in] parameter ZeroMemo ...

  5. MFC中关于CListBox控件添加水平滚动条

    首先是设置listbox控件的属性  Horizontal Scroll设为TRUE: 然后添加函数到CUighurRecognitionDlg.cpp(在CUighurRecognitionDlg. ...

  6. 4,list,list的列表嵌套,range

    list 索引,切片+步长 # li = [, True, (, , , , , , '小明',], {'name':'alex'}] #索引,切片,步长 # print(li[]) # print( ...

  7. STM32F407 I2C 个人笔记

    源代码;https://github.com/YuQiao0303/STM32F407-Examples/tree/master/24.IIC 概述 I2C (IIC, Inter-Integrate ...

  8. wordpress无法登录的解决方法

    使用wordpress建站的朋友可能会遇到wordpress管理密码,有时甚至是正确的密码,但是多次尝试输入都无法登录,并且输入用户名和输入电子邮件都无法获取密码,遇到这种情况怎么办,本文教你如何处理 ...

  9. 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!

    D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...

  10. SPOJ-COLONY - Linearian Colony!简单二分思想

    COLONY - Linearian Colony 一道很水的题却坑我两天!在CF上做过类似的题,用递归可以找到答案,但感觉不会这么麻烦,于是看看有没有什么规律,对Y分奇偶貌似可以找到规律,但WA了三 ...