Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1101836
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-28 10:13:41

PowerDesigner拥有强大的建模功能,同时,它也对脚本语言提供了支持。菜单Tools -> Execute Commands -> Edit/Run Script打开的窗口中,可以执行用户编写的VBS脚本,某些情况下,这可以节省大量的重复性工作,达到提高效率的目的。

近期三思遇到一例,某个历史工程在开发之初未应用PD类工作建模,后期维护人员也很多,对象创建混乱,通过PowerDesigner反向工程生成了pdm,但对象描述没有,这个东西如果逐个维护的话,工作量还是非常可观的~~

不过,查看表结构时发现对象的comments相对比较全面,因此后来通过VBS脚本,自动将备注信息写向表列的NAME,极短的时间内就对全部对象做了处理!

具体执行脚本如下:



 Option Explicit
 ValidationMode = True
 InteractiveMode = im_Abort
 
 
 Dim mdl ' 定义当前的模型
 
 '通过全局参数获得当前的模型
 Set mdl = ActiveModel
 If (mdl Is Nothing) Then
    MsgBox "没有选择模型,请选择一个模型并打开."
 ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
    MsgBox "当前选择的不是一个物理模型(PDM)."
 Else
    ProcessFolder mdl
 End If
 
 
 '--------------------------------------------------------------------------------
 '功能函数
 '--------------------------------------------------------------------------------
 Private Sub ProcessFolder(folder)
    Dim Tab '定义数据表对象
    for each Tab in folder.tables
       if not tab.isShortcut then
          if tab.comment <> "" then tab.name = tab.comment '进行判断并赋值
          Dim col '定义列对象
          for each col in tab.columns
             if col.comment <> "" then col.name = col.comment '进行判断并赋值
          next
       end if
    next
   
    '对子包进行递归,如果不使用递归只能取到第一个模型图内的表
    dim subfolder
    for each subfolder in folder.Packages
       ProcessFolder subfolder
    next
 
End Sub


事实上,在PD安装目录下,拥有一个VB Scripts目录,其中包含PD自带的很多VBS脚本,极具参考性,感兴趣的同学不妨研究研究~~


阅读(2827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~