OLE automation與VBScript 有不少工作,例如產生報表,寄發給相關人員、或是將最新的資料庫schema利用PowerDesigner匯出成DDL檔案等,都是人工行為,並且需要經常執行,非常繁瑣。假如我們能夠將這些動作自動化,將大幅減低繁瑣的工作,人力因而能更有效運用。PowerDesigner有提供使用OLE Automation或是VBScript的方式,就能做到上述自動化的功能,以下分別說明作法。
OLE automation是一種由外部應用程式來控制PowerDesigner的方法,目前只要能夠支援COM的語言,就可以藉由OLE automation來和PowerDesigner溝通,例如PowerBuilder、C++、VB,甚至Word和Excel的巨集;至於VBScript,是微軟的Script語言,基本上像Java或是C#這類的Script語言,也可以和PowerDesigner來溝通,只是目前PowerDesigner整合在工具內,可以讓你直接撰寫和執行測試的,只有VBScript。
究竟可以和PowerDesigner做哪些溝通呢?筆者列出較重要且實用的功能如下: ●建立和維護模組。 ●模組檢查。 ●對資料庫和程式執行正反向工程。 ●新增或維護模組的延伸屬性(Extended Model Definition)。 ●對Repository操作。 ●對report產生HTML或是RTF檔案。 ●對Workspace的操作和維護。
OLE automation和VBScript的方式雖然需要撰寫程式,可是筆者強調一點,就是它的應用可以非常多樣,重點在於這些程式是你寫的,所以你要如何應用皆可。例如你可以將讀取的模組寄發email給相關人員,或是自動排程產生報表,並寄出;接下來自動產生最新的資料庫DDL檔案,再交付給DBA;執行物件關聯分析,並將分析結果產生到Excel檔案等,相信聰明的讀者可以想出更多的應用模式。
參考圖8,目前的位置在[ZH-TW::Report Titles/Physical Data Model/Table/Procedures list],裡面針對Procedure List的描述是「表格%PARENT%的過程清單」,由於我們習慣將Procedure說成「預儲程序」,而非「過程」,所以可以將此段話修改成「表格%PARENT%的預儲程序清單」,更能表達產出報表的涵義。
圖8:Traditional Chinese報表語言的資源檔。
Extended Model Definitions 在某些情況下,PowerDesigner預設的模組,仍無法表達你要的屬性,你可能想要針對某個設計物件,加入自己新的屬性頁面,或是加入新的屬性,以表達你系統的特殊設計,或是既有選項不夠,你希望能加入新的選項,以便爾後維護模組時可以使用。諸如此類的機制,用來擴展既有模組的定義,就是所謂Extended Model Definition的功能。
要擴展模組的定義,你必須建立新的模組定義檔,並且在維護模組的時候,將此定義檔匯入到該模組,該模組才有新的屬性定義可以使用。模組定義檔的副檔名為.xem,建立的方法要從menu中,選擇Tools→Resources→Extended Model Definitions,選擇你要擴展的模組類型後,即可新增一個全新的定義檔案。
這裡我們舉一個範例,說明使用的方式。例如針對Sybase IQ的資料庫,既有的Table屬性,並沒有設定所在的dbspace,所以我們針對Table屬性,定義一個新的延伸屬性,用來定義該Table所處的dbspace位置。我們按照前述的步驟,選擇Physical Data Models的類型,並定義此屬性檔案的名稱為IQSpace,並且將該檔案存放於PowerDesigner,預設定義檔存放路徑%POWERDESIGNER%/Resource Files/Extended Model Definitions目錄。接下來我們新增一個MetaClasses,並選擇Table物件,表示我們要針對Table新增一個屬性,如圖9。
我們可以在開啟的實體資料模組,從menu中找到Model→Extended Model Definitions,然後選擇「Import An Extended Model Definition」,將IQSpace.xem選擇進來。接下來,我們開啟任一個表格屬性,將會出現一個全新的頁面,叫做「Extende Attributes」,並且裡面已有一個既有屬性設定,叫做「DBSpace」,如圖11所示。
圖11:Extended Attributes設定。
總結 這篇文章內容較為深入,但是要能善加利用PowerDesigner,一定要往這個方向走。尤其前述所提到的MetaModel,是整個PowerDesigner底層設計的核心,諸如前述提到的OLE Automation和VBScript、Resource File以及Extended Model Definitions,另外像是PowerDesigner檔案類型(XML格式),都是圍繞在這個MetaModel上,所以可以多花時間了解。