基本概念
术语:外部实体类、外部实体类对象、外部实体类属性、数据源
(一)外部实体类——表(指定的数据连接内已经存在的表)
外部实体类是以现有的数据连接中的数据表为基础,通过属性映射的方式实现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中定义的实体类和关联类,表明以plt_开头,如在DWF定义的零件表:plt_cus_part;
- 第二:在DWF自带的PG中创建的数据库表;
- 第三:在DWF默认PG数据库中的创建的视图。
基本功能
- 外部实体类管理:用于管理基于外部数据连接创建的数据源中存在的表和默认数据源中的表,外部实体类管理的主要功能包含:
- 引入外部实体类:用于创建一个新的外部实体类。
- 删除实体类:用于删除指定的外部实体类。
- 编辑实体类:用于编辑指定的外部实体类,修改相关的信息,对引入的数据列进行调整。
- 查看对象:用于查看指定的外部实体类数据对象。
- 属性库管理:用于创建业务系统中所用的属性,属性库管理包括:新增属性、删除属性、编辑属性、查看绑定类。
注:默认数据源中的表建议只管理通过数据库管理工具创建的表或视图,尽量不要去直接管理dwf自动生成的表和dwf的系统表,避免出现元数据被篡改导致系统不稳定。
外部实体类建模
用于连接已经存在的表或视图,将其定义为DWF的实体类称之为引入外部实体类。进入”数据模型“管理,选择”外部实体类“,引入外部实体类建模骤如下:
- 1.进入“数据模型”管理,选择“外部实体类”;
- 2.点入“引入外部实体类”,弹出“引入外部实体类”定义填写框:
- 数据源:选着“默认数据源”
- 数据库表:选择要引入的数据库表
- 英文名:定义所引入表的英文名称;
- 中文名:定义所引入表的中文名称;
- 主键:如果引入的表有主键,系统会自动选择引入表的主键作为外部实体类的主键;如果引入的表没有主键,用户可选择一个属性做主键;
- 导入属性列:选择导入属性列右侧的下拉箭头,选择引入的实体类的部分属性作为引入外部实体类的属性列;
- 显示名:可在显示名处修改引入属性的显示名称。
- 3. 选择“确认”即可完成“引入外部实体类”的定义过程。
图-引入外部实体类
外部实体类使用场景
场景一:
需求:基于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步的手工操作与已有的系统进行集成外部实体类实现数据集成
评论
钟广友 发表:
应用示例1:基于外部实体类窗口分析“登录日志”
==汇总2023年单日登录次数大于100的人员(按照日期倒序)==
SELECT plt_loginusernameanddate,plt_logincount
FROM
(SELECT plt_username as plt_loginusernameanddate,COUNT(*) AS plt_logincount
FROM
(SELECT CONCAT(plt_createtime,'-&-',plt_username) AS plt_username
FROM
(SELECT CONCAT(plt_username,'/',plt_userdisplayname) AS plt_username,
TO_CHAR(plt_createtime, 'YYYY-MM-DD') ::varchar AS plt_createtime,plt_logtype FROM plt_sys_log WHERE plt_createtime >= '2023-01-01 00:00:00' AND plt_createtime <= '2023-12-31 23:59:59' AND plt_logtype = 'LOGIN' ) tmp1 ) tmp2
GROUP BY plt_username
ORDER BY plt_username DESC
)tmp3
WHERE plt_logincount > 100
应用示例2:基于外部实体类窗口分析“拖拽丢失的”导航菜单
1)plt_fpt_queryoprconfig-导航菜单表:
plt_displayname= 菜单显示名XX;
plt_parentoprid=父菜单OidXX【往上找到根菜单】
plt_modulename =菜单隶属的“模块名”(目前已弱化)
2) plt_mdl_metaclass-菜单所属的模块表
模块名对应了“plt_classname”字段;
该表对应的“plt_appid”为所属应用的id
3)plt_mdl_appinfo-应用详情表
该表“plt_id”字段对应了plt_mdl_metaclass中的“plt_appid”字段;