基于Rational Software Architect开发备忘单(Cheat Sheet)

发表于:2007-05-24来源:作者:点击数: 标签:rationalArchitect基于software
Rational Software Architect (RSA)为了辅助用户开发,提供了很多备忘单(Cheat Sheet)插件。每个备忘单都针对某一特定目的,为用户提供了一个任务序列,用户只需要按照这个任务序列自动地或手动地执行每个任务就可以达成该目的。备忘单可以自动地为您启动完
Rational Software Architect (RSA)为了辅助用户开发,提供了很多备忘单(Cheat Sheet)插件。每个备忘单都针对某一特定目的,为用户提供了一个任务序列,用户只需要按照这个任务序列自动地或手动地执行每个任务就可以达成该目的。备忘单可以自动地为您启动完成某步任务所需要的工具,还可以把如何操作等相关的帮助信息提供给您,避免了您在众多信息中的查找。我们不但可以在开发过程中利用RSA现有的备忘单来指导开发,还可以为自己的工具创建自己的备忘单来指导用户进行使用。本文首先介绍了备忘单的概念、结构和用法,然后通过实例说明了如何基于RSA开发并发布一个备忘单。

Rational Software Architect (RSA)为了辅助用户开发,提供了很多备忘单(Cheat Sheet)插件。每个备忘单都针对某一特定目的,为用户提供了一个任务序列,用户只需要按照这个任务序列自动地或手动地执行每个任务就可以达成该目的。

备忘单可以自动地为您启动完成某步任务所需要的工具,还可以把如何操作等相关的帮助信息提供给您,避免了您在众多信息中的查找。我们不但可以在开发过程中利用RSA现有的备忘单来指导开发,还可以为自己的工具创建自己的备忘单来指导用户进行使用。

本文首先介绍了备忘单的概念、结构和用法,然后通过实例说明了如何基于RSA开发并发布一个备忘单。

1. 引言

RSA基于Eclipse之上为用户提供了多种扩展功能,用户无论是想要开发一个Model的项目,还是想要开发一个Web Service的项目,或者想要开发一个Plug-in的项目等等都可以仅仅基于一个RSA平台,无需切换多个开发平台。在享受了这样的优越的开发环境的同时,RSA的功能的复杂性也给开发者带来了不少麻烦。

如果一个用户想要在RSA工作环境下创建和注册一个WebSphere 6.0数据源,他需要:创建新数据源连接、创建必要的服务器、创建数据源以及在web.xml文件中添加对数据源的引用,必要时可能还需要将企业归档项目添加到服务器上。刚刚接触RSA的人,面对分发复杂的界面,可能根本不知道应该何从下手,根本不知道应该在什么样的视图环境下进行开发和注册,到底应该依循什么样的顺序来创建这个数据源,究竟该如何创建数据源被部署的服务器,等等。简单的几个步骤可能就将一个初学者拒绝在RSA的大门之外了。

值得庆幸的是,RSA除了对完成这些任务提供了完整的帮助文档外,还提供了很多类似生活中的备忘录一样的Cheat Sheet,用来提示用户一步一步的完成某个任务。





回页首


2. Cheat Sheet简介

2.1 概念,作用以及原理

简单的说,Cheat Sheet是一组与任务相关的执行序列,它包括了用户解决某一特定问题所需要执行的一系列复杂的任务,对这些任务Cheat Sheet或者为用户自动执行,或者为用户如何手动的执行这些任务提供指导。

与向导(Wizard)和普通的宏脚本不同,Cheat Sheet是作为插件程序(Plug-in)集成在RSA中的,它的可扩展性更强,客户可以根据自己的需求定制适合自己产品的插件的扩展。另外,Cheat Sheet不仅为用户解决特定问题提供了全面详细的指导,它还有很强的互动性,可以根据用户的选择,做出不同的回应(相关的内容将在2.3节Cheat Sheet的使用中介绍)。下图1给出了引言中所提到的RSA为引导用户创建和注册数据源的Cheat Sheet,它详细的列举了创建和注册数据源所需要的所有步骤,并对每一步如何执行或者自动地(例如:自动的切换到开发数据源的最佳视图-Web开发视图),或者指导性地(指导用户如何确定安全性类型)给出了协助,是不是比自己探索的开发更加简单一目了然呢:


图1 "创建和注册数据源"备忘单清单
图1 创建和注册数据源备忘单清单

2.2 启动Cheat Sheet

