Monday, June 29, 2015

Creating Cascaded Lookups on Application Instance Form

Tested On: Oracle Identity Manager 11.1.2.2.0
Description: Demonstrates how to create cascaded lookups on an application instance form. With cascaded lookups, an application instance form can have a lookup field dependent on another lookup field (E.g. When a particular State is selected, display the cities available only for that State). Below are screen shots.

State: California
State: Texas

References: http://docs.oracle.com/cd/E27559_01/admin.1112/e27149/customattr.htm#OMADM5034

Creating Cascaded LOVs on Application Instance
1. Log in to Oracle Identity System Administration (E.g. http://localhost:14000/sysadmin).

Sign-in Page

2.  Create and activate sandbox.

Sandboxes: Located top right of page

Create Active Sandbox

3. On the left pane, select Form Designer located under Configuration. Then search and select a particular form.

Configuration -> Form Designer

Search and select form

4. On the parent form, create a parent lookup field (E.g. State).

Field Type: Lookup

Example: Parent Lookup Field

Lookup Definition for Parent Field

5. On the parent form, create a dependent lookup field (E.g. City). Ensure dependent lookup is constrain by parent field (E.g. State), and then map parent-dependent values.

Field Type: Lookup

Example: Dependent Lookup Field

Lookup Definition for Dependent Field

Example: Mapping Cities to California

Example: Mapping Cities to Texas
6. Publish sandbox.

7. Log in to Oracle Identity Self Service (E.g. http://localhost:14000/identity).

8. Create an active sandbox.

9. Assign the application instance that has the cascaded LOVs to any user via Catalog, and then customize the form using Web Composer (Click the Customize link located on the top right of the page, and then navigate to View -> Source).

Requests -> Catalog

Request Application Instance via Catalog

Highlight the Parent Lookup Field in Web Composer

Put a dummy value for the Partial Trigger
property on the Parent Lookup Field

10. Once a dummy value is set for the Partial Triggers property on the parent lookup field, export the sandbox and find out the id of the parent lookup field using the dummy value.

File: oracle/iam/ui/runtime/form/view/pages/mdssys/cust/site/site/BadgeAccessCreateForm.jsff.xml
Example Id: _xg_11

11. Clear out the dummy value on the Partial Triggers property for the parent lookup field, and then set the Partial Triggers property on the dependent lookup field using the parent id from step 10.

Highlight Dependent Lookup Field

On the dependent lookup field, set the Partial Triggers
property using the parent lookup field id.
12. Test functionality on form. When working, repeat steps for the Modify Form (E.g. oracle/iam/ui/runtime/form/view/pages/mdssys/cust/site/site/BadgeAccessModifyForm.jsff.xml).

13. Publish sandbox.


Side Notes
- The error given below is caused when either the child or parent lookup definition name is longer than 30 characters. When inspecting the ADF_CASCADING_LOOKUP_REL table (stores relation of parent-dependent lookups), the length of the columns to store the child and parent lookup types are each 30 length.

JBO-27010: Attribute set with value Lookup.Adapter Factory.Adapter Type for ChildLookupType in CascadingLookupRelationship has invalid precision/scale

ADF_CASCADING_LOOKUP_REL table

- The ADF_CASCADING_LOOKUP_ASST table contains all the values mapping between parent and dependent lookup values. Also, ensure you have no entry in either lookups with a code key of more than 30 characters long.

ADF_CASCADING_LOOKUP_ASST Table

- When mapping parent and child values in the UI, records are inserted to ADF_CASCADING_LOOKUP_ASST table on the fly. Same applies with ADF_CASCADING_LOOKUP_REL table.


1 comment: