Once you’ve invested the time and effort into creating really solid, well documented data models, it would be really great to let some folks know about it, right!?!? If you’re using PowerDesigner, you’ve got a few options:
- Use the included (in some editions) web repository. This requires the use of the model repository and displays the contents of your model(s) on a web site. The drawbacks are a little bit clunky setup process, very limited customization, and almost no capability to integrate non-model data into the pages. Also, getting the style to match anything else you might be going to communicate to users is a mammoth task.
- Use a third party tool that can read PowerDesigner models. Great if you have one or can buy one.
- Extract data from the model to load into whatever metadata system you have.
We’re generally using option 3 in an attempt to integrate design metadata (from the model) with implementation metadata. This allows us to check if our implementation matches the design and present a more complete view of the system.
To make #3 work, we’re using extended generation of files. This is a nice feature of PowerDesigner that allows you to add file definitions for any type of object to your XEM and then generate output based on those definitions. For use, we export CSV files for tables, columns, entity, attributes, table and column mappings, business rules, etc.
Here’s the table template:
.foreach_item(Tables) .ifnot (%IsShortcut%) %Model.Code%,[%Owner%?%Owner.Code%],%Code%,%Name%, .if %Comment% " .replace("\"","") %Comment% .endreplace " .endif \n .endif .next .foreach_item(Packages) %extGenMDRTable% .next
The template runs in the context of a package and recursively traverses child packages to export all table data. That’s all there is to it! Now, under the Tools->Extended Generation menu, I have the option to export all sorts of metadata in a format that is easily loaded into our metadata repository.