数据分类管理实践
概述
数据分类管理是工业数字模型驱动引擎-数据建模引擎(xDM Foundation,简称xDM-F)为了方便用户将同维度的数据实例进行分门别类管理、实例数据统一归集的能力。数据分类管理指的是数据实例之间存在的“多对多”关系数据结构,主要包含“数据分类”和“数据分类对象”两个部分。
- 数据分类:“父模型”为“AbstractCategory”的数据实体。“AbstractCategory”是xDM-F用于将用户自定义数据实体设置为数据分类的抽象概念。一个“父模型”为“AbstractCategory”的数据实体表示一种数据分类。
- 数据分类对象:具有“数据分类管理”功能的数据实体,即用户在应用设计态创建数据实体时,在“功能列表”中勾选了“数据分类管理”功能。具有“数据分类管理”功能的数据实体对外提供如下数据分类相关接口。
表1 数据分类管理相关接口 接口名称
描述
addToCategory
将数据分类对象数据实例添加至数据分类数据实例中。
removeFromCategory
将数据分类数据实例从数据分类对象数据实例中移除。
更多数据分类管理的接口信息请参见全量数据服务。
使用说明
- 如果数据实体的父模型具有数据分类管理,该数据实体自动继承数据分类管理,且不可去除勾选。如果后续父模型删除了数据分类管理功能,该数据实体将不再继承父模型的数据分类管理功能,但可以自己重新勾选数据分类管理功能。
- 如果数据实体为Master-Version模型数据实体(即“父模型”选择为“VersionObject”),则只能在Version模型上选择数据分类管理功能,Master模型和Branch模型不支持选择数据分类管理功能。
示例场景
汽车是道路交通管理最重要的一个对象之一,对汽车进行准确分类才能对汽车的车辆属性进行准确地定位,才能对汽车的特点进行合理地分析,才能对汽车进行有效、到位地管理。例如核定车型、车辆等级、车辆类型、车辆用途等。按照不同的分类方法,汽车大致分为如下几种类型。
由此可得知,同一辆汽车按照不同的分类方法,可以分配到不同的分类中。同时,一个分类下包含多辆汽车。
步骤1:创建数据分类
- 登录应用设计态。
- 在左侧导航栏中,选择 ,进入数据实体页面。
- 按照图1所示,依次为汽车创建“数据分类”的数据实体。
图2 创建数据分类
主要配置说明如下,其他配置请保持默认。表2 创建数据分类配置说明 英文名称
中文名称
中文描述
父模型
其他配置项
Drive_mode
驱动方式
包含全轮驱动汽车、前轮驱动汽车和后轮驱动汽车
选择“AbstractCategory”。
保持默认。
Automobile_use
用途
包含乘用车、客车、货车和牵引汽车。
选择“AbstractCategory”。
保持默认。
Power_plant
动力装置
包含内燃机汽车、电动汽车和燃气轮机汽车。
选择“AbstractCategory”。
保持默认。
Class_of_vehicle
等级
包含轿车、微型轿车、普通级轿车、中级轿车、中高级轿车和高级轿车。
选择“AbstractCategory”。
保持默认。
Vehicle_model
车型
包含轿车、MPV和SUV。
选择“AbstractCategory”。
保持默认。
Engine_location
发动机位置
包含发动机前置汽车、发动机中置汽车和发动机后置汽车。
选择“AbstractCategory”。
保持默认。
步骤2:创建数据分类对象
- 在左侧导航栏中,选择 ,进入数据实体页面。
- 单击“创建”,创建一个“汽车”数据实体。
图3 创建数据分类对象
主要配置说明如下,其他配置请保持默认。表3 创建数据分类对象配置说明 类型
配置项
配置说明
基本信息
英文名称
Automobile。
中文名称
汽车。
中文描述
某企业制造的汽车。
父模型
保持默认,此处以“BasicObject”为例。
功能列表
可选功能
添加“数据分类管理”功能。
为篇幅起见,这里不展示汽车的具体属性内容。如需添加数据实体属性请参见管理数据实体属性。
步骤3:管理数据分类对象
- 勾选刚创建的数据实体,依次完成发布数据实体、发布应用和部署应用。 的操作,具体操作请参见
- 待应用完成部署后,登录应用运行态。
- 在“实例界面显示”设置为“是”。
中,找到并编辑刚创建的数据实体,将
即:分别将“Drive_mode”、“Automobile_use”、“Power_plant”、“Class_of_vehicle”、“Vehicle_model”、“Engine_location”和“Automobile”数据实体的“实例界面显示”参数设置为“是”。
- 在图1所示,依次为步骤3创建的数据实体创建如下对应的数据实例。
中,按照图4 “Drive_mode”数据实例
图5 “Automobile_use”数据实例
图6 “Power_plant”数据实例
图7 “Class_of_vehicle”数据实例
图8 “Vehicle_model”数据实例
图9 “Engine_location”数据实例
图10 “Automobile”数据实例
表4 数据实例信息 数据实体
数据实例的唯一编码(ID)
数据实例的中文名称(Name)
Drive_mode
10001
全轮驱动汽车
10002
后轮驱动汽车
10003
前轮驱动汽车
Automobile_use
20001
乘用车
20002
客车
20003
货车
20004
牵引汽车
Power_plant
30001
内燃机汽车
30002
电动汽车
30003
燃气轮机汽车
Class_of_vehicle
40001
轿车
40002
微型轿车
40003
普通级轿车
40004
中级轿车
40005
中高级轿车
40006
高级轿车
Vehicle_model
50001
轿车
50002
MPV
50003
SUV
Engine_location
60001
发动机前置汽车
60002
发动机中置汽车
60003
发动机后置汽车
Automobile
88880
-
88881
-
- 使用curl、Postman或直接编写代码等方式,调用addToCategory接口,将数据分类对象的数据实例添加至数据分类中。
- URI格式
POST http://{Endpoint}/rdm_{appID}_app/services/dynamic/api/{modelNameEn}/addToCategory
- URI参数说明
表5 URI参数说明 参数
是否必填
参数类型
描述
Endpoint
是
String
承载REST服务端点的服务器域名或IP地址。
示例:example.com
appID
是
String
应用ID。
示例:testapp
modelNameEn
是
String
数据分类对象的英文名称。
示例:Automobile
- 请求参数说明
表6 请求Header参数 参数
是否必选
参数类型
描述
X-Auth-Token
是
String
用户的token。
示例:ABCDEFG....
Content-Type
是
String
编码格式。
示例:application/json
表7 请求Body参数 参数
是否必选
参数类型
描述
params
否
Object
参数对象。
params.category
否
Object
数据分类的实例对象。
params.category.id
是
Long
数据分类的实例ID。
示例:10001
params.category.clazz
否
String
数据分类的英文名称。
示例:Drive_mode
params.categoryable
否
Object
数据分类对象的实例对象。
params.categoryable.id
是
Long
数据分类对象的实例ID。
示例:88880
params.categoryable.clazz
否
String
数据分类对象的英文名称。
示例:Automobile
- 响应参数说明
表8 响应Body参数 参数
参数类型
描述
result
String
调用是否成功。
- SUCCESS:成功
- FAIL:失败
data
List
调用的返回结果。
errors
List
异常信息列表。
- 请求示例
将“Automobile”数据分类对象的“88880”数据实例添加到“Drive_mode”数据分类的“10001”数据实例中,其请求示例如下:
POST https://example.com/rdm_testapp_app/services/dynamic/api/Automobile/addToCategory X-Auth-Token: ABCDEFG.... Content-Type: application/json { "params": { "category": { "id": 10001, "clazz": "Drive_mode" }, "categoryable": { "id": 88880, "clazz": "Automobile" } } }
- 响应示例
{ "result": "SUCCESS", "data": [ 1 ], "errors": [] }
- URI格式
- 使用curl、Postman或直接编写代码等方式,调用removeFromCategory接口,将已添加至数据分类的数据实例从数据分类中移除。
- URI格式
POST http://{Endpoint}/rdm_{appID}_app/services/dynamic/api/{modelNameEn}/removeFromCategory
- URI参数说明
表9 URI参数说明 参数
是否必填
参数类型
描述
Endpoint
是
String
承载REST服务端点的服务器域名或IP地址。
示例:example.com
appID
是
String
应用ID。
示例:testapp
modelNameEn
是
String
数据分类对象的英文名称。
示例:Automobile
- 请求参数说明
表10 请求Header参数 参数
是否必选
参数类型
描述
X-Auth-Token
是
String
用户的token。
示例:ABCDEFG....
Content-Type
是
String
编码格式。
示例:application/json
表11 请求Body参数 参数
是否必选
参数类型
描述
params
否
Object
参数对象。
params.category
否
Object
数据分类的实例对象。
params.category.id
是
Long
数据分类的实例ID。
示例:10001
params.category.clazz
否
String
数据分类的英文名称。
示例:Drive_mode
params.categoryable
否
Object
数据分类对象的实例对象。
params.categoryable.id
是
Long
数据分类对象的实例ID。
示例:88880
params.categoryable.clazz
否
String
数据分类对象的英文名称。
示例:Automobile
- 响应参数说明
表12 响应Body参数 参数
参数类型
描述
result
String
调用是否成功。
- SUCCESS:成功
- FAIL:失败
data
List
调用的返回结果。
errors
List
异常信息列表。
- 请求示例
将“Automobile”数据分类对象的“88880”数据实例从“Drive_mode”数据分类的“10001”数据实例中移除,其请求示例如下:
POST https://example.com/rdm_testapp_app/services/dynamic/api/Automobile/removeFromCategory X-Auth-Token: ABCDEFG.... Content-Type: application/json { "params": { "category": { "id": 10001, "clazz": "Drive_mode" }, "categoryable": { "id": 88880, "clazz": "Automobile" } } }
- 响应示例
{ "result": "SUCCESS", "data": [ 1 ], "errors": [] }
- URI格式
相关操作
此外,xDM-F在XDM应用中预置DataCategoryLink关系实体,您可以通过调用该实体的相关接口,用于查询数据分类详细情况。关于DataCategoryLink的接口详细信息请参见全量数据服务。