Hank,
Yes, we sing from the same hymn book here
Just imagine this scenario:
1. You have a bunch of Startaframe apps consuming data from one central data warehouse. A huge number of your screens reference a customer support phone number from the customer support table.
2. Phone company runs out of phone numbers and decides to add one more digit to the end of the phone number.
3. Now you, the programmer, need to go through ALL of your screens that reference not only the customer support phone number, but all other phone numbers as well, and change the input masks every(friggin')where!
4. You groan and you moan and off to work you go, praying to find all phone number instances AND to not get so disgusted by this robotic task that you start making typos, which brings up the issue of all of this regression testing you have to do on all of your apps in order to cover all of the phone number instances in all of your forms.
5. UNLESS you have seen the light and been saved by A.D.D. (Active Data Dictionary, not Attendtion Deficit Disorder, you fool -- pay attention!)
Imagine using this Object Oriented "data metadata" concept instead:
- Your A.D.D. has one domain table with custom data type "domains". A phone number would be one of them, with an input mask of, say, (###) ###-####, along with any number of other default properties you might want to set for a phone number (e.g., default caption.
- This domain table in turn would be referenced by the data dictionary table, which includes the input mask and any number of properties for each data column in each table in each database you have in your data warehouse.
- However, to speed things up tremendously AND make your data display and behave in a uniform way across your apps AND to avoid typos, do the next step!
- When you edit or add entries into the data dictionary, rather than hard coding for example the phone number input mask for each phone number, you would just enter a reference to the domain table's phone number.
- Now you must see where I'm going with this, no? When to phone company adds that blasted digit, all YOU need to do is go to your domain table and change the input mask there, in one place, just once, and you are off to Hawaii! Your boss of course thinks that you are locked up in the dungeon, laboring 24/7 over the average of 5 phone number changes in the 15,000+ forms AND when you are done with the changes, THEN conducting thorough coverage and unit and regression tests to make sure nothing, and I mean NOTHING broke in any of those 5*15,000 fields.
This is, really, just a familiar concept in a new territory. Sounds like class inheritance applied to data, doesn't it? Modify in one place, change everywhere -type of thing. And the subclasses (entries in the data dictionary) act in an OO way, too, since you can overwrite the default behavior/visual properties coming from the parent class (domain table), as needed.
In order for the concept to work, however, the data dictionary has to be active, so that your apps can dynamically refer back to it as they generate screens, web services, and what have you. I'm no .NET Wizard, nor do I want to be (that's why I bought Strataframe, for Pete's sake), so I don't know how to plumb something like this into the framework, but if .NET is a serious platform, which I believe it is, there MUST be a way to do this, without or with a lot of handwawing and smoke and mirros.
Can I make it any clearer? I demand an active data dictionary! Now!!! ...Pretty please.
Pertti