在RSA菜单上选择 帮助->备忘单。可用的备忘单都被列在 选择备忘单 列表中,如下图2所示,Cheat Sheet通常被组织到一些类别(Category)中,每个类别代表了一类特定的问题域(例如,引言中提到的"创建和注册数据源" 备忘单就被归类到下图2所示的'Web'类别中。)。没有定义类别的Cheat Sheet或者所属的类别为非法路径时,该Cheat Sheet会被归类在"其他"类别中。如图2所示,Cheat Sheet选择框所示,左框列举了当前RSA所支持的所有Cheat Sheet类别,右框显示了左框中选中的类别中所包含的Cheat Sheet。选择您需要的,点击"确认",相应的Cheat Sheet就会被启动。


图2 选择备忘单列表
图2 选择备忘单列表

2.3 使用Cheat Sheet:

选择了特定的Cheat Sheet后,它会在如下图所示的一个Cheat Sheet视图中显示(如图3),当前RSA版本不支持同时打开多个Cheat Sheet,所以您打开现有的Cheat Sheet的同时,前一个Cheat Sheet会被关闭。


图3 "创建和注册数据源"备忘单部分项展开图
图3 创建和注册数据源备忘单部分项展开图

每个Cheat Sheet都会有一个它的任务执行列表,用来表示实现特定目的所需要执行的步骤的顺序和内容。列表的最开始是对于该Cheat Sheet的简介,它包括和对于整个Cheat Sheet的功能和作用的简单介绍,在简介的结尾处有一个 样子的图标,点击它便可以开始Cheat Sheet的任务执行了。

注:图3中的简介结尾现实的图标是 ,而非 是因为图标 一旦被点击后,此Cheat Sheet就会被注释为已经执行的状态,而 代表了一个重新开始执行整个Cheat Sheet的含义。

被展开的任务项就是Cheat Sheet要完成任务的真正执行步骤,其中可能包含了关于该步骤地介绍,以及多个表示不同含义的图标,每个不同的图标都表示了不同的含义,下表1列出了Cheat Sheet中的所有图标及其用法:


表1 Cheat Sheet图标使用说明
表1 Cheat Sheet图标使用说明




回页首


3 基于RSA开发自己的Cheat Sheet

RSA只为用户提供了有限的Cheat Sheet,值得庆幸的是,RSA为用户提供了订制自己需要的Cheat Sheet的扩展点: org.eclipse.ui.cheatsheets.cheatSheetContent。这里所提到的插件的扩展点基本上是它的组件配置点,使用XML Schema子集描述。一个完成某种抽象功能的插件,比如在工作台显示独立试图等,将会公布一个扩展点,指定每个实现必须完成什么才能被这个插件使用。这些一般需要包含简单的属性,比如窗口标题和图标路径,同时也包含实现具体接口的类名称。在这里的例子中,每个要提供一个视图实现的插件必须声明一个插件描述符属性的ID是org.eclipse.ui.views扩展点的扩展。这个扩展必须指定类实现接口的名为org.eclipse.ui.IViewPart。在运行时,工作台插件查找插件记录中所有的org.eclipse.ui.views的扩展并且将它们提供给用户作为可显示的视图。当用户选择打开某个视图时,工作台插件初始化指定在插件描述符中视图的实现类,并且通过接口org.eclipse.ui.IViewPart来和它交互。这个机制是Eclipse扩展性的基石。插件给其他的插件提供具体的实现,很多都是实现了自身高度抽象,并且将它们作为扩展点提供给其他的插件来完成。

org.eclipse.ui.cheatsheets.cheatSheetContent就是RSA提供给大家的创建自己Cheat Sheet内容的扩展点,要实现自己的Cheat Sheet首先就要创建扩展了这个扩展点的插件项目;然后,遵循该扩展点的规则来定义自己的扩展内容;经过测试后的插件项目,并不能成为您自己运行平台的一部分,要想让它也能和您正在开发程序的平台一起展现给客户,接下来您需要把这个插件作为一个发布项目发布给外界,然后将其导入到您的运行平台。

接下来的章节,让我们一步一步得通过实例仔细介绍整个开发、测试、发布和导入Cheat Sheet插件的过程。

3.1 实例说明

在接下来的章节中,我们将通过对于实现、测试、发布以及加载一个指导用户如何创建自己的Cheat Sheet的全过程的介绍,使您了解并掌握Cheat Sheet的整个开发和应用的过程。

