Sunday, January 31, 2010

ADF Example: LOV search region fields and operators

The ( example can be downloaded here.
Based on a recent forum thread, seems this idea could use some more 'how-to' type clarity. 
For LOV's on an ADF Faces UI, a popup dialog with search form and search results is presented to the user to facilitate search for specific values.
By default, the search form contains all queriable fields.
This example illustrates how to replace this by specific fields and/or operators chosen at design time.
1. DepartmentView has a view criteria defined as shown:

2. EmployeeView has a view accessor to DepartmentView which uses the criteria defined above (edit view accessor and shuttle the criteria from available to 'selected'

3. DepartmentName attribute of EmployeeView has an LOV defined - which is in turn based on a view accessor to DepartmentView. With the below settings, fields (and operators) defined in the criteria from DepartmentView will appear on the search region of the LOV:
PS: LOV = List of Values
LOV's are commonly defined on ViewObject attributes in 11g. That makes a more model-driven UI and keeps the business logic (that a field can hold a specific set of values) in ADFbc components. Not much work is required on the UI itself - apart from drag and drop.

ADF Sample: Declarative line item search

A common functional requirement is to search for master objects based on some attributes of its detail objects.
- Search for requisitions containing an item costing more than a given amount.
- Invoices containing invoice lines with specific item names.

ADF has purely declarative support for implementing this kind of a usecase. To illustrate, I have implemented:
A search for departments which have at least one employee whose salary is greater than the salary entered in search form.

The core concept is that a 'view link accessor' (or an association accessor in the entity layer) can (should) be seen as just another attribute.

Download the example:

ADF in bite-sized pieces

I had to start this sometime 'soon'. Over a period of time you kind of just catch on and wisen up to the fact that there are going to be similar questions asked over and over and over again.
So, here goes:
Now that it's all out there, I better keep up. Hope to keep posting something interesting at least every week (Bill, if you are reading this, it's strictly on my own time/weekends)