术语:外部实体类、外部实体类对象、外部实体类属性、数据源
外部实体类是以现有的数据连接中的数据表为基础,通过属性映射的方式实现DWF对其他数据表的管理;新建一个外部实体类需要选择数据源(外部数据连接)、Schema(默认为public)、数据库表、英文名、显示名、主键(支持int、Long、String、UUID);
外部实体类原则上也是实体类的一种,只是不用产生数据表而是映射的已经存在的数据表。
元素 | 英文名 | 备注 |
---|---|---|
数据源 | dataSourceOid | 类的名称,系统内唯一标识,英文字母,不允许被更改。 |
Schema | zoneName | Schema+“.”+数据库表生成zoneName |
数据库表 | ||
英文名 | ClassName | 类的名称,系统内唯一标识,英文字母,不允许被更改。 |
显示名 | DisplayName | 显示名称,可以用中英文。 |
主键 | primaryKey | 与DWF中的oid对应,DWF要求每一条数据都需要有oid属性作为主键,主键必须保证唯一 |
导入属性列 | packagePath | 映射到DWF中的属性 |
外部实体类对象是外部实体类对应的数据表中具体的一行数据。
外部实体类的属性是外部连接对应的数据表中字段的名字,区分大小写;在DWF中可以定义属性字段的中文名便于管理。
注:外部实体类的属性可以根据实际需要选取外部数据表的字段。
外部实体类中的数据源主要来源于数据模型中定义的外部数据连接,直接支持的就是Postgre。如果要有其他类型数据库要利用外部实体类做集成,可以利用SchemaN的能力提取数据模式自动生成外部实体类即可。
外部实体类的默认的数据源是当前DWF系统对应的数据库,该数据库不允许通过外部数据连接进行管理,在外部实体类中也只开放了默认数据源的public的Schema。
DWF中PG默认数据连接的数据来源包括三种情况:
注:默认数据源中的表建议只管理通过数据库管理工具创建的表或视图,尽量不要去直接管理dwf自动生成的表和dwf的系统表,避免出现元数据被篡改导致系统不稳定。
用于连接已经存在的表或视图,将其定义为DWF的实体类称之为引入外部实体类。进入”数据模型“管理,选择”外部实体类“,引入外部实体类建模骤如下:
图-引入外部实体类
场景一:
需求:基于DWF已经创建了相关的实体类、外部实体类并且维护了一批数据,比如订单数据,如果想要统计订单数量、订单金额,每月订单数量,每月订单的总金额等信息。
分解(实现步骤):
1)在DWF数据库中创建视图:利用SQL中的聚合函数根据需求编写SQL脚本并将编写好的SQL脚本转为视图,记录下视图名称,注意视图中也需要包含一个唯一主键字段以便满足外部实体类配置主键;示例:select uuid_generate_v1(),sum(plt_state) from plt_mdl_metaclass;;
2)基于DWF创建外部实体类:打开外部实体类,选择引入外部实体类,选择默认数据源,在数据库表位置选择第一步新建的视图,配置英文名、显示名,设置主键及导入属性列,点击确认生成外部实体类成功;
3)借助建模工具进行表单定制展示数据:选择新建的外部实体类,新建表单即可。
场景二:
需求:已有系统(如仓储物流系统WMS),现在需要在DWF中管理WMS系统的部分数据(要做数据集成)。
分解(实现步骤):
1)获取WMS系统的数据库连接字符串,基于Postgre的FDW能力,创建Foreign Data Wapper
2)创建外部表(Foreign Tables),设置外部表属性
3)基于DWF创建外部实体类:打开外部实体类,选择引入外部实体类,选择默认数据源,在数据库表位置选择第二步创建的外部表,配置英文名、显示名,设置主键及导入属性列,点击确认生成外部实体类成功;
3)借助建模工具进行表单定制展示数据:选择新建的外部实体类,新建表单即可。
注:DWF后续版本会增加数据服务的能力,通过数据服务向导一步一步通过可视化配置即可实现数据集成,替代1~3步的手工操作与已有的系统进行集成外部实体类实现数据集成