本章重点介绍数据模型管理中关联类的应用。在DWF中,关联类(Relation Class)用于解决多对多关系的数据存储。关联类本质上也是一个实体类,不同之处在于,关联类描述两个实体类之间的关联关系,通过关联类的属性记录一个来源实体类(左类)和一个目的实体类(右类)之间的关系。本章通过电商平台上的订单到商品的关联类来说明关联类的定义和应用。
1.关联类的理解
举例:电商订单
电商平台上描述一个用户购买商品的清单称之为订单。所以电商平台上就有以下二个实体类:。
...
- 创建关联类:设置关联类名称、指定左类的实体类、指定右类的实体类、属性等;
- 创建关联类实例:系统自动生成关联类实例的代码,选择左右类的实例,输入属性值。例如选择一个订单,选择该订单需要购买的商品,输入本次购买该商品的数量;
- 一对多关系:1个左类实例对应n个右类实例,生成n个同类关联类实例,例如同一个订单包含n种商品;
- 多对一关系:m个左类实例对应1个右类实例,生成m个同类关联类实例,例如同一个商品对应m个订单。
2. 基本概念
2.1 关联类
通过上述网购的例子可以看到,关联类是被常用到数据关系的描述,关联类用于解决多对多关系的数据存储,描述两个实体类之间的关联关系,记录了一个来源实体类(左类)和一个目的实体类(右类)所产生的关系。
...
属性名 | 显示名 | 数据类型 | 长度 | 是否为空 | 备注 |
rightRev | 右对象迭代标识 | UUID | 32 | ||
leftClass | 左对象类 | String | 50 | 否 | 记录左类的类名 |
order | 序号 | Integer | 9 | ||
rightClass | 右对象类 | String | 50 | 否 | 记录右类的类名 |
leftOid | 左对象标识 | String | 32 | 否 | 记录左类绑定的对象oid |
rightOid | 右对象标识 | String | 32 | 否 | 记录右类绑定的对象oid |
2.2 关联类对象
关联类对象和实体类不同,关联类对象除自身以外还包含左对象和右对象引用。
在电商购物例子中,订单类(左类)下的具体订单就是左对象,比如你网购的订单,商品类(右类)的具体商品就是右对象,比如你网购订单购买的商品。
2.3 关联类属性
关联类对象也可以绑定属性,绑定方式同实体类。
很多情况下数量为关联类的属性,在订单例子中,用订单和商品关联类的关系属性—数量number来记录某订单所购买该商品的数量。
2.4 关联类系统属性
关联类在创建时需要选择左类和右类,这些类只允许从已创建的实体类中选择。每创建一个关联类,系统自动会为其增加12个内置系统属性,其中4(5)个系统属性与左右实体类相关,且这些属性在创建关联对象时自动赋值。
...
属性名 | 显示名 | 数据类型 | 长度 | 是否为空 | 备注 |
---|---|---|---|---|---|
creator | 创建人 | UUID | 32 | 关联类自身属性 | |
lastModifier | 最近更新人 | UUID | 32 | 关联类自身属性 | |
rightRev | 右对象迭代标识 | UUID | 32 | 预留属性 | |
leftClass | 左对象类 | String | 50 | 否 | 自动赋值 |
order | 序号 | Integer | 9 | 关联类自身属性,预留属性 | |
rightClass | 右对象类 | String | 50 | 否 | 自动赋值 |
leftOid | 左对象标识 | String | 32 | 否 | 自动赋值 |
rightOid | 右对象标识 | String | 32 | 否 | 自动赋值 |
lastModifyTime | 最近更新时间 | Date | 0 | 关联类自身属性 | |
version | 版本号 | Integer | 10 | 关联类自身属性,预留属性 | |
createTime | 创建时间 | Date | 0 | 关联类自身属性 | |
oid | 全局唯一标识 | UUID | 32 | 否 | 关联类自身属性 |
2.5 工单-零件的关联类
在设备管理的案例中,我们需要在工单中记录维修需要用到零件(可能是若干种零件)及数量,为了完成这个功能,我们需要创建工单到零件的关联类,其中:
...
- 新建关联类:创建一个关联类。
- 删除关联类:删除关联类。
- 编辑关联类:编辑关联类,并进行关联类数据的绑定。
- 导出模板:导出关联类数据模板。
- 导入数据: 将关联类数据进行导入。
图-关联类管理
4.建模过程
4.1 创建关联类
关联类创建过程:
- 1. 进入“数据模型”,选择“关联类管理”;
- 2. 点击“新建关联类”,弹出新建关联类的对话框,输入关联类的:英文名(WorkOrderToPart)、显示名(工单到零件);
- 3. 选择左类(工单WorkOrder);
- 4. 输入左类角色(工单);
- 5. 选择右类(零件Part);
- 6. 输入右类角色(零件);
- 7. 点击“确认”,即可完成关联类的创建。
图-新建关联类
4.2 关联类属性绑定
与实体类属性绑定一样,关联类创建后也同样需要绑定关联类的属性,关联类的属性通常为数量,关联类属性绑定建模过程:
- 1. 进入“数据模型”,选择“关联类管理”,点击“编辑关联类”,弹出编辑关联类的对话框;
- 2.确认左类的角色,此处可以更改左类角色;
- 3.确认右类的角色,此处可以更改右类的角色;
- 4.选择“新增属性绑定”,定义属性,该关联类属性为“数量”;
- 5.点击“确认”,即可完成关联类属性(数量number)的绑定。
图-关联类属性绑定
5. 关联类数据导入
对于关联类而言,导入数据的格式要求更严格一些。需要确保导入数据中含有正确的左右类名称和左右类全局唯一标识。类名与相应的实体类名称一致,全局唯一标识也与对应实体类中实例的全局唯一标识相同。
如果需要导入的属性太多,比如设备类,可以通过‘导出模板’按钮批量选择需要导入的属性,DWF会生成一份含有对应属性名称的.xlsx空表格,只需将数据粘贴或通过脚本批量写入到对应列即可。
6.小结
本章介绍了数据模型中关联类的应用背景和关联类的基本概念,关联类解决的是多对多的应用(某父对象也可关联多个子对象,某子对象可关联多个父对象)的关系,关联类的基本概念包括:
...
最后,结合设备管理介绍了工单到零件关联类的应用场景和数据模型。设备管理零件到零件的关联类应用将在第六章数据模型高级中介绍。
7.案例演示
演示视频:新建工单-零件关联类的演示视频。