rational®xde tm 为最流行的集成开发环境(ide)提供了真正的无缝集成的可视化建模环境。rational xde 不但具有自动化生成代码和代码/模型的同步的功能,它还具有其他更多的特性来辅助软件的开发。为了能够更好的利用rational xde,你需要了解xde所提供的强大的j2ee模式和代码模板的能力,你既可以在开发当中应用j2ee模式和代码模板,也可以自己来定义和创建他们。本文将向大家展示如何使用rational xde 所提供的能力完成一个简单的j2ee项目的开发。
一个简单应用的概述 为了展示如何使用rational xde 的独特能力,我们将实现一个简单的web应用的部分功能,这是一个贷款管理的应用系统,系统允许贷款者与贷款管理员执行一些简单的任务。
贷款者
贷款管理员
- 为客户建立一个或多个贷款项目
- 获取有关预定还贷的信息
我们假设我们必须利用已有的基础架构平台:一个ibm websphere 应用服务器和几个数据库。
首先我们可以使用rational xde提供的自由形式的建模能力来不受限制的表达有关方案的方向和思想,比如图1所示。 这种自由形式的图给我们提供了显而易见的好处:他们允许你仍然使用相同的工具,并且使将计划文档集成到项目中变的十分容易。

图1: 自由形式图更加广泛的展示了方案的要点
自动化分析和设计行为 一旦最初的计划被完成,我们就可以开始进行分析与设计工作了。虽然rational xde运行在某一软件开发工具中,但它提供了完成传统的分析与设计活动的所有能力-用例建模,时序图等等。实际上rational xde也提供了rational unified process? configuration for java developers (rcjd), rcjd为java软件的开发提供了已被证明指南。
图2显示了简单的贷款管理系统的初始用例模型,此模型是通过与客户的讨论以及经一步的细化而得到的。

图2:简单的贷款管理系统的用例模型
为了简单起见,我们将只对其中的一个用例进行描述,以展示rational xde在此过程中的作用。我们选择"显示分期付款"这个用例。最初的时序图细化了基本的用例场景,见图3所示。

图3:细化了显示分期付款用例的基本流程的时序图
显然,这是一个高层次上的交互视图,并没有涉及到任何系统内部的工作的细节。rational unified process 建议使用分析级别的类来提供更加细节的内容。见图4。

图4:显示分期贷款用例的细化了的主流程
如何更加精确的描述这个图所表达的内容已经超出了本文的范围,你可以从文章最后所列的前三个资源引用中得到更详细的信息。注意在例子中,我们选择了将边缘类划分为两个页面。一个更为简单的做法是通过单一的元素来接受所有的边缘交互。
使用自定义模式创建模型 你可能对象"四人组"(gang of four)这样的设计模式有一定的了解。这些已经定义好的模式在rational xde中是被支持的,我们将在本文的后面部分展示某些模式的用法。rational xde更进一步的支持了模式,它提供了通过uml来简化定义你自己的模式的能力。这种自定义模式的能力不但允许你实现自己的设计,而且可以自动化一些在建模过程中枯燥乏味的工作,比如产生多个用例流程图。典型的情况下用例拥有不止一个事件流。例如显示分期贷款用例拥有至少两个事件流:一个是成功存档的场景,另一个是当尽力的获取贷款详细信息时操作失败的场景。图5 显示了一个自定义的模式(ucartifacts),它将为我们产生一个主事件流(成功),和两个失败的事件流。

图5:自定义模式(ucartifacts)自动化产生用例的事件流程图
这个简单的模式包含了两个输入参数:ausecase作为用例模型元素的输入,anactor作为角色模型元素的输入。模式用输入参数的名字创建对象,用例的名字被加到boundary, control, or entity名字中。这些对象被用于定义主事件流图和两个可选的事件流图的时序图的框架,这种定义是基于xde所提供的标准的uml图的。为用例创建时序图是十分简单的,你可以通过在模型浏览器中拖/放相关的对象来完成创建时序图的工作。两个可选事件流的每一个都可以使用模式创建的角色、任何的边缘(boundary)对象、控制(control)对象和实体(entity)对象。我们能够通过在不同的对象之间画被需要的消息和删除任何没有参与事件流的分析对象来完成用例图。
实现设计
图6:"显示分期贷款"用例的初始类图

