模型驱动开发2

首先我们将一个Class拖放到设计器中,将其命名为Customer,再点击右键选择 Add →Attribute为其添加一个属性,并设置该属性的名称为"Name"类型为String。在属性的类型设置中,你可以输入Delphi支持的类型。同过设置Alias属性还可以在模型中显示中文别名,方便我们进行建模。Class常用的属性如下:

属性名 默认值 描述
Abstract False 抽象类
Sealed False 能否被继承
Alias '' 别名,显示在模型编辑器中的名字
Persistence persistent 是否被存储
DefaultStringRepresentation '' 默认显示字符,可将其设置为关键的属性名


  根据我们在上面需求中所分析出的四个类在编辑器中创建,因为Person和Company都是继承自Customer,所以仅仅描述其不同于Customer的属性即可。完成后设计器内容如图所示:


  完成上述工作后,我们开始对模型间的关联关系进行设计,首先来完成Customer的继承关系。选择Tool Palette中的Generalization/Implementation组件,点击Person模型后拖曳到Customer模型去,这样就建立好了两者间的继承关系,同样建立Company与Customer的继承关系。


  然后开始建立Customer和CarSell之间的主子对应关系,选择Tool Palette中的Association组件,点击CarSell模型后拖曳到Customer模型去,即生成了一个Association。点击选中Association后设置它的属性,修改其name为PayAssociation,End1的 Multiplicity为0..*;End2的Multiplicity为1。Multiplicity属性用于控制模型间的连接关系,其可选属性的含义为:

可选择值 描述
0..1 有零个或一个连接
1..1 有一个且只有一个连接
0..* 有零个或多个连接
1..* 有一个或多个连接

  同理为CarSell和Car建立关联关系,建立完成后的模型图如下:


  到此为止我们的建模工作已经完成,在此之后我们还需要把对象保存发布到数据库中,这就用到了Eco所提供到的PersistenceMapper组件。在Delphi 8 中Eco一共提供了13个组件,它们分别是:


编号 组件名 命名空间 功能
1 CurrencyManagerHandle Borland.Eco.Handles 用来操作当前游标所在的对象实体
2 ExpressionHandle Borland.Eco.Handles 可以将其简单理解为一个数据源组件(TDataset),数据源通过SQL语句向数据库查询记录,而ExpressionHandle更为灵活可控的OCL语句查询对象实例
3 OclPSHandle Borland.Eco.Handles 根据OCL表达式得到元素值,其主要方法为Execute
4 OclVariables Borland.Eco.Handles
定义在OCL中所使用的变量
5 ReferenceHandle Borland.Eco.Handles 建立一个数据库连接,在使用中相当于dbConnection
6 VariableHandle Borland.Eco.Handles 通常和OclVariables一起使用
7 PersistenceMapperBdp Borland.Eco.Persistence 将对象模型通过BdpConnection.进行发布
8 PersistenceMapperXML Borland.Eco.Persistence 将对象模型通过Xml格式.进行发布.
9 PersistenceMapperSqlServer Borland.Eco.Persistence 将对象模型通过SqlServer.进行发布
10 EcoAutoFormExtender Borland.Eco.WinForm 自动生成类信息窗体
11 EcoActionExtender Borland.Eco.WinForm 和Button的EcoAction属性绑定,由按钮事件实现对象方法
12 EcoDragDropExtender Borland.Eco.WinForm 提供Eco对象间在GUI中的拖曳支持
13 EcoListActionExtender Borland.Eco.WinForm 和Button的EcoListAction属性绑定,用以控制CurrencyManagerHandle事件

  其中Extender类组件将标准的.Net组件(DataGrid,TextBox等)和ECO进行了关联,这些Extender组件在由ECO Application Wizard创建完成后就自动生成了这些组件,我们不需要手工创建。我们下面用到的PersistenceMapper,是将对象模型发布到数据库或XML中,同时也将对象实例存储到数据库中。如果我们在项目中需要转换数据库平台,不需要作过多的改变,仅仅将PersistenceMapper类型更改以下就可以,实现了真正的数据库平台无关性。在本演示中我们用PersistenceMapperXML来进行数据的存储,在程序完成需要发布时根据需要再改为其它类型的数据库即可。

  在工程视图中双击打开EcoCRMEcoSpace.pas,并切换到设计视图,从Tool Palette中双击PersistenceMapperXML,添加一个PersistenceMapperXML到设计器中,设置其FileName属性为"EcoCrmData.xml",并将TEcoCRMEcoSpace的PersistenceMapper属性设置为PersistenceMapperXML。


点击放大(上图)


posted @ 2005-08-12 13:10  JustLive  阅读(344)  评论(0编辑  收藏  举报