Advanced Level Form Personalization

23
1-1 Copyright © 2004, Oracle. All rights reserved. Form Personalization Advanced Concepts

description

Oracle Advanced Level Form Personalization

Transcript of Advanced Level Form Personalization

Page 1: Advanced Level Form Personalization

1-1 Copyright © 2004, Oracle. All rights reserved.

Form PersonalizationAdvanced Concepts

Page 2: Advanced Level Form Personalization

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

Page 3: Advanced Level Form Personalization

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

Page 4: Advanced Level Form Personalization

1-4 Copyright © 2004, Oracle. All rights reserved.

Agenda

Global Variables

Query-by-Example (QBE) mode

Special menu entries

‘Zooming’

Page 5: Advanced Level Form Personalization

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!

Page 6: Advanced Level Form Personalization

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

Page 7: Advanced Level Form Personalization

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

Page 8: Advanced Level Form Personalization

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

Page 9: Advanced Level Form Personalization

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!

Page 10: Advanced Level Form Personalization

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

Page 11: Advanced Level Form Personalization

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

Page 12: Advanced Level Form Personalization

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

Page 13: Advanced Level Form Personalization

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

Page 14: Advanced Level Form Personalization

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:

Page 15: Advanced Level Form Personalization

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

Page 16: Advanced Level Form Personalization

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!

Page 17: Advanced Level Form Personalization

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

Page 18: Advanced Level Form Personalization

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):

Page 19: Advanced Level Form Personalization

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

Page 20: Advanced Level Form Personalization

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

Page 21: Advanced Level Form Personalization

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

Page 22: Advanced Level Form Personalization

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

Page 23: Advanced Level Form Personalization

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