统一建模语言(UML)在全世界范围内,成为软件开发项目方面广泛采用的交流标准。在软件项目中,UML 模型现在用于描述以及交流软件产品,它从获取软件结构的需求出发,然后分析,设计,开发,部署应用,以及维护。
但是,在大多数情况下,项目中的信息资源是用文本格式描述的,所以这些资源在 UML 中需要以最佳实践方式表达出来,这样就能与项目的其他成员顺利交流。
例如,在设计团队设计软件时,提交给团队之前,业务过程分析可能需要,将文本形式的业务过程描述转化为 UML 活动图。UML 活动图对于构建人员与设计人员来说,表达的更加清晰与简洁。业务分析员在理解业务过程描述,为每一个业务过程创建活动图时,可能要花相当长的一段时间 。这时候如果有一个能由文本描述自动生成模型的工具,那无疑能有很大的帮助。 而 Rational Modeling Platform. API 通过简单的 Java ™代码,就具有构建一个这种工具的能力
Rational Modeling Platform. 是建立在 Rational 建模方案 的基础之上。它最显著的特性,和建模编辑器,视图以及通过使用平台提供的各种服务,来构建的工具一道,组成了一个 UML 建模器。 该平台基于 Eclipse 技术,这是一个开放源工具集成平台。Rational 建模方案包括了 Eclipse。
Rational Modeling Platform. 结构
Rational Modeling Platform. 覆盖了大量的技术,这些技术可以分成两组: Rational 建模组件以及 Eclipse 组件。接下来的章节,是在编程模型过程中,发挥过一定作用的每个组件的简单概述。
Rational Modeling Platform. 组件
Rational Modeling Platform. 组件涉及到三层: UML Modeler, UML Modeling 层,以及 Domain Modeling 层。
Rational Modeling Platform. API 术语以及概念
在开始使用 Rational Modeling Platform. API 之前,了解怎样管理模型与图非常重要。接下来的列表包含了,一些您需要了解的重要术语以及概念。
下面的 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 中的代码行获得了建模编辑域:
TransactionalEditingDomain editDomain = UMLModeler.getEditingDomain(); |
接下来的一步是模型管理。根据 Rational Modeling Platform. 编程模型,模型管理通过定义与运行命令来完成,这些命令来自与编辑域相关的命令集。最简单的方式,是扩展 RecordingCommand 类,并执行 doExecute() 抽象方法,来完成需要的模型改变。列表 2 中的代码片段,创建了一个新的 RecordingCommand,执行 doExecute() 方法,并通过访问 execute() 方法,来执行命令,该方法位于与 UML Modeler 编辑域相关的命令集。
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 中的代码片段。
//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 的以下可扩展性特性:
通过以下步骤,运行示例代码:
in = new BufferedReader(new FileReader("..."));
|
作者:Ahmed Makady, GMSR 合作伙伴, Gulf Business Machines
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14780914/viewspace-604217/ ,如需转载,请注明出处,否则将追究法律责任。