站在用户或数据字典使用方的角度来看数据字典有三层:平台级字典,集团级字典,项目级字典
类型相同或信息点相同时(编码相同)项目级字典优先级最高,集团级次之,平台级字典最低,优先级高的会覆盖优先级低的
使用数据字典时明确"使用的字典位于哪个层级"对需求的分析和理解会有很大帮助
集团级数据、集团方案、项目级数据是数据字典内部逻辑概念,项目实际使用过程中应该不会用到这些概念
应用和服务应该关注的是项目级字典和应用订阅内容
对集团变更和项目变更的数据应该定时进行汇总分析,暂定线下人工处理
默认每个类型都有id、name、localId、localName、objType、classCode、projectId,无需订阅,也不能取消订阅
字段 | 说明 | 备注 |
---|---|---|
class | 类型 | |
funcid | 信息点 | |
classCode | 类型定义的code: class.code | |
className | 类型定义的name: class.name | |
infoCode | 信息点定义的code: funcid.code | |
infoName | 信息点定义的name: funcid.name | |
groupCode | 集团编码 | |
projectId | 项目ID | |
schemeId | 集团方案ID | |
类型 class
字段 | 数据类型 | 说明 |
---|---|---|
code | String | 全局唯一 |
name | String | 类型名称 |
aliasCode | String | 类型别名编码, 集团下唯一 |
aliasName | String | 类型别名名称 |
type | String | 类别:平台级common,集团级group,项目级project |
groupId | String | 集团id, type=group或type=project时该字段为集团id,否则为"0" |
projectId | String | 集团id, type=project时该字段为项目id,否则为"0" |
majorCode | String | 专业编码, 上级类型是系统or设备时该字段有值 |
systemCode | String | 系统编码,上级类型是设备时该字段有值,值为系统类型的code |
parentCode | String | 上级类型code |
信息点 funcid
字段 | 数据类型 | 说明 |
---|---|---|
code | String | 信息点编码,同类型下唯一 |
name | String | 信息点名称 |
classCode | String | 类型编码 |
type | String | 字典级别:平台级common,集团级group,项目级project |
category | String | 信息点分类:静态,脉冲,阶段,时序 |
groupId | String | 集团id, type=group或type=project时该字段为集团id,否则为"0" |
projectId | String | 集团id, type=project时该字段为项目id,否则为"0" |
firstTag | String | 一级标签 |
secondTag | String | 二级标签 |
priority | String | 优先级 |
inputMode | String | 输入方式 |
unit | String | 单位 |
dataType | String | 数据类型 |
isMultiple | Boolean | 是否复数 |
isRegion | Boolean | 是否区间 |
formater | String | 数据格式 |
dataSource | String / Object[] | 数据源取值范围/枚举值清单等,根据dataType有不同的内容 |
note | String | 备注 |
subFlag | String | 子分类标记:是否可以按此信息点进行子分类替换,同一类型下目前只支持一个子分类信息点 |
对象 object
字段 | 数据类型 | 说明 |
---|---|---|
id | String | id,全局唯一 |
projectId | String | 项目id,不可为空 |
classCode | String | 类型code,不可为空 |
其他信息点编码 | 根据信息点定义 | |
关系 relation
字段 | 数据类型 | 说明 |
---|---|---|
graphId | String | 图实例id |
rel | String | 边类型 |
from | String | 对象id |
to | String | 对象id |
infos | Object | 关系附加信息 |
数据类型 | 类型名称 | 信息点分类 | 是否复数 | 是否区间 | 数据源 | 格式 |
---|---|---|---|---|---|---|
INTEGER | 整数 | 静态/脉冲/时序/阶段 | true/false | true/false | {$gt:10, $lt:50} | 无 |
DOUBLE | 浮点型 | 静态/脉冲/时序/阶段 | true/false | true/false | {$gte:10.1, $lt:50.9} | 无 |
BOOLEAN | 布尔值 | 静态/脉冲/时序/阶段 | true/false | false | 无 | |
STRING | 字符串 | 静态/脉冲/时序/阶段 | true/false | false | (字符串长度区间){$gt:10, $lt:50} | 无 |
DATETIME | 日期时间 | 静态/脉冲/时序/阶段 | true/false | true/false | {'$gt':'0915', '$lt':'1031'} | 'MMdd' |
ENUM | 单选枚举 | 静态/脉冲/时序/阶段 | true/false | false | 应用数据标准化中定义的数据类型 | 无 |
MENUM | 多选枚举 | 静态/脉冲/时序/阶段 | true/false | false | 应用数据标准化中定义的数据类型 | 无 |
ATTACHMENT | 附件 | 静态 | true/false | false | ||
OBJECT | 对象 | 静态 | true/false | false | 对象id |
说明
把原来的data_type拆解成多个属性,减少了data_type种类数量
使用新的数据类型时,使用新的数据类型时,创建或编辑信息点需要明确指出数据类型、动静分类、是否复数、是否区间、长度(可选)、取值区间(可选)、格式(可选)
Tree、Topology、Route、Function四种类型不再支持(有需求再加回来)
动静分类(静态 STATIC、脉冲 PULSE、时序 SEQUENTIAL、阶段 GRADATION)应该是信息点的一个分类,不是数据类型的属性,放在这里是为了更直观更容易理解
根据动静分类区分动态量或静态量,静态量的值存储的是具体的数据,动态量的值存储的是表号-功能号,动态量包括脉冲量、时序量和阶段量
根据是否区间来判断存储的值是具体值还是区间, 比如INTEGER非区间的值12, 区间值[8, 15],为了区分开闭区间,这里实际存储为{$gt: 12, $lte: 15}, 其中$gt大于,$lt小于,$gte大于等于,$lte小于等于
根据是否复数区分存储的值是单个值还是多个值,单个值存储形式为xxx,多个值存储形式为[xxx, yyy],如果同时是复数和区间,存储的是多个区间
取值区间可以约束值的取值范围,可以通过取值区间做一次校验,如果是区间值,区间也应该是在取值区间的内部
统一用DATETIME表示日期和时间,通过格式设定具体存储的内容,格式由数据字典进行维护,物理世界存储的数据严格符合格式
格式是数据存储的数据格式或文件格式,对于日期时间附件对象等可进行校验
单选枚举Enum单数存储为GC, 复数存储为[GC, JK]
多选枚举MEnum单数存储为[GC, JK], 复数存储为[[GC], [GC,JK]], 多选枚举单数和单选枚举复数的存储形式一样应该不会出现问题,因为实际使用时是和类型(Enum,Menum)一起使用,