PowerDesigner has great automation abilities. The easiest way to work with a model programmatically is to use PowerDesigner's embedded Visual Basic script interface and to run scripts through 'Edit/Run script' window.
Here's an example script that uses given color to highlight tables that have comments or that have at least one column with a comment:
Tip: when reverse engineering big unfamiliar scheme you can easily select and move apart particular symbols by adjusting their 'Position' property. For example you can select and move tables with particular prefix:
This simple solution of how to distill big scheme came to me after I had reversed database with 2K of tables with a few foreign key constants defined. I faced a brick wall of tables arranged by their column count. All semantics were encoded in table names so I just had to set apart tables with equal prefixes. I've searched for a function to add symbols to selection but with no success. So I decided to move desired symbols to the center of workspace and then to select them with single mouse movement. That's when 'Auto layout' command came in very handy.
Here's an example script that uses given color to highlight tables that have comments or that have at least one column with a comment:
Dim model
Set model = ActiveModel
For each table in model.Tables
doPaint = false
tableComment = Trim( table.Comment )
if ( "" <> tableComment ) then
doPaint = true
end if
if ( not doPaint ) then
For each column in table.Columns
comment = Trim( column.Comment )
if ( "" <> comment ) then
doPaint = true
Exit For
end if
Next
end if
if ( doPaint ) then
For each symbol in table.Symbols
symbol.BrushStyle = 6 'Gradient
symbol.GradientFillMode = 64
symbol.FillColor = RGB( 252, 178, 104 )
symbol.GradientEndColor = RGB( 255, 255, 255 )
Next
end if
Next
More info about PowerDesigner automation at SyBooks and PowerDesigner's 'Metadata Objects' help file.Tip: when reverse engineering big unfamiliar scheme you can easily select and move apart particular symbols by adjusting their 'Position' property. For example you can select and move tables with particular prefix:
Dim model
Set model = ActiveModel
PREFIX = "hh_"
For each table in model.Tables
tableName = LCase( Trim( table.Name ) )
if ( PREFIX = Left( tableName, Len( prefix) ) ) then
For each symbol in table.Symbols
symbol.Position = NewPoint( 0, 0 )
Next
end if
Next
After desired symbols are moved to the (0,0) position they can be selected and arranged with 'Symbol->Auto layout command'.This simple solution of how to distill big scheme came to me after I had reversed database with 2K of tables with a few foreign key constants defined. I faced a brick wall of tables arranged by their column count. All semantics were encoded in table names so I just had to set apart tables with equal prefixes. I've searched for a function to add symbols to selection but with no success. So I decided to move desired symbols to the center of workspace and then to select them with single mouse movement. That's when 'Auto layout' command came in very handy.
No comments:
Post a Comment