One of the big challenges for us when building the packaged applications is that we’re effectively developing blind–we don’t have a direct customer who is providing us with specific project requirements, so we do our best to come up with the fields that users are likely to want. Naturally, this is…difficult.
One of our main solutions to this problem is the introduction of “flex fields”–extra columns that application administrators can use for data that we didn’t think to build in. Our first implementation was released in the Customer Tracker application in 4.2.4, but we decided that it wasn’t as user-friendly as we’d like, so in the 4.2.5 release, we included flex fields with a much better interface in Customer Tracker and P-Track. We’ll be adding them to more applications as we go forward.
The design is fairly straightforward: any table which supports flex fields has 17 additional columns–8 varchar2(4000), 4 number, 4 date/timestamp, and one CLOB. There’s also a flex registry table that tracks which column(s) have been enabled, what the label should be, if it has a format mask, and so on. We tried to include a lot of options, so you can customize it pretty thoroughly. All of the relevant report pages have columns for the flex fields which display only if the field is active, and all of the relevant form pages include fields for the flex columns (which are, again, conditional).
This last bit is really where the biggest chunk of “magic” comes into play. Because we allow for a variety of different item types (text field or area, select list, date picker, number field), the built-in APEX page items weren’t sufficient. Instead, we built a new item plugin that looks at the registry table to figure out how to correctly render the page item.
If you’re using the Customer Tracker or P-Track packaged apps already, try out the flex fields. If you’re developing your own applications for customers who periodically request that columns be added or removed (wait, project specs never change capriciously, right?), take a look at our implementation and see if you can incorporate it–might just save yourself some hassle!
As an Oracle Applications developer before APEX, I must admit I was a little excited when I saw the term flex-field in APEX as a feature/thing.
Is the current development piggy-backing off the EBS implementation or is it more of a ground-up approach?
I did some EBS work myself before joining the APEX team, so the term may have been influenced, but our implementation is our own. It’s a very similar concept, though.
Hi David,
Is it possible for you to release the Apex version as a stand alone application?
I’m not sure I understand the question. APEX applications, by their nature, cannot be released as standalones; they require the Oracle Database and the APEX engine. And some of the packaged apps require at least the APEX engine version in which they first appeared, as they rely on functionality which was introduced at that time; so if I gave you an export of Customer Tracker or P-Track, you would probably not be able to install them in a version of APEX which didn’t already have them available in the packaged app gallery.
Hi David,
Thank you for great article. It is very helpful.
We are look into customizing Customer Tracker for our needs.
And, we are thinking to add more Flex Fields to existing Customer Tracker tables and to our newly created tables. This is to speed up development process.
In your opinion what is the easiest way to extend Flex Fields in existing and new tables?
I found article http://www.explorer-development.uk.com/flexible-field-functionality/ that describes how to extend flex fields. Would you used that approach or would you raiser go and make changes to the eba_cust_flex_fw package? Would changing package be an undertaking?
I would appreciate your opinion. Thank you.
Hi David,
After further review, using approach described in article that I referred to will not speed up development because it is jut adding fields to all places which can be done manually.
After quick look at package I don’t believe we can extend flex fields while using it. Could I ask you how flex fields feature was implemented in Customer Tracker? I assume it comes with installation.
I would greatly appreciate your comments.
Thank you