图6显示了"显示分期贷款"用例初始的类图。
这个图显示了实现关键需求的基本角色,但并没有考虑到其他用例实现当中用到的类。为了实现统一的分析建模,我们需要用相同的方法分析其他的用例,然后将结果进行合并。在这个阶段,我们主要的目标是识别和排除重复的类,并且将相似和重叠的功能合并到同一个类中。例如,我们可以将amortization 和makepaymentcontrol进行合并成为一个单独的控制对象,这个控制对象能够处理多个用例。这里我们重点讲述了"显示分期贷款"用例,但并没有显示全部的用例操作。你可以通过本文最后参考资源部分的前三个获取更多的关于用例的知识。
j2ee实现方案 到此为止我们所讨论的几乎是与具体的实现技术无关的。现在让我们来看一下本文之前所讲述的xde的能力是如何被应用到j2ee的开发当中的。通常情况下,我们上面所讨论的分析类将被映射为以下的j2ee技术:
边缘对象(boundary)
- html
- javaserver page(jsp)
控制对象(control)
- servlets
- session beans
- message driven beans
实体对象(entity)
对于在开发你的应用系统时选择正确合理的j2ee技术,这只是一个开始点。因为不同的技术可以被用来实现相似的方案,最合理的选择取决于你的实现细节和系统的需求。
当然,rational xde j2ee模式最酷的部分是每一种模式都被xde完全的实现了。你所要做的就是为你的应用提供业务逻辑。在这部分,我们来了解一下为了使用front controller模式,你所需要知道的具体细节。
建立请求与用例之间的关系 一个请求(例如,一个表单的提交)必须能够被简单的指定给一个特定的用例。在我们讨论的front controller模式的实现中,这个信息应该通过表单中的隐藏域来传达,用例的名字应该在创建表单时被设置。当表单被提交时,控制器简单的解析参数以决定哪一个用例应该被调用。当请求没有被明确的指定某一用例时,通常一个缺省的用例功能被设置用来处理该请求(见下面)。
<form name="form" method="get" action="controller">
<p align="left">
<b><i><u>show amortization</u></i></b>
</p>
<p>
enter the following information about the loan:
</p>
<p>
principal
<input type="text" name="principal" size="8" value="250000">
dollars
</p>
<p>
rate
<input type="text" name="rate" size="8" value="10.0"> %
</p>
<p>
duration
<input type="text" name="terminyears" size="3" value="30">
years
</p>
<input type="hidden" name="usecase" value="showamortization">
<p>
<input id="idcancel" name="cancel" type="reset" value="cancel">
<input id="idok" name="ok" type="submit" value="ok">
</p>
</form>
|
通过控制器(controller)处理请求 对于控制器来说不需要任何的实现工作,模式的实现会根据所需逻辑抽取隐藏的参数,请求相关的helper bean,并且委托helper bean完成处理工作。图7 显示了页面与控制器之间的静态关系。完整的自动产生的请求处理代码,见图7下方的代码清单。

图 7:表单和控制器间的关系
// check if we have a use case name passed on the url.
string usecase = httprequest.getparameter("usecase");
ihelper ihelper = null;
if (usecase != null)
{
// dynamically instantiate a helper and call it.
ihelper = (ihelper)thehelperfactory.create(usecase);
if (ihelper == null) ihelper =
(ihelper)thehelperfactory.createdefaulthelper();
}
else
{
ihelper = (ihelper)thehelperfactory.createdefaulthelper();
}
ihelper.processrequest(httprequest, httpresponse);
|
建立用例和helper bean之间的映射关系 你能够在设计时通过在helperfactory的构造函数中添加映射信息来建立用例和helper bean之间的映射关系。对于"显示分期贷款"用例和"设置贷款"用例来说映射是简单的,请看下面的代码片断。 这段代码仅仅需要在设计时被放置到helperfactory构造函数的适当的、预先定义好的位置上。
// establish showamortization use case mapping to its helper class
usecasename = "showamortization";
classname = "showamortizationhelper";
addmap(usecasename, classname);
// establish setuploan use case mapping to its respective helper class
usecasename = "setuploan";
classname = "setuploanhelper";
addmap(usecasename, classname);
|
本文关键:使用 Rational XDE 加速 J2EE开发
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)
|