MDA之路

MDA,UML,XML,Eclipse及Java相关的Blog
posts - 53, comments - 494, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

ArcStyler实战-网上银行系统

Posted on 2005-01-21 17:26 wxb_nudt 阅读(5029) 评论(9)  编辑  收藏 所属分类: MDA技术

因为刚刚建立blog,所以把以前在www.mdachina.net上面写的一个ArcStyler系列文章放上来充实一下,嘿嘿。

ArcStyler实战-网上银行系统

wxb_nudt@163.com

1.1        ArcStyler简介

ArcStyler是德国Interactive Objects Software GmbH公司开发的MDA开发软件,它遵循OMGMDA 规范,纯JAVA 开发,跨平台。是当前最流行的三大MDA工具之一,支持J2EE.NET平台,支持桥接器的动态加载。

本文所使用的实例来自于ArcStyler自带的例子,其例子所在目录为ArcStyler安装目录\ samples\extended\iBank。详细的说明文档(包括需要添加的代码)位于ArcStyler安装目录\doc\Tutorial.pdf

1.2        业务简介

我们的目标是创建一个通用的网上银行实例,其业务包括个人帐户的查询,管理,转帐等等。经过系统分析,我们设计了以下三个组件:

Ø         Account组件,代表帐户,存储帐户的有关信息;

Ø         Transfer 组件,代表一个转帐的过程;

Ø         Bank组件,代表银行,管理此银行中的所有帐户

1.3        技术路线

由于ArcStyler可以同时支持J2EE.NET平台,所以可以同时开发两套基于不同技术路线的系统。为了简单起见,本文中选用的是J2EE平台,组件模型是EJB。我们定义AccountBank组件为entity bean,而TransferSession bean

组件容器选用BEA公司的Weblogic8.1,相应的数据库使用Weblogic自带的PointBase。当然使用其他的技术路线是完全可以的,只要ArcStyler提供了相应的支持。如果使用其他的技术路线,那么在创建系统的时候需要更改一些设置即可。

1.4        开发流程

1.4.1        工具准备

本文的开发工作需要使用的系统以及工具包括:

Ø         Windows2000Windows XP系统(98系统没有测试过);

Ø         ArcStyler41.08build版,下载地址为

http://www.mdachina.net/download/mdasoft/ArcStyler-4-0-108.exe

Ø         Weblogic8.1,下载地址为http://commerce.bea.com/index.jsp(需要在BEA公司网站注册,使用期限1年);

Ø         JBuilder或其他文本编辑工具;

1.4.2        建立工程

当打开ArcStyler的时候,见到的界面如下图:

在右下方我们选择创建WLS8 project,也可以通过菜单File->New->WLS8 project来创建工程。创建工程时只需要指定工程所在目录即可,我们指定为D:\ArcStyler\iBank,工程创建完毕后如下图:

我们可以注意到ArcStyler分为三个部分,最上面是菜单和工具栏,中间是UML工具,最下面是MDA区域。

1.4.3        建立PIM模型

如同使用一些通用的UML工具一样,可以在UML工具区建立系统的PIM模型,包括以下工作:

Ø         创建一个名为iBank的包;

Ø         iBank包中创建一个名为iBankDiagram的类图;

Ø         iBankDiagram图中创建AccountBankTransfer三个组件;

Ø         为上面三个组件添加相应的方法和属性;

完成之后得到的模型如下图:

1.4.4        建立PSM模型

其实在ArcStyler中并没有区分PIMPSM,因为ArcStyler并没有提供从PIMPSM的自动转换工具,它是选择了通过标注的方式来体现PSM的思想。

为了清晰起见,笔者将建模环节区分为建立PIM和建立PSM两个部分,那么建立PSM其实只是给上面的PIM作出一些技术相关的标注,包括以下内容:

Ø         BankAccount组件标注为Entity Bean

Ø         BankAccount组件的永久存储管理模式标注为容器管理;

Ø         Transfer组件标注为Session Bean

标注过程如图:

对于BankAccount这两个组件还需要创建工厂方法和容器类,我们右键选取Bank组件,然后从弹出式菜单中选择Cartridge Wizards->WLS8->Create Collection Type,这样创建了Bank组件的容器类,命名为Bank_Collection;同样创建Account组件的容器类Account_Collection。接下来右键选取Bank组件,选择MDA Cartridge Wizards->WLS8->Create Factory Method来创建工厂方法,将此方法命名为create,并设置相应的参数,如下图:

同样创建Account组件的create工厂方法。

1.4.5          建模部署组件

PSM模型完成以后,要将模型的部署工作也进行建模,本例中的部署建模很简单,只需要进行以下几步就可以完成:

Ø         首先创建一个名为libs的包;

Ø         libs包中创建一个EJBArchive组件,命名为iBank

Ø         从上面的PSM图中将AccountBank以及Transfer三个组件用鼠标拖拽至iBank组件中;

然后我们打开部署组件iBank的属性,可以看到:

1.4.6        配置MDA Cartridage

建模工作全部完成以后,接下来应该是代码生成,不过在代码生成之前,需要进行代码生成器的配置工作。在ArcStyler中,代码生成器以及配置管理方面的工具统一称为MDA Cartridage,它负责具体生成代码以及配置与管理工具。我称之为MDA桥接器。ArcStyler之所以称之为MDA工具,其根本原因就是它支持MDA桥接器的动态加载,使之可以生成不同技术路线的具体代码。

我们这里需要配置的是WLS8的桥接器,我们只需指定代码生成的目录即可,配置画面如下:

1.4.7        模型验证

在配置好了MDA桥接器之后,在代码生成之前,需要进行模型验证,模型验证的操作很简单,在工具栏上选择WLS8:Verify,然后点击它右边的执行按钮,就可以进行验证,验证后会有成功或失败的提示:

模型验证主要是验证以下几个方面的内容:

Ø         结构完整性,检查模型中的组件或类是否重名等等;

Ø         UML约束;

Ø         ArcStyler约束;