实例所创建的Cheat Sheet的目的是为了互动的协助客户创建自己的Cheat Sheet。它会引导客户创建一个扩展自cheatSheetContent的插件项目;定制插件的内容;测试插件项目;发布Cheat Sheet;导入Cheat Sheet。

开发这个实例与这个实例所展示给客户的内容是一样的,主要包括以下几步:

1. 创建一个扩展自org.eclipse.ui.cheatsheets.cheatSheetContent的插件项目;

2. 定制插件的内容(在本实例里,就是定制指导用户如何创建Cheat Sheet插件的内容);

3. 测试该实例;

4. 发布该实例;

5. 将该实例导入到您的Workbench;

3.2 创建新的插件工程

Cheat Sheet是扩展自org.eclipse.ui.cheatsheets.cheatSheetContent的扩展点的插件项目,要想实现这个扩展点,首先需要通过新建工程向导(如下图4所示)创建一个Cheat Sheet插件工程。


图4 创建一个Plug-in Project
图4 创建一个Plug-in Project

3.3 添加cheatSheetContent扩展点

我们要扩展的扩展点是由org.eclipse.ui.cheatsheets插件提供的,要扩展org.eclipse.ui.cheatsheets.cheatSheetContent,首先要将org.eclipse.ui.cheatsheets插件添加到本插件项目的依赖项中(如图5),然后扩展其中的cheatSheetContent扩展项(所谓'扩展项'就是由扩展点所定义的遵循一定语义规则的元素,它一般都代表了扩展点所提供的可扩展服务中的某类元素。)。cheatSheetContent扩展点为我们提供了两种可扩展的扩展项,它们是: Category和CheatSheet。接下来的3个小节,我们会逐一介绍如何添加扩展点以及扩展项。

添加扩展点的具体操作步骤如下,在plug-in视图中打开新创建插件的plug-in.xml文件:

  • 为'依赖项'中添加一个新的依赖关系: "org.eclipse.ui.cheatsheets",如下图5所示。

    图5添加依赖关系
    图5添加依赖关系

  • 添加Cheat Sheet Content扩展点,选中 扩展 ,添加一个新的可扩展点"org.eclipse.ui.cheatsheets.cheatSheetContent",如下图6。

    图6 添加可扩展点
    图6 添加可扩展点

3.4 定义Category

备忘单可以像日常生活中的文档一样,按照不同的类别分类,可以将您要创建的备忘单加入已经存在的类别,也可以自己创建新的类别。如果不为备忘单选择类别或重新创建新的类别的话,RSA会自动将其归入一个叫做"其他"的默认类别,下面介绍一下如何为我们自己的备忘单创建一个新的类别。

  • 添加类别:右键选中上一步添加的cheatSheetContent扩展点,根据需要新添类别。

    图7 添加类别
    图7 添加类别

  • 设置类别的属性:选中上一步创建的类别,设置类别的id和名称,如果该类别属于某个类别,设置其上层类别的id。

    图8 设置类别属性值
    图8 设置类别属性值

3.5 定义Cheat Sheet内容

