2011年7月11日 星期一

powerdesigner 反向轉出PDM

剛開始寫程式是由powerbuilder 6.0開始的.
所以理所當然,剛開始使用case tool也就是使用powerdesigner 6.0


二者結合後有個很不錯的功能就是可以將做好的PDM直接轉出powerbuilder設計時使用的五個meta data table ,分別是
pbcatcol ,放置表格欄位, 類似sql server 2005 的sys.columns
pbcatedt,放置powerbuilder design時用的edit style, 如果開發過pb的應用系統,你會很高興有這個
pbcatfmt,放置powerbuilder design時用的foramt,也是用在開發pb
pbcattb,放置資料表, 類似sql server 2005 的sys.tables
pbcatvld,放置驗證原則.

以上幾個table,除了pbcatvld沒使用過外,其他4個在開發powerbuilder的程式時,一定是SA/SD必備且必要的設計工具了. 不然programmer在coding設計UI時真的會叫苦連天

時過多年,我已經久違powerbuilder多年, 但每次在交付資料庫設計文件時, 一定都不忘附上PDM以及相關的report, 所以無論如何, 不管是先設計PDM還是先設計資料庫開表格, 到最後一定都會產出這幾個table

powerdesigner在敝公司真是個老牌的case tool, 許多同事時至今日仍然在使用pd 6.0, 即便這個產品已經進化到15.0的版本了.但大家仍舊喜愛使用pd 6.0來進行SA/SD. 因為他算是所有pd的版本中最容易使用,最容易理解的一版了.


對我而言, 因為很習慣直接在sql server 中先design,所以通常我都會先在sqlserver先編輯好欄位中文後, 然後再於pd中反向產出PDM .因為主要都是想利用pd產出資料庫的文件.

然而,其他同事則是習慣在pd中新建PDM,然後再產生實體資料庫.

powerdesigner從6.0開始就提供了正向與反向產生PDM或db table schema的功能

在pd 15中,如果要由DB產出PDM,則在File >>Reverse Engineer>>Database
連接到要轉出的DB類型後,
 先在Extension頁籤, 勾選PowerBuilder (為了日後可幾進行正反向轉換)
如果要事後匯入,可以在開啟PDM後, 在Tool >>Extension >>Import an Extension,勾選powerbuilder
 選擇要轉入的資料庫連線
 這樣就完成PDM.

最後,如果你是像我一樣,習慣在sql server description 維護資料表及欄位 中文說明,則產生完PDM後, 可利用 Tools >>Execute Command >>Edit/Run Script執行下列指令碼, 將comment轉換成name, 這樣你的PDM就同時可呈現欄位名稱及中文說明了.



Option Explicit

ValidationMode = True
InteractiveMode = im_Batch 

Dim mdl   
Set mdl = ActiveModel

If (mdl Is Nothing) Then
 MsgBox "There   is   no   current   Model "
ElseIf ( Not mdl.IsKindOf(PdPDM.cls_Model) ) Then
 MsgBox "The   current   model   is   not   an   Physical   Data   model. "
Else
 ProcessFolder mdl
End If

Private Sub ProcessFolder(folder)

 On Error Resume Next

 Dim tbl 'table
 For Each tbl In folder.tables
 
  If (Not tbl.IsShortcut) Then
   tbl.name = tbl.comment 
   Dim col 'column
   For Each col In tbl.columns
    If col.comment = "" Then
    Else
     col.name = col.comment
    End If
   Next
  End If
 Next

 Dim view 'view
 For Each view In folder.views
  If (Not view.IsShortcut) Then
   view.name = view.comment
  End If
 Next

 Dim f
 For Each f In folder.Packages
  If (Not f.IsShortcut) Then
   ProcessFolder f
  End If
 Next

End Sub


無論用什麼工具, 前提就是利用PD提供的正反向功能將苦差事做一次就好吧.

沒有留言:

張貼留言

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...