Forum OpenACS Q&A: Status Update "FlexBase" / "DynField" SQL Metadata
Here are quick update on the topic: Both Quest.ie and project-open.com are using FlexBase/DynFields (basically the same code, just with small adaptions to the respective environment) in production. DynFields allow SysAdmins to extend OpenACS objects with new fields. These fields are then appended to ad_form or the ]po[ "DynViews" (our alternative to ListBuilder).
DynFields are one of the most important features in ]po[ for users in order to adapt ]po[ to their needs and for us in order to "keep the product clean".
DynFields are now used in most (important) objects/ad_forms. In addition we have integrated DynFields in several other areas:
- "Advanced Filtering" in various "ListPages":
For example: http://pcdemo.dnsalias.com/intranet/projects/ (please login as "Ben Bigboss" before on http://pcdemo.dnsalias.com/): The "Advanced Filtering" allows you to generically filter projects according to values from DynFields. You add a new DynField to a project and you get automatically a new Advanced Filter.
For example: http://pcdemo.dnsalias.com/intranet-reporting/: You can now generically select DynField variables to be shown in a report
For example: http://pcdemo.dnsalias.com/intranet-reporting-cubes/timesheet-cube: DynFields are automatically available as "Dimensions" in our data-warehouse cubes.
The introduction of DynFields was one of the most important milestones in the live for ]po[. Only with DynFields we have been able to maintain a single "product" code tree while serving >2000 customers in 6 different "vertical" markets.
- We are going to reduce the number of hard-coded fields in new objects and rely mostly on DynFields to define forms and lists.
- We'd need a two-dimensional ad_form layout. No idea yet when and how, but it's going to come. Then we're actually getting closer to Oracle SQL Forms and other form based systems.
- We may revive the idea of an "application generator" for ]po[. This meta-package would generate new packages with one object type each, based on a definition of a new object type and its DynFields. This should actually be quite easy now that all the necessary infrastructure is there.
Thanks to Matthew Gedderts:
I just want to say Thanks! to Matthew for his AMS. DynFields is basically a version of AMS with table columns for storage, plus a few extensions now. The most important contribution of AMS is the introduction of the "widget" concept that refers to a TCL widget + a definition of the data range (the values for a drop-down box). These "widgets" solve the problem of defining the exact semantics for a field, how to display it and how to restrict its value range. Great stuff!