在创建了扩展自cheatSheetContent的扩展点的插件,并定义了我们下面即将定义的插件内容所属的类别后,我们终于要进入实例开发的关键步骤了-Cheat Sheet内容的定义。这里要定义的Cheat Sheet扩展项就是我们最终将要呈现在客户面前的Cheat Sheet的相关内容和代码,添加Cheat Sheet扩展项的步骤如下:

  • 添加Cheat Sheet:右键选中上一步添加的cheatSheetContent扩展点,根据需要新Cheat sheet。



    图9 添加Cheat Sheet
    图9 添加Cheat Sheet

    Cheat Sheet所显示的每一步的内容提示和操作选项并不是硬编码到Cheat Sheet的插件程序中,而是写在一个一个独立的XML文件中,cheatSheetContent插件通过读取并解析这些遵循它定义规则的xml文件来显示展示在Cheat Sheet View中的内容。该文件的位置由一个ContentFile属性指明,通常情况下它应该在您的插件工程的根目录下的子目录中。

  • xml文件可以存放在任何插件项目可读的位置,但是,为了维护的方便,建议将其创建在Cheat Sheet Content关联的XML文件的根目录中,如下图所示:



    图10 创建Cheat Sheet的关联xml文件
    图10 创建Cheat Sheet的关联xml文件

  • 创建Cheat Sheet Content关联的XML文件



    图11 创建Cheat Sheet的关联xml文件
    图11 创建Cheat Sheet的关联xml文件

  • 如3.4中添加类别一样,添加一个Cheat Sheet,并设置Cheat Sheet的属性值。其中category中填写Cheat Sheet所属的类别的id值。contentFile中填写与该Cheat Sheet关联的xml文件的相对位置。



    图12 设置Cheat Sheet属性值
    图12 设置Cheat Sheet属性值

  • 编辑Cheat Sheet Content XML文件

    Cheat Sheet Content的XML文件主要包括两类项目:<Intro> 和 <Item>。如下表2所示,<Intro>项用来介绍整个Cheat Sheet的作用,其中<href>链接为用户提供了一个更详细的介绍的html文件,<description>给出了一个简短的介绍。


    表2 编辑Cheat Sheet内容的介绍部分
    <cheatsheet title = "Simple Example for Creating a Cheat Sheet">
                    <intro
                    href = "/exampleCheatSheet/html/intro.html">
                    <description>
                    本备忘单将为您介绍实现、测试、发布以及加载一个Cheat Sheet的全过程。
                    </description>
                    </intro>
                    </cheatsheet>
                    

    <Item>项用来介绍Cheat Sheet中的一步任务的执行方式和描述,如下表3所示, title定义了Cheat Sheet中该任务的名字,Skip的值用来确定该任务是否可以跳过,<action>项用来定义Cheat Sheet为用户自动完成的动作,当用户点击 时,该动作就会被执行。本例中,我们为用户定义了一个自动打开新建窗口的动作,这个动作的实现将在3.6节中介绍。

    <item title="创建一个插件工程" skip="true"> <action pluginId=" exampleCheatSheet" class=" exampleCheatSheet.actions.ExecuteCommand" param1="org.eclipse.ui.newWizard"/> <description> Cheat Sheet本身是一个插件,所以要想开始创建一个Cheat Sheet,首先要先创建一个Plug-in工程。<br/> 如果您的WorkSpace中已经建立好了这样一个插件工程,请直接跳到下一步,如果您还没有为开发Cheat Sheet创建这个插件工程,打开 '新建' 对话框。<br/> 选择'项目',选择'插件开发',然后选择'插件项目'。<br/>添入项目名和一些相关信息。 </description> </item> 表3 编辑Cheat Sheet 单项任务内容

3.6 定制Action

Cheat Sheet可以为用户提供自动完成某些任务的功能,如3.5中我们添加的自动打开新建窗口的动作,这些动作的具体完成需要我们在制作Cheat Sheet时,用代码实现。

  • 创建Action类:实现这些动作的类都继承自org.eclipse.jface.action.Action,并实现了ICheatSheetAction的标准接口,如下图所示。



    图13 创建Action类
    图13 创建Action类

  • 定义动作:具体需要实现什么样的动作,由Cheat Sheet人员自行决定,下图给出了实现打开一个创建窗口的动作的代码实例。


    表4 定义动作
    package exampleCheatSheet.action;
                    import …..
                    public class ExecuteCommand extends Action implements ICheatSheetAction{
                    …
                    /*
                    * 为Cheat Sheet执行传输进来command
                    * eg:当参数是'org.eclipse.ui.newWizard'时,回将'新建窗口'菜单打开。
                    * 关于Command的详细用法,请参见参考文献。
                    * @see org.eclipse.ui.cheatsheets.ICheatSheetAction#run(java.lang.String[],
                    org.eclipse.ui.cheatsheets.ICheatSheetManager)
                    */
                    public void run(String[] params, ICheatSheetManager manager) {
                    System.out.println("ExecuteCommand running");
                    // Check for null command.
                    if (params[0] == null) {
                    System.out.println("params[0] null");
                    }
                    // grab command name to execute
                    String commandName = params[0];
                    // retrieve the command manager
                    ICommandManager cManager =
                    PlatformUI.getWorkbench().getCommandSupport().getCommandManager();
                    // verify that its a valid command
                    if (!cManager.getDefinedCommandIds().contains(commandName)) {
                    System.err.println("no such command");
                    }
                    // get that command object and execute it with its parameters
                    ICommand command = cManager.getCommand(commandName);
                    try {
                    command.execute(null);
                    } catch (Exception ex) {
                    System.err.println("error executing command");
                    }
                    }
                    }
                    

3.7 运行时测试

