UML标准的扩展机制分为几个级别,在元模型级别可以用Profile来扩展,在类元级别可以用Stereotype、Constraint和Comment来扩展,在元素级别可以用tagged value或者叫属性来扩展。

Powerdesigner完全支持这些扩展机制,而且功能非常强大。

首先,在Powerdesigner的所有模型元素中都有内置的Comment属性,并且还可以挂接多个Notes元素,用来描述模型元素。Notes元素还可以是富文本(RTF)格式的。

其次,对于Constraint来说,Powerdesigner提供了Rules集合属性,也就是说一个模型对象可以挂接多个Business Rule对象,而这个Business Rule的类型不单单是Constraint,还包括其他类型,如Definition、Fact、Formula、OCL Constraint、Requirement、Validation。

第三,在元素级别,Powerdesigner提供了可以扩展的单一属性和集合属性,并且可以用Stereotype来给这些属性分类。

最后,在模型对象上,Powerdesigner还提供了File对象,来挂接外部文件,而且外部文件可以嵌入模型,或者是Web上的某个链接。

而PowerDesigner的强大之处还在于元模型级别Profile的扩展。

首先,PowerDesigner模型的元模型的扩展方式是基于Resource File(资源文件)的。Resource File是XML文件,Powerdesigner提供了Resource Editor编辑器可以让用户自定义这些资源文件。而创建模型的时候,是需要选择一个资源文件作为基础的。

资源文件有以下几种类型:

Process languages (.xpl)
Object languages (.xol)
DBMSs (.xdb)
XML languages (.xsl)

Report templates (.rtp)
Report language files (.xrl)
Conversion tables (.csv)

Extended model definitions (.xem)

最强大的就是最后这个扩展模型定义文件,这是因为一个模型可以挂接多个xem文件。

xem包括Generation和Profile,Generation用来定义生产代码时的命令、任务和选项。而Profile正是用来扩展模型元素的。

Powerdesigner用来组织Profile的手段也很强大,在Profile下面可以用以下的因素来扩展,并且这些因素都是可以按级别嵌套的。

Metaclasses (Profile)
Stereotypes (Profile)
Criteria (Profile)
Extended Attributes (Profile)
Extended Collections (Profile)
Calculated Collections (Profile)
Forms (Profile)
Custom Symbols (Profile)
Custom Checks (Profile)
Event Handlers (Profile)
Methods (Profile)
Menus (Profile)
Templates and Generated Files (Profile)
Transformations and Transformation Profiles (Profile)

通过这些扩展机制的组合,可以适合各种建模环境的需求。哇靠,太帅了!