级别: 中级 Niranjan Vasudevamurthy (niravasu@in.ibm.com), 技术推广人, IBM 印度
2008 年 2 月 02 日 UML(Unified Modeling Language)到 EGL(Enterprise Generation Language)的转换(结合使用 IBM® Rational® Business Developer Extension 和 IBM® Rational® Software Architect), 使您能够以图形化的方式为复杂的应用程序建模。此外,这些转换还可使您无需手工编码而实现 EGL 服务或者能够完全 CRUD (创建、读取、更新和删除)的应用程序。这一功能提高了生产率并且减少了错误的发生。
介绍从 UML 到 EGL 应用程序转换
UML to EGL Transformation(结合使用 Rational Business Developer Extension 与 Rational Software Architect)使您能够以图的形式为复杂的应用程序建模。此外,这些转换还可使您无需手工编码而实现 EGL 服务或者能够完全 CRUD (创建、读取、更新和删除)的应用程序。这一功能提高了生产率并且减少了错误的发生。
您也可以进行起始于关系数据库方案的自动转换。
输出的结果包括:
- EGL SqlRecords 和 DataItems
- 数据存取层
- 基于 JSF (Java™Server Faces)的 JSPs (JavaServer Pages) 和相应的 EGL 处理器
- 用来定义数据库表(如果转换的起始点是一个类图)的 DDL (Data Definition Language) 脚本
 |