熟悉PDE(Plug-in Development Environment)的人应该都知道,在当前工作台开发的plug-in并不能直接被当前平台使用,运行时平台(Run Time Workbench)是一个测试PDE的环境,它与您通常使用的开发平台没有别的区别,但它加载了您新创建的plug-in,将它作为运行平台的依赖插件之一。想了解更多关于PDE开发的信息,请参看参考文献

实例讲解至今,我们已经完成了Cheat Sheet的开发,需要在运行时平台对它进行调试,以证明它的正确性,具体操作如下:

  • 启动'调试'模式下的'运行时工作台'。
  • 在'运行时工作台',打开备忘单被选单。



    图 14 在运行时打开备忘单
    图 14 在运行时打开备忘单

  • 找到新建的备忘单。



    图 15 运行时中备忘单的位置
    图 15 运行时中备忘单的位置

  • 测试备忘单中的所有项目:主要检查xml文字、格式是否表述正确,以及在上面章节定义的Action是否能够正确运行。



    图 16 运行时中备忘单的内容
    图 16 运行时中备忘单的内容





回页首


4 发布Cheat Sheet

大家可能已经注意到了第三章中辛辛苦苦建立的Cheat Sheet并不能在您的开发平台中直接使用,而需要在运行时平台中才能被加载,之所以这样,是因为您刚刚开发的这个插件程序还没有被正式发布并且载入到当前的开发工作台。接下来我们就介绍如何将刚刚开发并通过测试的Cheat Sheet插件发布为用户可用的插件。Cheat Sheet可以作为项目的一部分与项目一起发布,也可以独立发布,下面继续以第4部分的实例为例介绍如何独立发布一个Cheat Sheet插件。关于如何发布'更新站点'的详细信息,请参看参考文献

4.1 为Cheat Sheet创建相关的功能部件项目

要将一个Cheat Sheet发布,首先要为它建立一个功能部件插件项目(Features),这里所谓Feature就代表了是您及将要发布出来的插件所能为工作台提供的服务能力,更多关于Features的详细信息,请参看参考文献,下面介绍发布这个Cheat Sheet插件的具体步骤具体操作如下:

  • 创建一个新的Feature plug-in工程,选择'文件->新建->功能部件项目';
  • 在创建过程中,当对话框提示选择"引用的插件"时,选择第3部分创建的Cheat Sheet插件:

    图 18 引用备忘单项目
    图 18 引用备忘单项目

4.2 为Cheat Sheet的功能部件项目创建发布项目

  • 创建一个'更新',在工具栏中选择'文件->新建->插件开发-> 更新站点项目',如下图所示:



    图 19 创建发布站点
    图 19 创建发布站点

  • 设置site.xml的Features值,在plug-in视图下打开新建的update site工程,为site.xml的'要构建的功能部件'属性添加功能。对于本例,也就是4.1中生成的功能项目天加上:



    图 20 引用备忘单的功能部件
    图 20 引用备忘单的功能部件

  • 将新添加的功能拖到"要发布的功能部件"框中,点击"全部构建"编译全部文件:



    图21 发布功能部件
    图21 发布功能部件

  • 至此,实例备忘单的发布项已经成功创建了,这里所谓的发布,并不像JMS的消息那样被发布到了某个特定的Topic,而是指它能够有一个能力,一个被其他人使用的能力。只有具有一定Feature的发布项目才能够被导入到您的工作平台,也只有被导入到您的工作平台的插件功能才能够真正为您所用,还再等什么呢,让我们马上把这个Cheat Sheet导入到我们的工作平台吧。

4.3 安装发布的Cheat Sheet

  • 选择工具栏中的 帮助->软件更新->查找并安装:



    图22 启动安装发布的备忘单
    图22 启动安装发布的备忘单

  • 定位您刚刚发布的Cheat Sheet 的站点的位置,我们刚刚发布的Cheat Sheet运用的就是本机地址,所以我们来选择'新建本地站点'。



    图23 添加要发布的备忘单的站点
    图23 添加要发布的备忘单的站点

    剩下的步骤都选择下一步,最后需要重新启动一下RSA,重新启动后的RSA中就包含了您新创造的Cheat Sheet了。





回页首


5总结

至此,我们的Cheat Sheet开发以及发布之旅也算圆满成功了,您自己的工作台中已经有了一个叫做" How To Create A Cheat Sheet"的Cheat Sheet了。它和我们这片课程的内容一致的介绍了您应该如何从创建插件,到定制扩展点内容,然后测试插件,到最后发布并导入插件的全过程。希望您在今后的学习工作中,多多应用。

原文转自:http://www.ltesting.net