One picture speaks more than a thousand words (a pity for someone as verbally skilled and graphically challenged as myself). However, for once, I will try to let the pictures speak for themselves. I present: dynamic, run-time User Extensibility in ADF applications:
Our starting point is a straightforward ADF application that I have generated using JHeadstart (however, that is not essential in this story). I will show how I have enabled the end user to add fields to this application, allowing him/her to record additional information about Departments and Employees – and search on them as well.
In order to start maintaining the User Extended data for the Department entity, I first check the UE Edit Mode? checkbox. Now my page shows the Edit UE fields button.
Pressing the button brings up a popup window where I can define additional fields for the Department Entity:
Press the New UE Field button. The Enter New UE Field dialog is shown, where I can define a new field for the Department entity:
After closing the UE popup and refreshing the Departments page, the new field is shown in the overflow right dialog:
I can enter a value for the Yearly Budget for Department 10 and save the results. Without adding a column to the DEPARTMENTS table, I can now store additional information about Departments!
I decide that the Budget field should be mandatory. And I also want to be able to query Departments on their budget value. I press the Edit UE Field Metadata icon. The Edit UE Field dialog pops up. I check the Queryable? and Mandatory checkboxes and save the changed metadata.
After refreshing the Departments page, I can now see the Required * in front of the Budget Field as well as the Budget item in the Search form:
Now I can query on Budget, to only return Departments for which the Budget starts with a four.
Let’s now upload a picture of our Accounting Department’s building:
Let’s turn our attention to Employees. They can do with some additional properties too!
UE Fields defined for an Entity in one page of course apply in other pages as well. When we look at Employees in another page, we also see the new UE field(s). Here I have searched for Employee with Senior function level and at least a single character in their first name:
Let’s change the Dropdownlist for Function Level to a set of Radio Buttons:
Let’s now manage the Function Level domain – add a new function levels for our interns, as well as properly sequence the allowable values:
After refreshing the page we can see the effect of the modified domain: