Post on 15-Nov-2014
description
1-1 Copyright © 2004, Oracle. All rights reserved.
Form PersonalizationAdvanced Concepts
1-2 Copyright © 2004, Oracle. All rights reserved.
After completing this module, you should be able to do the following:
Work with GLOBAL variables
Understand Oracle Forms Query-by-Example (QBE) mode
Create Special menu entries
‘Zoom’ to other functions
Objectives
1-3 Copyright © 2004, Oracle. All rights reserved.
The viewlet Oracle Applications Form Personalization Demonstration – Advanced Concepts shows many of the concepts included in this module.
Related Course Material
1-4 Copyright © 2004, Oracle. All rights reserved.
Agenda
Global Variables
Query-by-Example (QBE) mode
Special menu entries
‘Zooming’
1-5 Copyright © 2004, Oracle. All rights reserved.
Form Personalizations allows you to fundamentally alter the behavior of the product that Oracle ships, and access any and all data. Therefore,
This feature should only be made available to trusted users.
Avoid building Personalizations on a production system. – Form Personalizations should first be entered and
thoroughly QA’ed on a test system before they are loaded to a production system
WARNING!
1-6 Copyright © 2004, Oracle. All rights reserved.
GLOBAL variables are dynamically created at runtime They can hold up to 255 bytes They are visible across all forms that are currently
running They are very useful for Form Personalizations!
– Allow you to establish a value once then re-use it– Allow you to pass information between forms
Global Variables
1-7 Copyright © 2004, Oracle. All rights reserved.
2 Properties affect them: VALUE:
– Creates it if it does not exist– Always sets the value
INITIAL VALUE: – Creates it if it does not exist, setting it to null– Only sets the value if it is currently null
Global Variables, continued
1-8 Copyright © 2004, Oracle. All rights reserved.
Name any you create starting with ‘XX’– Prevent collisions with global variables that base
product code creates
In Conditions and evaluated strings, refer to them with :global.<name>
– Example: ='Your password must have at least '||:global.xx_password_length||' characters.'
– References will produce an error if the variable does not exist yetMake sure they exist by first setting the INITIAL
VALUE property in a prior action or rule
Remember, they are shared across all forms
Global Variables, continued
1-9 Copyright © 2004, Oracle. All rights reserved.
Global Variables, continued
Creates the global variable :global.xx_password_failures if it did not already exist
Sets its value to :global.xx_password_failures Because the example is self_referencing, a prior
Action needs to have created it!
1-10 Copyright © 2004, Oracle. All rights reserved.
QBE is a power-user mechanism to locate records, instead of Find Windows
Normally invoked by selecting View > Query By Example > Enter from the pulldown menu
The builtin DO_KEY with argument ENTER_QUERY will invoke this mode, for the current block
It is a ‘mode’– Things operate differently, or are suspended, until you
exit this mode by Running a query or selecting Cancel– Specifically, any actions after invoking the mode will
not be executed until the mode is exited
QBE Mode
1-11 Copyright © 2004, Oracle. All rights reserved.
Trigger Events can fire in QBE mode, or not– Set ‘Fire in Enter-Query Mode’ as desired– This will cause the Rule to execute in both QBE
and ‘normal’ mode– It is very, very, very rare that you would want your
rules to fire in this mode!– Later we’ll discuss one example where this could
be used.
QBE Mode, continued
1-12 Copyright © 2004, Oracle. All rights reserved.
Embedded in every menu are 45 entries you can activate
Special Menus
Each has the name SPECIAL#– SPECIAL1 though 15: under ‘Tools’– SPECIAL16 though 30: under ‘Reports’– SPECIAL31 though 45: under ‘Actions’
Must be activated in a Rule based on the WHEN-NEW-FORM-INSTANCE event
1-13 Copyright © 2004, Oracle. All rights reserved.
Special menus, continued
Menu Entry: which entry you want to activate Menu Label: the text for the menu entry Render Line before menu: will draw a separator line above the menu entry Enabled In Block(s): the blocks for which the menu entry should be enabled.
– Leave blank to enable for all blocks.
Icon Name: the name of an optional .ico file, which will render in the toolbar
1-14 Copyright © 2004, Oracle. All rights reserved.
Special menus, continued
This action:
Activates the Tools menu and creates
the menu entry, for all blocks of the
form:
1-15 Copyright © 2004, Oracle. All rights reserved.
Special menus, continued But ‘Special’ simply activates the menu entry
– At runtime, if the user selects it, it emits an event name that matches the menu entry nameFor example, if you activate SPECIAL1, when the
user selects it the event ‘SPECIAL1’ will be sent– You create a second rule that triggers off that event
and does what you want
WARNING– Base product code uses these menu entries too.
Select an entry they do not useThe Menu Entry list shows the current label if
there is one; no label is an indication it is currently unused
1-16 Copyright © 2004, Oracle. All rights reserved.
Zooming One of the most commonly requested
enhancements:– The ability to open a function, passing
context from the current functionFor example, from the Purchase Orders
form, open the Vendors form, and pass the vendor on the current PO to query its details
Special+Globals+QBE let’s you define these yourself!
1-17 Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy Activate a Special menu In response to that menu (when selected by the user),
– Copy context, like primary key fields, into globals Use Conditions to test those values If they are not set yet, show an error message If they are set, Open the desired function
In the target form,– Create a rule that sets the initial value of those globals to null, to insure they
exist– Then test them: if they are not null,
{this is where other strategies, discussed later, could be used} Invoke QBE mode on the appropriate block Copy the values into base table fields Execute the query Clear the globals
1-18 Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy, continuedTo open the desired function Create an Action of type Builtin, with the Type
FND_FUNCTION.EXECUTE This example would open the Responsibilities form (after first
checking security):
1-19 Copyright © 2004, Oracle. All rights reserved.
Rules in the target form Rule 1:
– Trigger Event: WHEN-NEW-FORM-INSTANCE– Action: For one of the global variables being passed, set its
INITIAL VALUE property to null (empty) This makes sure the next rule will not fail when the form is
opened standalone
Rule 2:– Trigger Event: WHEN-NEW-FORM-INSTANCE– Condition: test if that global variable is not null– Action 1: Builtin GO_BLOCK to the block you want to query– Action 2: Builtin DO_KEY with ENTER_QUERY to invoke QBE– Don’t put more actions here - they will not fire!
Zooming: One Strategy, continued
1-20 Copyright © 2004, Oracle. All rights reserved.
Rules in the target form, continued Rule 3:
– Trigger Event: WHEN-NEW-RECORD-INSTANCE, for the block you are querying
– Condition: test if that global variable is not null– ‘Fire in Enter-Query’ mode checked– Action 1+: set the VALUE of the appropriate fields to have the values
of the globals you passed The Value is of the format “=:global.<name>” Create an Action for each variable you need to process
– Action 2+: Set the VALUE of the globals to null (empty) This prevents future queries from re-running just this one Create an Action for each variable you need to process
– Action 3: Builtin DO_KEY with EXECUTE_QUERY to run the query
Zooming: One Strategy, continued
1-21 Copyright © 2004, Oracle. All rights reserved.
Zooming: Other StrategiesEach form in Oracle Applications has its unique quirks. You may
discover other ways to force it to query: The target function may already accept the value(s) as an
input parameter– Use the ‘Add Parameters’ button to see parameters associated with
other functions on the same form– Note that this will not reveal every parameter that a function takes,
nor its intended usage– Examining source code is the only way to know exactly how
parameters work– Oracle does not warrant that a parameter will exist or function the
same after a patch
In forms that have Find Windows, it may be possible to populate the appropriate field(s) in the Find window, then issue builtin DO_KEY with argument NEXT_BLOCK
1-22 Copyright © 2004, Oracle. All rights reserved.
Zooming: Other Strategies, continued You could modify the DEFAULT_WHERE clause of the
appropriate block, then query it using DO_KEY with argument EXECUTE_QUERY, then reset the DEFAULT_WHERE clause back to its original value
A little bit of experimentation and creativity is all it takes! Zooms need to be extensively tested after a patch
because of their inherent complexity
1-23 Copyright © 2004, Oracle. All rights reserved.
Summary
In this module, you should have learned how to:
Work with GLOBAL variables, including the differecnes between the properties VALUE and INITIAL VALUE
Understand Oracle Forms Query-by-Example (QBE) mode
Create Special menu entries, and write Rules that respond to their selection
‘Zoom’ to other functions, and various strategies to try