编者注
这篇文章的范例使用了 IBM® Rational® Software Architect Version 7.0.0.2、 IBM® Rational® Business Developer Extension Version 7.0 和 Microsoft® Windows® XP Professional SP2。 |
|
模型驱动的开发:从 UML 模型中产生源代码
您可以使用一个转换从一个 UML 模型中产生源代码。在您运行这个转换之前,您需要创建一个转换参数模型文件并且把这些参数应用于这个 UML 模型。
通常,模型驱动的开发(MDD)需要依循以下几步:
- 使用 UML 模型为您的应用程序建模,这个模型应该能够描述此应用程序最高层的功能。
- 选择从 UML 到 EGL 的转换。
- 创建一个转换参数模型(TPM)文件,这个文件与描述如何把 UML 元素翻译成源语言的 UML 模型联系在一起。这个 TPM 文件包含了一些信息,例如:如何把类型和名称转换成源语言,输出代码结构应该如何。
- 运行这些转换并且用输出语言创建代码。
- 编辑并且实现输出代码。
创建一个新的 UML 项目和类图
在运行转换之前,您需要使用 UML 模型为您的应用程序建模。从一个高层的角度来看,创建一个 UML 模型必要的步骤应该包括:
- 运行 Rational Software Architect。
- 创建一个 UML 建模项目和一个默认类图。
- 在类图中添加类,这些类用于从 UML 到 EGL 转换的输入。
运行 Rational Software Architect
- 在 Windows Program 菜单下选择 IBM Rational Software Architect, 或者从 Start 菜单下选择 IBM Software Development Platform>IBM Rational Software Architect > IBM Rational Software Architect, 如图1所示。
图1. 运行 Rational Software Architect
- 此操作会打开 IBM® Rational® Software Delivery Platform,并且初始激活一个工作区。 键入
C:\RBDWrkSpace 然后单击 OK。
创建一个 UML 建模项目
- 选择 File>New>Other>UML Project 新建一个 UML 项目。
- 项目命名为
EGLUMLProject,如图2所示。
图2.创建并且命名项目
- 点击 Next 并从模版中选择 Blank Model 。
- 把模型命名为
EGLUMLModel。
- 默认图置为 Class Diagram 然后点击 Finish,如图3所示。
图3.从一个标准模版中创建一个新的 UML 模型
在类图中添加类
- 在类图中创建两个类 (Student 和 Seminar)。两个类的属性应如表格1说示创建。
表格1.创建带有属性的两个类
| 类名 | 属性 |
|---|
|
Student Class
|
- Student_ID:Integer
- Name:String
- Address:String
- PhoneNumber:Integer
| |
Seminar Class
|
- Seminar_ID:Integer
- Name:String
- Seminar_Fees:Integer
|
- 在这两个类间添加一个一对一的关联关系,如图4所示。
图4. 一对一的关联关系
把 UML 对象映射为 EGL 对象
从 UML 到 EGL 的转换承认一组UML模型来进行这个转换。下面的列表描述了所承认的元素,和在转换过程中元素产生的输出。
-
包: 所有 UML 包可以用来创建一个 EGL 包。
-
类: UML 模型中的一个类代表一个数据库表。对于模型中的每一个类,以下需要被创建:
- EGL SqlRecord
- DDL 中的表定义 (此定义位于 <project> /scripts/data/createTables.sql directory,其中 <project> 是项目的位置)
- 一个库或者服务,其中包含能够进行基于类的创建、读取、更新和删除操作的方法。
- 一个搜索/列表 JSP 和相应的
Pagehandler 提供在数据库表上的查询操作以及显示结果的视图列表的功能函数
- 一个详细的 JSP 和相应的
Pagehandler 显示一个特定数据库行的细节的功能(添加、更新和删除操作也可以通过这些细节页执行)
-
操作: 每个操作元素在数据存取库中产生出一个功能桩模块,并且每个操作参数变成一个 EGL 参数。
-
属性 : 在 UML 模型中的每个属性元素代表数据库中的一列。对于每个属性,将产生以下:
- 一个 EGL SqlRecord Field
- DDL 中的一个列定义
-
关联: 一个关联元素代表了两个端点类间的关系。在转换过程中有着多于两个端点类的关联关系将被忽略。一个关联关系将产生以下:
- DDL 中的外码定义
- 插入数据库表的列(代表关联端)
为转换建立一个 EGL Web 项目
EGL Web 项目包含 EGL 代码,Web页,和一个样本数据库,以上所有形成了应用程序的逻辑、数据和接口。Enterprise Application Resource 工程(EAR 项目)包含了在 Java™ 2 Platform,Enterprise Edition (J2EE)框架上部署一个应用程序的信息,因为此项目将会有一个 Web 接口,您需要创建一个 EGL Web 项目,而不是 EGL 项目。
为转换新建一个 EGL Web 项目
- 选择 File > New > Other。
- 选择 EGL Web Project 并点击 Next。
- 将项目命名为
EGLWeb7。
- 在 EAR Membership 下点击New新建一个 EAR Project。命名为
EGLWeb7EAR, 如图5所示。
- 点击Finish,在被问到时注意不要转换到 Web 视图。
图5. 创建一个 EGL-enabled Web 项目
新建转换参数模型(TPM)文件
这一部分告诉您如何新建一个 TPM 文件。一个 TPM 文件包含描述如何把 UML 文件转换成 EGL 代码的元数据。
通过执行以下步骤创建一个 TPM 文件:
- 右键单击 UML Model (在此例中是EGLUMLModel)并点击 Edit Transformation Parameters, 如图6所示。
图6. 打开编辑对话框
- 在 Create a New TPM file 窗口中,确保您的 UML 文件被列在 Target Model field里。
- 为新的 TPM 文件选择 EGL Web project 。
- 点击Folder区域的 Browse 按钮并选择您之前创建的 EGL Web 项目。
- 点击 Finish 按钮。
图7. 指定新建的 TPM 文件设置
构造 TPM 文件
TPM 文件使您能够定制从一个 UML 模型到源代码的转换。
构造一个 TPM 文件包括以下几步:
- 选择从 UML 到 EGL 的转换
- 指定类转换参数
- 指定类的主键列
- 构造初始类型参数
选择从 UML 到 EGL 的转换
- 在Project Explorer 视图中双击打开 TPM 文件。
- 在编辑器的右上角,选择 Manage applied transformations 复选框。 此操作将打开 Manage Your Transformation Parameters 窗口,如图8所示。
图8. Transformation Parameters Editor
- 3.通过点击Available Transforms列表中的转换,将您想使用的转换移动到 Selected Transforms 列表中,然后点击 Add, 如图9所示。
- 4. 点击 OK。
图9.选择可用的转换
指定类转换参数
图10显示了应用于 UML 类元素的参数。右键点击类选择 EGL Application Transformation。
图10. 指定数据库、页和按钮选项
-
方案名称: 需要转换的表所属的数据库方案的名称。如果一个方案名称没有指定,那么将会使用模型的名称。
-
表名称: 类代表的数据库表名称。如果一个表名称没有指定,那么将会使用类名。
-
纪录名称:代表类的 EGL SqlRecord 名称。如果一个记录名称没有指定,那么将会使用类名。如果缺少类名,转换会使用类名的别名以保证是一个有效的 EGL 名称。
-
列表/搜索页: 加到 JSP 上的标题代表类的列表视图。默认值是
class_name List Page, class_name 是类的名称。
-
细节页: 加到 JSP 上的标题代表类的细节视图。默认值是
class_name List Page, class_name 是类的名称。
-
Add Button: 在 JSPs 中显示在 Add 按钮上的标签。默认值是
Add。
-
Delete Button: 在 JSPs 中显示在 Delete 按钮上的标签。默认值是
Delete。
-
Update Button: 在 JSPs 中显示在 Update 按钮上的标签。 按钮上的标签。默认值是
Update。
-
Search Button: 在 JSPs 中显示在 Search 按钮上的标签。 按钮上的标签。默认值是
Search。
-
每页最大记录行: 在 JSP 列表中每页显示的结果集行的数目。默认值是
5。
为类指定的主键列
- 扩展 Student 类。
- 选择
Student_ID 属性, 然后右键点击 EGL Application Transformation。
- 在 Configure property parameters for EGL Application transformation 部分,选择 Is Key Column 复选框,如图11所示。
图11. 为 Student 指定主键列
- 为 Seminar 类构造 Key 属性。扩展 Seminar 类。
- 选择
Seminar_ID 属性, 然后右键点击选择 EGL Application Transformation。
- 在 EGL Application 转换部分的 Configure 属性参数中选择 Is Key Column 复选框,如图12所示。
图12. 为 Seminar Transformation 指定主键列
为 EGL Application Transformation 构造原始类型参数
在这个目录下的参数用来定义 UML 数据类型,允许您扩展能与一个 UML 属性关联的数据类型。
当转换一个 UML 原始类型元素时指定 EGL Application 使用的参数,遵循以下步骤。
- 扩展在 UML Model 定义里的对象列表下的 Primitive 类型。
- 选择已定义的原始类型,右键点击它选择 EGL Application Transformation。
- 在 Configure primitive type parameters 部分下,选择合适的 EGL 类型。
- 在此例中, 对于在 UML 模型中的 Date 原始类型,选择
DATE
EGL Type, 如图13所示。如果对于一个 UML 原始类型没有合适的 EGL 类型选择,那么将会创建一个默认的 String 类型。
图13. 指定 EGL Application Transformation 使用的参数
运行转换
为了从 UML 模型中产生 EGL 代码,进行以下步骤。
- 1. 点击 Transformation 参数文件中的 Run transformation 按钮,如图14所示。
- 2. 点击 Finish。
图14. 选择其中一个在业务模型中定义的对象
当转换运行后,在 EGL Web Project (此例中是 EGLWeb7)的 EGL Source文件夹中会多出一些新的 EGL 包,包中包含eglumlmodel.data, eglumlmodel.access和 eglumlmodel.primitivetypes.data。
-
eglumlmodel.data 包含了记录。
-
eglumlmodel.access 包包含了类库。
-
eglumlmodel.primitivetypes.data 包包含了数据项。
注意: 在以上包中, “eglumlmodel” 作为产生 EGL 代码的 UML 模型名称的前缀。
此外,用来定义数据库表的 DDL 脚本也会产生。 SQL 文件被存储在 <project>/scripts/data/createTables.sql 目录下, <project> 是这个项目的位置。
最后,基于 JSF 的 JSP 和相应的 EGL Handlers 也会产生。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Niranjan 是一名技术推广人。他在 IBM 的班加罗尔印度软件实验室做有关 Rational 工具的工作。 |
对本文的评价
|