在右下方我们选择创建WLS8 project,也可以通过菜单File->New->WLS8 project来创建工程。创建工程时只需要指定工程所在目录即可,我们指定为D:\ArcStyler\iBank,工程创建完毕后如下图:
我们可以注意到ArcStyler分为三个部分,最上面是菜单和工具栏,中间是UML工具,最下面是MDA区域。
1.4.3 建立PIM模型
如同使用一些通用的UML工具一样,可以在UML工具区建立系统的PIM模型,包括以下工作:
Ø 创建一个名为iBank的包;
Ø 在iBank包中创建一个名为iBankDiagram的类图;
Ø 在iBankDiagram图中创建Account,Bank,Transfer三个组件;
Ø 为上面三个组件添加相应的方法和属性;
完成之后得到的模型如下图:
1.4.4 建立PSM模型
其实在ArcStyler中并没有区分PIM和PSM,因为ArcStyler并没有提供从PIM到PSM的自动转换工具,它是选择了通过标注的方式来体现PSM的思想。
为了清晰起见,笔者将建模环节区分为建立PIM和建立PSM两个部分,那么建立PSM其实只是给上面的PIM作出一些技术相关的标注,包括以下内容:
Ø 将Bank和Account组件标注为Entity Bean;
Ø 将Bank和Account组件的永久存储管理模式标注为容器管理;
Ø 将Transfer组件标注为Session Bean;
标注过程如图:
对于Bank和Account这两个组件还需要创建工厂方法和容器类,我们右键选取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图中将Account,Bank以及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.pdf第47页Component Code Customization这一节。
ArcStyler可以自动生成Jbuilder工程,当我们进行代码的补充工作的时候,可以直接打开生成的JBuilder工程,其中包含所有生成的源代码,也可以直接使用其他代码编辑工具修改。注意:代码的添加和修改都在安全区中,进行反复的代码生成工作并不会被覆盖。
1.4.10 编译
代码补充完成以后,就可以进行编译和运行了。ArcStyler中的编译和运行是采用了集成的Ant工具。在ArcStyler的UML工具区的最右边有一个Ant按钮,点击此按钮可以打开Ant工具集,如图:
可以看到Ant工具中的内容是一个表格,表格的每一项包括两列,第一列是编译或者运行的参数,第二列是说明。选择build这一行,然后点击下面的Run按钮,就可以进行整个系统的编译工作。
这里需要注意的是,如果你使用了我们前面提到的ArcStyler和Weblogic版本,那么编译会出错,笔者研究发现是由于Weblogic的jdk目录名称不符合造成的,例如本机的WebLogic安装目录是C:\bea,那么jdk目录是C:\bea\jdk141_05,但是根据WebLogic的版本不同目录名称可能是C:\bea\jdk141_02至C:\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.bat和build.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》