DWF支持的数据类型
在DWF创建实体类后,在数据库中就创建了一个表;表的创建涉及到表体的结构,就是说牵涉到表中的字段数据的格式,因此要对字段的数据类型进行定义,DWF支持的属性类型有以下12类:
类型 | 说明 |
UUID | 128位二进制数,用于表示数据库表的主键 |
Boolean | 布尔开关 |
Integer | 整形 |
Long | 长整型 |
Double | 浮点型 |
String | 字符串 |
Clob | 长字符串。字符大对象类型,能存储比较字符比较大的数据,如能存储复杂的xml或json文件。 |
TimeStamp | 时间戳 |
Date | 日期。与TimeStamp完全相同,目前为了兼容老版本而留存 |
Time | 时间(无日期) |
JSON | JS对象简谱 |
LocalFile | 指向服务器本地文件系统的文件,支持图片、文件、视频、音频类型 |
Timeseries | 时间序列,用于访问时序数据。表示物联网时间序列对象,一般与某个设备的工况象对应。DWF内置IoTDB接口来处理时序数据。 |
实体类支持的系统属性
在DWF中,一个实体类描述一张数据表,表是由系统属性和自定义属性组成。每创建一个实体类,DWF自动会为其创建8个系统属性,并且自动维护这8个属性,这些属性在创建对象时自动为其赋值:
属性名 | 显示名 | 数据类型 | 长度 | 是否为空 | 描述 |
oid | 全局唯一标识 | UUID | 32 | 否 | 对象的唯一标识,系统自动生成 |
id | 代号 | String | 50 | 否 | 用于方便用户查看和记忆的编号,支持数字与英文字符,默认由系统自动生成,也可自定义 |
owner | 拥有人 | UUID | 32 | 是 | 拥有人,用于锁定对象时标明锁定人的代号 |
currentProcess | 当前流程 | UUID | 32 | 是 | 对象进入流程后的唯一编号 |
creator | 创建人 | UUID | 32 | 是 | 对象的创建人 |
createTime | 创建时间 | Date | 0 | 是 | 创建时间 |
lastModifier | 最近更新人 | UUID | 32 | 是 | 最近更新人 |
lastModifyTime | 最近更新时间 | Date | 0 | 是 | 最近的更新时间 |
建模人员在创建新的实体类时,不需要再单独定义类的全局唯一标识、创建人、创建时间等基础属性,只需要对当前实体个性化的属性进行定义,从而避免了大量重复工作。
到这里也许会有疑问,既然DWF使用PostgreSQL这样的关系数据库,为什么不直接使用数据库的Schema来定义格式信息,而要用实体类的概念来描述数据模型?实际上,DWF每新增一个实体类就会在PostgreSQL数据库中建立一张数据表,每绑定一个属性到实体类上,就会在该实体类对应的数据表上创建一列。而之所以不使用关系数据库的数据格式代替数据模型,是出于以下考虑:
- 第一,当前的数据管理已经不是简单的关系数据库能支持所有应用的时代,不同类型的数据库采用的元数据管理方式不同。我们设计了一致的顶层概念体系来描述数据,有利于系统后续的发展。
- 第二,后续的模型定制功能需要有一致的数据描述,防止出现大量不同概念的交叉,分散开发人员的精力。
属性库基本功能
属性库管理: 用来维护DWF中常用的属性信息,在实体类和关联类上可以通过直接绑定属性库中的属性来快速创建类。属性库是相对独立的,与实体类和关联类没有直接引用关系只是用来辅助绑定类属性。属性库管理包括:”新增属性“、”删除属性“、”编辑属性“、”查看绑定类“。其中:
- 新增属性:设置属性的属性名、显示名、属性类型、长度、是否为空、缺省值,维护属性库中属性的描述
- 编辑属性:修改属性的显示名和缺省值
- 删除属性:删除属性库中一条记录
- 查看绑定类:查看同名属性都在哪些类上有使用。
属性库管理建模过程
在DWF数据模型中新增属性有2个路径:
- 第1个新增属性路径是:数据模型-属性库管理-新增属性。
- 第2个新增属性路径是:数据模型-实体类管理-新增实体类-编辑实体类-新增属性绑定。
下面是第1个新增属性入口的建模过程:
- 1. 选择“数据模型"管理,点击”属性库管理“ ;
- 2. 在弹出的界面上点击”新增属性“;
- 3. 在弹出新增属性对话框中定义属性,需要输入:属性名(英文)、显示名(中文)、选择属性的数据类型、定义属性的长度、是否为空、缺省值设置;
- 4. 点击“确认”,即可完成了一个属性的创建。
图-新增属性
(一)属性的操作
属性的增删改从以下两个位置实现:
- 属性库 metaattribute
- 类绑定的属性 class2attribute
实体类/关联类相关的系统属性(creator, lastModifier, rightRev, leftClass, order, rightClass, leftOid, rightOid, lastModifyTime, version, createTime, currentProcess, oid, id, owner)不允许修改。
操作 | 属性库 | 类绑定属性 |
---|---|---|
更新 | 只允许修改显示名和默认值 | |
属性的更新不影响所有被绑定类的列 | 只影响当前类的列 | |
新增 | 新增属性到属性库 | 新增属性到属性库,并绑定当前属性 |
查看 | 查看属性库中属性信息 | 查看类绑定的属性信息(显示名/默认值以当前类绑定的属性为准,可能与属性库不同) |
绑定 | 继承当前属性信息 |
(二)关于英文名命名
提醒注意!!!
1. 属性和类的英文名只能包含字母、数字,长度不超过32个字符;属性名首字母必须为字母;
2. 在DWF系统中类和属性英文名不区分大、小写,如系统将:engineerOid与engineeroid视为同一个属性;
3. DWF 系统中所有的英文名需要以
属性库的应用范围
实体类、关联类都可以基于属性库中已有的属性进行绑定,但类上的属性本身与属性库没有关系。
1)在属性库中新建属性,可以在实体类绑定属性的时候选取属性库中已存在的属性
2)属性库仅仅只是实体类和关联类上属性的参照,与类本身没有任何关系