Ø         技术可行性(Java约束,EJB容器约束,C#约束,.NET约束),当然技术可行性的验证是基于你选择的技术路线;

1.4.8        代码生成

在模型验证成功以后,就可以进行代码生成工作,选取工具栏上的WLS8:Generate,然后点击它右边的执行按钮,就可以进行代码生成,代码生成的信息会显示在下方的MDA区域内,如图:

1.4.9        代码补充

代码生成之后,我们需要进行代码的补充工作,这是使用ArcStyler的唯一的代码工作,补充的代码主要是Bean方法实现以及测试类中的方法,需要进行代码补充的源代码文件如下:

Ø         AccountBean.java

Ø         TransferBean.java

Ø         BankBean.java

Ø         iBankTestClient.java

补充的内容参看说明文档Tutorial.pdf47Component Code Customization这一节

ArcStyler可以自动生成Jbuilder工程,当我们进行代码的补充工作的时候,可以直接打开生成的JBuilder工程,其中包含所有生成的源代码,也可以直接使用其他代码编辑工具修改。注意:代码的添加和修改都在安全区中,进行反复的代码生成工作并不会被覆盖。

1.4.10    编译

代码补充完成以后,就可以进行编译和运行了。ArcStyler中的编译和运行是采用了集成的Ant工具。在ArcStylerUML工具区的最右边有一个Ant按钮,点击此按钮可以打开Ant工具集,如图:

可以看到Ant工具中的内容是一个表格,表格的每一项包括两列,第一列是编译或者运行的参数,第二列是说明。选择build这一行,然后点击下面的Run按钮,就可以进行整个系统的编译工作。

这里需要注意的是,如果你使用了我们前面提到的ArcStylerWeblogic版本,那么编译会出错,笔者研究发现是由于Weblogicjdk目录名称不符合造成的,例如本机的WebLogic安装目录是C:\bea,那么jdk目录是C:\bea\jdk141_05,但是根据WebLogic的版本不同目录名称可能是C:\bea\jdk141_02C:\bea\jdk141_05。但是由WLS8桥接器生成的编译配置文件中统一为C:\bea\jdk141_03。所以我们这里需要将目录名称改为C:\bea\jdk141_03,编译才可以顺利通过。也许还有更好的方法,但是笔者目前还没有发现。

编译的内容包括:

Ø         编译java源代码,得到class文件;

Ø         EJB组建生成EJB JAR文件;

Ø         EJB容器的部署生成EAR JAR文件;

1.4.11    部署

编译完成之后就可以进行部署工作了,我将部署工作分为以下四步:

Ø         创建Server实例,生成Weblogic8.1中的域,此域包含了本系统服务器的运行环境;

Ø         启动PointBase数据库;

Ø         PointBase数据库中创建EJB组件所需的表,由于EJB采用了CMP模式,所以我们几乎不需要关心数据库方面的工作;

Ø         启动Server

以上四步都是通过ArcStyler中的集成Ant工具完成了,完成手段和前面的编译步骤一样,只需要在Ant工具集中选择相应的参数来运行即可:

     

  部署完成以后,服务器和数据库会全部启动,服务器的部署以及数据库的表会创建完毕,如下图:

1.4.12    运行

部署完成以后,在Ant工具集中选择runClient参数,点击run按钮就可以运行客户端的测试程序,运行结果会显示在ArcStyler下方的MDA区域内,运行的过程是进行一次转帐操作,如图:

1.4.13    脱离ArcStyler环境运行

从编译,部署到运行只是与Ant工具相关,脱离了ArcStyler环境,这些步骤仍然是可以很好的执行。在代码生成的步骤中,已经生成了Ant工具所需的批处理文件build.bat以及配置文件build.xml,利用他们就可以脱离ArcStyler环境进行编译,部署和运行。

Build.batbuild.xml所在目录为ArcStyler目录\工程目录\自动生成的代码目录\组件目录\部署组件目录\桥接器名称。例如本机的相应目录为D:\ArcStyler\iBank\gen\components\libs\iBank\wls8。在此目录中执行批处理文件build.bat,并给出对应的参数,就可以脱离ArcStyler进行编译、部署和调试,例如:

build build是进行编译;

build CreateServerInstance是创建服务器域;

其他依此类推,运行情况如图:

1.5        使用感想

至此为止,完成了网上银行系统服务器端的工作,以及一个简单的测试客户端,通过上面的实例,写几点使用感想。

第一点感想是ArcStyler4.0的方便易用超出了我的想象,在3.0版本中,ArcStyler的自动代码生成等工作还要依赖于RationalRose,但是在这个版本中已经将建模,代码生成,编译运行等功能全部集成了。现在已经可以称为一个较为完整的MDA工具了。

第二点是从ArcStyler的水平我们可以看出MDA技术已经走上舞台,一个技术的成熟与否要看支持它的工具的水平,ArcStyler的成功标志着MDA技术已经正式走上舞台,无论以后MDA的出路如何,至少它反应了这个时代的一股潮流。

第三点是在《应用MDA》书中作者所提到的,桥接器技术将会成为MDA技术的第一个热点。ArcStyler目前只支持J2EE.NET平台,是因为他本身只提供了这两个平台的桥接器,如果其他中间件厂商愿意提供桥接器,那么ArcStyler可以方便的扩充到支持这些厂商的中间件技术

第四点感想来自于一个朋友的置疑,他说做做这种玩具般的结构型系统有用么?能否支持大规模的有动作语义的系统。对于这一点置疑,我的看法是,由于目前流行的建模语言(例如UML)在语义方面的功能还很弱,所以目前的MDA工具几乎只支持结构型的系统,但是我相信随着建模语言的进一步强化,MDA技术会越来越丰富,工具也将越来越好。

1.6        后记

  这个系统并没有完成,系统的客户端仅仅是一个用户测试的简单程序。ArcStyler提供了WebAccessor桥接器专门用于生成丰富的JSP的客户端。希望以后能够与大家共同讨论。欢迎大家多多和我联系,交流MDA技术,联系方法wxb_nudt@163.com

1.7        参考书目

ArcStyler文档Tutorial

UML用户指南》

应用MDA

解析MDA


评论

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-01-21 19:05 by 月光乱乱
楼主辛苦啦

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-03-13 15:47 by
y有英文的没啊

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-03-13 22:05 by wxb_nudt
英文的请直接参考ArcStyler的帮助文档!写得很好!

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-06-16 09:16 by i am lonely
看不到图呀,为什么?

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-11-24 18:32 by tempuser
真佩服楼主对MDA的理解和使用,不知道您是就会用一个MDA工具呢,还是真的理解了 什么叫模型驱动。汗,拜托你有时间看看KEWELL的文章,放心。他的技术文章有些是中文的,相信你能读懂。

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2005-12-31 22:11 by weide
楼上所言KEWELL的文章不知道是哪个,没看过;
对我而言,则一搞不明白模型驱动是什么,事实上按照我的观点,所以的人类活动都是“模型驱动”的--稍后也写个随笔表明这个观点

让我非常困惑的就是所谓模型驱动到底对于实际的工程能有多大的帮助?如果没有模型驱动的工具支持,根本谈不上模型驱动开发

让我汗颜的是:这样的描述,并不能增加我对模型驱动的直观理解……

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2006-03-08 20:19 by cupea
我们原来也用Arcstyler,不过它功能有限制
不能建元模型
也不能实现模型到模型的转换
现在转到RSA上了
觉得MTF也还是比较有前途的

# re: ArcStyler實戰-網上銀行系統  回复  更多评论   

2006-11-25 11:00 by KN
看不到圖呀

# re: ArcStyler实战-网上银行系统  回复  更多评论   

2009-05-30 21:51 by 54
fdffdfdfds

只有注册用户登录后才能发表评论。


网站导航: