统一建模语言
(UML) — 由对象管理组织
(OMG) 建立的一个规范 — 是一种可视化建模与设计语言,它在近几年来发展成为复杂的面向对象的软件应用程序提供说明和编写文档的事实上的标准。
UML 建模通过使用图表可视化地表示业务过程流程以及软件和数据组件之间的交互作用。(我们稍后将提供一些这方面的例子。)标准的
UML 图表包括类图表、用例图表、状态图表、活动图表、协作图表、顺序图表和部署图表。
XML 元数据交换 (XMI) — 旨在简化数据集成的另一种 OMG
规范 — 用于表示 UML 对象的一种流行格式;UML 图表可以以 XMI 格式存储,相反,UML 图表也可以从
XMI 文件中创建。为此,XMI 简化了 UML 图表数据的传输,许多 UML 工具支持这种交换功能。不过请注意,目前只能传输图表“后面”的数据,而不能传输可视化的表示本身
— 这些工具的用户仍然需要导入传输的 XMI,然后重新创建 UML 图表。(不过,目前又正在制订一种将允许交换可视化信息的标准。)
在本技术说明中,我将说明从 XSLT 中手动创建 XMI 文件,并将其导入到
UML 工具 (Oracle JDeveloper 10g) 中,然后从 XMI 文件中创建
UML 类图表的方法。
概述
在本教程中,我们将用一个示例 Enterprise JavaBean
(EJB) 部署描述符 ejb-jar.xml 生成一个 XMI 文档。
如果没有自动以 XMI 格式存储 UML 图表的工具,那么可以使用 XSLT
生成 XMI 文档。由示例部署描述符创建的 XMI 文档显示一个 UML 类图表;该图表将表现部署描述符
EJB 的分析视图。该 XMI 文档将在 JDeveloper 10g 中被转换成一个
UML 图表。
预备设置
需要 oracle.xml.parser.v2.oraxsl 类来从
XML 文档中生成 XMI 文档。首先,下载
Oracle XML 开发人员工具包 (XDK),并将 <XDK10g>/lib/xmlparserv2.jar
添加到 Classpath 中。<XDK10g> 是安装 XDK 的目录。然后,下载并安装
JDeveloper 10g。
生成 UML
类图表
如上面所述,UML 类图表显示一个类中的不同实体。在本部分中,我们将通过示例
EJB 部署描述符为一个 UML 类图表创建一个 XMI 文件。
容器管理的持久性 (CMP) 实体 EJB 的示例 ejb-jar.xml
部署描述符指定了一个 EJB 类中的不同的字段和查询方法。由 ejb-jar.xml 创建的 UML 类图表将显示
EJB Bean 类和 EJB 接口中的不同属性和方法。 分析视图 UML 类图表包含一个具有三个水平区域的矩形。较上面的区域显示类名,中间区域显示与
EJB 中的字段相对应的类属性,较下面的区域显示 EJB bean 类和 EJB 接口中的方法。图 1
中显示了一个示例类图表。
|
图 1:UML 类图表 |
UML 类图表中的 XMI 表示包含与 UML 类图表中的类、属性和操作相对应的
XML 元素和属性。下表列出了一个 XMI 文档的一些元素。
元素 |
应用程序 |
常用属性 |
XMI |
XMI 文档的根元素 |
xmi.version="1.2"
xmlns:UML="org.omg.xmi.namespace.UML" |
XMI.content |
包含传输的实际数据 |
- |
XMI.header |
代表 XMI 文档 |
- |
UML.Model |
代表 UML 模型 |
xmi.id、isSpecification、name、isRoot、isLeaf、isAbstract |
UML:Namespace.ownedElement |
包含 UML:Class、UML:Attribute、UML:Operation、UML:Package
和 UNL:Stereotype 元素 |
- |
UML:Class |
代表 UML 类 |
xmi.id、visibility、isSpecification、isRoot、isLeaf、isAbstract、isActive、name |
UML:Attribute |
代表 UML 类属性 |
xmi.id、visibility、isSpecification、ownerScope、name、type |
UML:Operation |
代表 UML 类图表方法 |
xmi:id、name、Visibility、isSpecification、ownerScope、isQuery、concurrency、isRoot、isLeaf、isAbstract |
UML:Parameter |
代表方法参数 |
xmi:id、name、isSpecification、kind |
UML:Package |
代表一个类图表包 |
xmi:id、name、visibility、isAbstract、isRoot、isLeaf |
UML:Stereotype(JDeveloper 当前不支持) |
代表类图表模板(例如 <<entity>>) |
xmi.id、name、visibility、isSpecification、isRoot、isLeaf、isAbstract |
创建一个 XSLT 将示例 XML 文档转换成一个 XMI 文件,该文件包含 UML 类图表在 XMI 和
UML 命名空间内的元素。在 JDeveloper 中选择 File>New
来创建 XSLT。在显示的 New Gallery 框架中,选择 General>XML,然后在列出的项目中选择
XSLT Stylesheet。在本例中,通过一个名为 UMLAnalysisView.xslt
的 XSLT 文件,将示例 XML 文档 ejb-jar.xml 转换成一个 XMI 文档 UMLAnalysisView.xmi。在示例
ejb-jar.xml 中,所有的 CMP 字段都是 String 类型。如果一些字段不是
String 类型,那么需要修改该 XSLT。oraxsl 实用程序用于 XSLT 转换。
>java oracle.xml.parser.v2.oraxsl ejb-jar.xml
UMLAnalysisView.xslt UMLAnalysisView.xmi
在示例代码中提供了所有三个文件。
在 JDeveloper 10g 中显示 UML 类图表 在这一部分中,我们将把 XMI 文档导入到 JDeveloper
中,以生成一个分析视图类图表。首先,启动 JDeveloper 10g 并创建一个项目。
|
图 2:创建一个 JDeveloper
项目 |
要打开一个 XMI 文档,选择 File>New。
|
图 3:打开一个 XML 文档 |
在显示的框架中,从 XMI Import
中选择 General>Diagrams>UML Class Diagrams。选择要从中创建我们的
UML 类图表的 XMI 文档 (UMLAnalysisView.xmi)。
|
图 4:从 XMI Import
中选择 UML Class Diagram |
然后将在 Applications-Navigator 框架中为 UMLAnalysisView.xmi
文档添加一个名为 Class Diagram for XMI Import
的节点。
|
图 5:Class Diagram
XMI Import 节点 |
要显示 UML 类图表,右键单击 Class Diagram
XMI Import,然后选择 Open。
|
图 6:打开 Class Diagram
XMI Import |
然后将显示与 UMLAnalysisView.xmi XMI 相对应的
UML 类图表。
|
图 7:JDeveloper
中的 UML 类图表 |
类图表的较上面的区域包含类名称。中间的区域包含类属性,它们对应 ejb-jar.xml
中的 cmp 字段。还指定了属性的数据类型。底下的区域包含了与 EJB Bean 类和接口中的
create、finder、getter 和 setter
方法相对应的类操作。类操作包含了方法的返回类型。分析视图类图表也可能包含其他特性,如 ejbSelect
和各种业务方法。
结论
正如您所看到的,XMI 格式使得传输用来重建 UML 图表的 UML
图表元数据变得非常方便。如果没有 UML 工具将 UML 图表导入到 XMI 文档中(在将来的 JDeveloper
版本中将支持这一功能),那么可以直接从 XML 文档中创建 XMI 文档(正如我们在本文中做到的那样)。
|