设为首页 收藏本站
查看: 1759|回复: 0

[经验分享] 使用 IBM Rational Software Architect 通过编程方式生成 UML 模型

[复制链接]

尚未签到

发表于 2017-5-27 09:32:16 | 显示全部楼层 |阅读模式
本篇文章向您介绍了,怎样使用 IBM® Rational® Software
Delivery Platform API ,来通过结构化文本来生成 统一建模语言(UML)模型,特别是
Rational 软件交付平台的架构管理部分
(简称为 Rational Modeling Platform)。如果您已经有了用于构建
UML 模型的结构化信息,那么这就可以节省您的时间。本篇文章对体系架构与编程模型作出了一个概述。它还提供了一个具体的代码示例,以及运行该示例代码需要的大致步骤。


为什么您需要通过编程方式生成
UML 模型

  统一建模语言(UML)在全世界范围内,成为软件开发项目方面广泛采用的交流标准。在软件项目中,UML 模型现在用于描述以及交流软件产品,它从获取软件结构的需求出发,然后分析,设计,开发,部署应用,以及维护。
  但是,在大多数情况下,项目中的信息资源是用文本格式描述的,所以这些资源在 UML 中需要以最佳实践方式表达出来,这样就能与项目的其他成员顺利交流。
  例如,在设计团队设计软件时,提交给团队之前,业务过程分析可能需要,将文本形式的业务过程描述转化为 UML
活动图。UML 活动图对于构建人员与设计人员来说,表达的更加清晰与简洁。业务分析员在理解业务过程描述,为每一个业务过程创建活动图时,可能要花相当长的一段时间
。这时候如果有一个能由文本描述自动生成模型的工具,那无疑能有很大的帮助。 而 Rational Modeling
Platform API 通过简单的 java ™代码,就具有构建一个这种工具的能力。


Rational 建模结构以及编程模型的简介

  Rational Modeling Platform 是建立在 Rational 建模方案 的基础之上。它最显著的特性,和建模编辑器,视图以及通过使用平台提供的各种服务,来构建的工具一道,组成了一个
UML 建模器。 该平台基于 Eclipse 技术,这是一个开放源工具集成平台。Rational 建模方案包括了
Eclipse。
  Rational
Modeling Platform 结构

  Rational Modeling Platform 覆盖了大量的技术,这些技术可以分成两组: Rational
建模组件以及 Eclipse 组件。接下来的章节,是在编程模型过程中,发挥过一定作用的每个组件的简单概述。
  
图 1. Rational Modeling Platform 结构图

