树形结构实践
概述
树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要的非线性数据结构。在树形结构中,树根节点没有前驱节点,其余每个节点有且只有一个前驱节点。叶子节点没有后续节点,其余每个节点的后续节点数可以是一个也可以是多个。
为了便于用户维护数据之间的父子关系,工业数字模型驱动引擎(Industrial Digital Model Engine,简称iDME)提供树形结构功能。用户可在应用设计态创建数据实体时,在功能列表中勾选“树形结构”,即可使用此功能。
具有树形结构功能的数据实体会自动生成五个系统属性“ParentNode”、“LeafFlag”、“RawFullPath”、“RootNode”和“FullPath”,用户可以在该数据实体的详情页面查看对应属性的信息,具体操作请参见查看数据实体(设计态)和查看数据实体(运行态)。
同时,具有树形结构功能的数据实体对外提供如下8个树形相关接口。
接口名称 |
描述 |
---|---|
GetAllParentList |
获取指定节点的父节点,直至根节点。 |
BatchRemoveChildNode |
根据入参的父项ID,批量移除指定的子节点。 |
BatchAddChildNode |
为指定的父节点批量添加指定的子节点。 |
GetChildList |
获取单层子节点。 |
GetParent |
获取单层父节点。 |
Refresh |
刷新所有节点。 |
GetRoot |
获取根节点/顶层父节点。 |
更多树形结构的接口信息请参见全量数据服务。
约束与限制
- 如果数据实体的父模型具有树形结构,该数据实体自动继承树形结构功能,且不可去除勾选。如果后续父模型删除了树形结构功能,该数据实体将不再继承父模型的树形结构功能,但可以自己重新勾选树形结构功能。
- 如果数据实体为Master-Version模型实体(即“父模型”选择为“VersionObject”),则只能在Master模型上选择树形结构功能,Version模型和Branch模型不支持选择树形结构功能。
示例场景
常见的应用系统(如ERP、采购、财务等)中都会包含人员管理,而人员管理往往都是以组织的形式进行管理和展示。这种场景下,树形结构是此功能的基础核心,所有人员的权限操作都是依附于组织。
某企业的组织架构如图1所示,根据树形结构进行分析,可得知:
- 黄色方框的部门没有父节点,即为根节点。
- 红色方框的部门没有子节点,即为叶子节点。
- 绿色方框的部门均有子节点。
为此,我们可在构建数据模型时,创建一个具有“树形结构”功能的数据实体用于管理此企业的组织。而后在其数据实体实例化时,通过指定“ParentNode”的属性值来实现组织管理。
如下操作步骤仅指导您如何通过可视化页面使用树形结构功能。关于如何通过API方式使用树形结构功能请参见全量数据服务。
操作步骤
- 登录应用设计态。
- 在左侧导航栏中,选择 ,进入数据实体页面。
- 单击“创建”,根据如下主要信息,创建一个具有“树形结构”功能的数据实体(例如OrganizationalStructure)。
图2 树形结构
表2 主要参数信息 类型
参数
参数说明
基本信息
英文名称
OrganizationalStructure。
中文名称
组织结构。
中文描述
某公司的部门结构。
模型类型
选择“实体模型”。
父模型
保持默认,此处以BasicObject为例。
功能列表
可选功能
添加“树形结构”功能。
- 选择“属性”页签,新增一个“文本”类型的属性“DepartmentName”,用于记录部门名称。
图3 属性
- 选择“功能配置”页签,在 栏设置树形结构的规则。
此处以设置“指定全路径字段”为“ID”为例。图4 功能配置
- 依次完成发布数据实体、发布应用和部署应用。 的操作,具体操作请参见
- 待应用完成部署后,登录应用运行态。
- 在“OrganizationalStructure”数据实体,将“实例界面显示”设置为“是”。 中,找到并编辑
- 在“OrganizationalStructure”,根据示例场景的企业组织架构,依次创建如下数据实例。
中,选择数据实体图5 创建数据实例
表3 数据实例信息 唯一编码(ID)
部门名称(DepartmentName)
父节点(ParentNode)
10001
公司股东会
-
20001
股东会秘书
10001
20002
总经理
10001
20003
监事会
10001
30001
技术总监
20002
30002
营销总监
20002
30003
生产总监
20002
30004
财务总监
20002
......
......
......
为篇幅起见,表3仅列出部分数据实例信息。