DSC0000.gif
  Eclipse 组件




  • Eclipse 平台。
    Eclipse 技术的核心是 Eclipse 平台
    。该组件包括构建用户界面的框架,管理资源,坐标构建器,集成调试器,以及其他部件。Eclipse
    平台,拥有一个集成开发环境需要的全部基本框架。IBM Rational 建模方案,大量使用了该平台提供的扩展性能。



  • Eclipse Modeling Framework(EMF。
    EMF 是一项用作
    IBM Rational 建模方案中枢的集成技术。



  • UML 2 。
    UML 2 是一个基于 EMF 的 UML 2.1 子结构规格说明的实现。UML
    是一种对分布式对象系统可视化,说明,构建以及记录的图形化定义语言。Rational Modeling
    Platform 为它的 UML 2.1 功能而使用该工具。



  • EMFT Transactions 。
    EMFT
    就是 Eclipse
    Modeling Framework Technology。该框架包含了补充管理基于 EMF 模型的一些技术。EMFT
    Transactions 组件,为建模管理(模型评估以及修改),提供了一个框架。Rational Modeling
    Platform 为所有的模型管理使用 EMFT Transactions 。



  • EMFT OCL 。
    EMFT OCL 是一个基于 EMF 的 OCL 2.0 规格说明的工具。
    Object Constraint Language (OCL)是一种用于描述应用于 UML 模型规则的规范语言。Rational
    Modeling Platform 使用 EMFT OCL ,来对它管理的模型评估 OCL 效果,并在代码完成期间,验证用户输入。



  • EMFT Validation 。
    EMFT Validation 是一种对 EMF
    实例模型的可扩展的验证框架。Rational Modeling Platform 使用 EMFT Validation
    来约束它管理的模型。特别值得一提的是,它使用框架根据官方规格说明来约束 UML 2 模型。



  • EMFT Query 。
    EMFT Query 是一种帮组转移 EMF 模型实例的框架。它提供了一种
    SQL-inspired 系列的类,以组织查询,以及类的层级结构。 OCL 效果在模型转移期间,支持作为一个过滤器。Rational
    Modeling Platform 使用 EMFT Query 来在它管理的模型中,执行搜索。



  • Graphical Editing Framework (GEF) 。
    GEF 为创建图形编辑器提供了一个基础。它包括了基于
    模型-显示-控制 (MVC)的框架,以及一个呈现分系统。Rational Modeling Platform
    在 GMF(Graphical Modeling Framework)组件中,为它的图形工具而直接使用
    GEF 。



  • Graphical Modeling Framework (GMF) 。
    GMF 是一个创建图形化建模编辑器的框架。它包括了两个主要的部分:一个运行时组件,以及一个工具组件。运行时部分提供了,支持可扩展的基于
    GEF 和 EMF 建模图形,所需要的基础。工具部分能够从各种输入模型中,生成一个这样的编辑器。Rational
    Modeling Platform 可扩展的使用 GMF 运行时元素。
  Rational
Modeling Platform 组件

  Rational Modeling Platform 组件涉及到三层: UML Modeler, UML
Modeling 层,以及 Domain Modeling 层。



  • UML Modeler 层。
    UML Modeler 层包含了,管理平台的 UML
    建模环境所需要的类和接口。类 UMLModeler 是一个控制建模器的 UML 模型的生命周期以及概述的切入点。另外,
    该层还为与 UML 模型交流需要的各种类,提供了访问方法。



  • UML Modeling 层。
    UML Modeling 层包括了与 UML 模型与图协同工作的帮助组件。例如,它包括了在模型中帮助找到
    UML 对象的组件,帮组使用 UML 元素种类(例如,获得节点,控制节点,注释)的组件,以及帮组寻找,创建,编辑或者分析图的组件。



  • Domain Modeling 层。
    Domain Modeling 层涵盖了各种对生成任意基于
    EMF 建模编辑器有用的服务。


Rational Modeling
Platform API 术语以及概念

  在开始使用 Rational Modeling Platform API 之前,了解怎样管理模型

非常重要。接下来的列表包含了,一些您需要了解的重要术语以及概念。



  • Rational Modeling Platform 模型 。
    Rational Modeling
    Platform 管理的模型 ,是 EMF 模型的实例。例如, Rational Modeling
    Platform 中的每一个 UML 模型,都是一个基于 EMF 的 UML 模型的实例,该模型可通过
    UML 2 中的org.eclipse.uml2.uml插件获得。该插件是官方 UML 2.0 规格说明的一个工具。UML
    模型通过使用 java 接口来阅读和修改。Model 管理主要通过 UMLModelerJava 类来进行。这是一个显示模型以及概述生命周期操作,并提供建模平台访问方式的实用类.。



  • Rational Modeling Platform 编辑域。
    EMF 引入了一个编辑域(editing
    domain)

    概念,以控制模型的生命周期。一个编辑域管理一系列自包含的相关 EMF 模型,以及修改模型的
    指令(commands)
    。Rational Modeling Platform 的
    UML 建模器使用的编辑域,可通过 UMLModeler.getEditingDomain()方法获得。



  • Commands 。
    一个 command
    对模型的修改具有作用。 一个命令通过
    Command java 接口表达。



  • Command stacks 。
    一个 command stack
    是指与编辑区相关的特性。命令集包含了用于修改模型的命令,这些模型是被编辑域控制的。一个命令集是由 CommandStackJava
    接口表达的。



  • Rational Modeling Platform 图。
    Rational Modeling
    Platform 图基于 GMF 符号模型
    。 一个 GMF 注释提供了描述图的基本对象。它定义节点,边缘,形式,以及其他系列化图框架所需的图形信息。在
    Rational Modeling Platform 中,图是作为注释,而向 UML 模型元素添加的,并持续存在于
    UML 建模文件(.emx 文件)中。Java 接口 IUMLDiagramHelper 用于管理
    Rational Modeling Platform 图。


代码对象示例以及概述

  下面的 java 代码示例,演示了 Rational Modeling Platform API 的使用。该代码是通过
IBM®Rational®Software Architect 中的一个 java Pluglet
显示的 。Pluglets 是一种小型的 java 程序,用于以一种简单而直接的方式,来对工作台作出一些微小的扩展。Pluglets
用 java 写成,并置于一个 pluglet 项目中。 pluglet 可以用工作台的相同示例测试,就像任何其他
java 应用软件一样。Pluglet 作者可以使用 java 开发环境,并且他们可以访问 Rational
Modeling Platform 软件编程接口(APIs)。
  代码示例从一个文本文件中,阅读业务过程步骤,并为 Rational Software Architect
中的该过程,创建一个 UML 活动图框架(每一步过程都对应着一个活动节点)。为了创建这个图,代码使用 Rational
Modeling Platform API ,以管理 Rational Modeling Platform
模型,图以及模型元素。
  代码示例概述

  为了更好的理解代码,建议您浏览一下 pluglet 代码的 UML 序列图。该图以一张 JPG 图片的方式显示,并在
下载
部分中作为文章的附属材料。
  pluglet 是 pluglet 类的 plugletmain() 方法的执行切入点:GenerateActivityDiagram。代码从获得
Rational Modeling Platform UML Modeler 编辑域开始。如上所述,编辑域用于管理
Rational Modeling Platform 模型。列表 1 中的代码行获得了建模编辑域:
  

列表 1. 获得 UML Modeler 编辑域


 



TransactionalEditingDomain editDomain = UMLModeler.getEditingDomain();

  接下来的一步是模型管理。根据 Rational Modeling Platform 编程模型,模型管理通过定义与运行命令来完成,这些命令来自与编辑域相关的命令集。最简单的方式,是扩展
RecordingCommand 类,并执行 doExecute() 抽象方法,来完成需要的模型改变。列表
2 中的代码片段,创建了一个新的 RecordingCommand,执行 doExecute() 方法,并通过访问
execute() 方法,来执行命令,该方法位于与 UML Modeler 编辑域相关的命令集。
  
列表 2. 获得一个特定的 UML 模型并对它进行编辑


 



editDomain.getCommandStack().execute(new RecordingCommand(editDomain, undoLabel) {


protected void doExecute() {


Collection models = UMLModeler.getOpenedModels();

for (Iterator iter = models.iterator(); iter.hasNext();) {


Model model = (Model) iter.next();

out.println(model.getName());


if (model == null )

out.println("Could not open model");

else{


//Start operating on models having the name  "*Test*"

if (model.getName().indexOf("Test") != -1){

createProcessActivityDiagram(model);

}

}

}


}

});

  前
面代码中的 doExecute()方法,获取了所有当前在 Rational Modeling Platform 环境(Rational
Software Architect)环境中打开的模型。接下来,它对这些模型进行迭代,对于每一个以“Test”作为名字一部分的模型,它执行
createProcessActivityDiagram()
方法,传递管理作为一个参数的模型示例。该方法从一个外部文本文档中阅读业务过程步骤示例,并向作为一个参数传递的模型,添加一个新的活动图。新创建的活
动图包含了,为从文本文件中读取的每一个业务过程步骤设置的节点。接下来是一个 createProcessActivityDiagram()
方法的具体解释。
  方法 createProcessActivityDiagram() 做了所有的模型管理工作。最初,它向进行中的模型添加一个新的
UML 包裹 ,package1。接下来,它向新创建的包裹,添加一个新的 UML 活动 ,Activity1,然后它创建一个新的
UML 活动图,ActivityDiagram1,并将其添加至 UML 活动。然后,过程步骤从文本文件中读取,一个活动节点为其中的每一步添加至
Activity1。最后,通过使用 IUMLDiagramHelper 接口方法 layoutNodes(),图中为活动创建的节点,为显示而作出调整。浏览列表
3 中的代码片段。
  
列表 3. 修改 Rational Software Architect
中的 UML 模型并添加包裹,活动,图,以及活动节点



 



//Create a package to hold the activity diagram

Package aPackage = addPackage(model, "package1");


//Add an activity "Activity1" to the package

Activity activity1 = addActivity(aPackage, "Activity1");


//Add an activity diagram to the activity

Diagram diagram = addActivityDiagram(activity1, "ActivityDiagram1");

...


//Read process steps from a file...

in = new BufferedReader(new FileReader("..."));


...


while((actionName = in.readLine())!=null){


//Add an action to the activity

addAction(activity1, actionName);

}

...


//Adjust diagram layout

UMLModeler.getUMLDiagramHelper().layoutNodes(diagram.getChildren(), "DEFAULT");

...

  如果您想得到关于 addPackage(),addActivity(),addActivityDiagram(),以及
addAction() 更多的细节信息,您可以阅读 Rational Modeling Platform
API 文件(参见参考资源
)。完整的代码可由这里获得(参见下载部分
)。


运行示例代码

  先行条件

  该代码是用 Rational Software Architect V7.0.0 开发与测试的。确保在运行代码之前,您已经安装了
Rational Software Architect 的以下可扩展性特性:


  • Pluglets
  • Plug-in Development Environment
  • Eclipse Technology Extensibility
  • Modeling Extensibility
  通过以下步骤,运行示例代码:


  • 切换至 Rational Software Architect 的Modeling
    视角。
  • 向 Rational Software Architect 引入 ModelGenProj

    项目。

    • 选择File > Import

    • Import
      对话框中,选择Other > Project
      Interchange

      并点击Next

    • 在 Import Project Interchange Contents 对话框中,指向文件
      ModelGenProj.zip

      ,检查ModelGenProj
      条目并点击
      Finish




  • 打开GenerateActivityDiagram.java

    件,它位于 com.gbm.rational.support 包裹中。确保 pluglet
    代码定义的过程步骤文件的路径,指向了正确的位置。该位置在列表 4
    所示的代码行中得以定义。您要么可以在代码中编辑文件位置,要么可以在您的文件系统中创建一个文件夹结构,该文件系统在代码中与参考的路径一起编辑。
  
列表 4. 指定输入文件路径


 



in = new BufferedReader(new FileReader("..."));



  • 通过在位于 ModelGenProj > Models > Test
    之下的
    Rational Software Architect Project Explorer 中双击一个名为
    Test

    的模型,来打开它。确保这是 Rational Software Architect
    中唯一打开的模型,因为 pluglet 代码会处理,所有打开的以字符串“Test”作为名字一部分的模型。
  • 在 Project Explorer 中,右击 GenerateActivityDiagram.java

    文件,并选择Run As > Pluglet

  • 在运行代码后,检查您的 UML 模型。您会发现一个新创建的包裹,以及一个创建用于显示 steps.txt
    文件中定义的过程步骤的UML 活动图。该文件包含了一列建模的过程步骤,每一个单独成行。为了在 Project
    Explorer 中检查创建的 UML 图,进入ModelGenProj > Diagrams
    > Test

    并双击 UML 图 package1:Activity1: ActivityDiagram1



致谢

  作者感谢Amr Yassin
对本篇文章作出的检查工作。


下载



描述
名字
大小
下载方法



示例代码与
UML 序列图



Model-gen-proj.zip



47KB



HTTP




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-381586-1-1.html 上篇帖子: 使用 IBM Rational Portfolio Manager 进行业务驱动开发入门简介 下篇帖子: IBM AIX V5.3 系统管理 -- 问题的确定与解决一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表