更新时间:2025-04-21 GMT+08:00
分享

树形结构实践

概述

树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要的非线性数据结构。在树形结构中,树根节点没有前驱节点,其余每个节点有且只有一个前驱节点。叶子节点没有后续节点,其余每个节点的后续节点数可以是一个也可以是多个。

为了便于用户维护数据之间的父子关系,工业数字模型驱动引擎(Industrial Digital Model Engine,简称iDME)提供树形结构功能。用户可在应用设计态创建数据实体时,在功能列表中勾选“树形结构”,即可使用此功能。

具有树形结构功能的数据实体会自动生成五个系统属性“ParentNode”“LeafFlag”“RawFullPath”“RootNode”“FullPath”,用户可以在该数据实体的详情页面查看对应属性的信息,具体操作请参见查看数据实体(设计态)查看数据实体(运行态)

同时,具有树形结构功能的数据实体对外提供如下8个树形结构原子接口。系统会基于这些原子接口,自动生成对应的数据服务API。生成的API名称格式略有不同,请以实际应用运行态中“数据服务管理 > 全量数据服务”页面展示的API信息为准。更多详情,请参见全量数据服务

表1 树形结构相关接口

接口名称

描述

BatchAddChildNode

为指定的父节点批量添加指定的子节点。

BatchRemoveChildNode

根据入参的父项ID,批量移除指定的子节点。

GetChildList

获取单层子节点。

GetParent

获取单层父节点。

GetAllParentList

获取指定节点的父节点,直至根节点。

GetRoot

获取根节点/顶层父节点。

Refresh

根据ID刷新指定节点全路径/父节点的整棵子树所有节点的全路径。

DeleteNodeRecursively

递归删除指定节点及其节点下的所有节点。

此接口仅支持具有树形结构功能的单实体使用。

约束与限制

  • 如果数据实体的父模型具有树形结构,该数据实体自动继承树形结构功能,且不可去除勾选。如果后续父模型删除了树形结构功能,该数据实体将不再继承父模型的树形结构功能,但可以自己重新勾选树形结构功能。
  • 如果数据实体为Master-Version模型实体(即“父模型”选择为“VersionObject”),则只能在Master模型上选择树形结构功能,Version模型和Branch模型不支持选择树形结构功能。
  • 当您需要处理大量数据实例并调用DeleteNodeRecursively接口时,建议为“RawFullPath”属性字段创建索引,以提高查询效率和系统性能。

示例场景

常见的应用系统(如ERP、采购、财务等)中都会包含人员管理,而人员管理往往都是以组织的形式进行管理和展示。这种场景下,树形结构是此功能的基础核心,所有人员的权限操作都是依附于组织。

图1 某企业组织架构图

某企业的组织架构如图1所示,根据树形结构进行分析,可得知:

  • 黄色方框的部门没有父节点,即为根节点。
  • 红色方框的部门没有子节点,即为叶子节点。
  • 绿色方框的部门均有子节点。

为此,您可在构建数据模型时,创建一个具有“树形结构”功能的数据实体用于管理此企业的组织。而后在其数据实体实例化时,通过指定“ParentNode”的属性值来实现组织管理。

如下操作步骤仅指导您如何通过可视化页面使用树形结构功能。关于如何通过API方式使用树形结构功能请参见全量数据服务

操作步骤

  1. 登录应用设计态
  2. 在左侧导航栏中,选择数据模型管理 > 数据实体,进入数据实体页面。
  3. 单击“创建”,根据如下主要信息,创建一个具有“树形结构”功能的数据实体(例如OrganizationalStructure)。

    图2 树形结构
    表2 主要参数信息

    类型

    参数

    参数说明

    基本信息

    英文名称

    OrganizationalStructure。

    中文名称

    组织结构。

    中文描述

    某公司的部门结构。

    模型类型

    选择“实体模型”

    父模型

    保持默认,此处以BasicObject为例。

    功能列表

    可选功能

    添加“树形结构”功能。

  4. 选择“属性”页签,新增一个“文本”类型的属性“DepartmentName”,用于记录部门名称。

    图3 属性

  5. 选择“功能配置”页签,在设置规则 > 树形结构栏设置树形结构的规则。

    此处以设置“指定全路径字段”“ID”为例。
    图4 功能配置

  6. 依次完成发布数据实体 > 发布应用 > 部署应用的操作,具体操作请参见发布数据实体发布应用部署应用
  7. 待应用完成部署后,登录应用运行态
  8. 数据模型管理 > 数据实体中,找到并编辑“OrganizationalStructure”数据实体,将“实例界面显示”设置为“是”
  9. 数据模型管理 > 数据实例中,选择数据实体“OrganizationalStructure”,根据示例场景的企业组织架构,依次创建如下数据实例。

    表3 数据实例信息

    唯一编码(ID)

    部门名称(DepartmentName)

    父节点(ParentNode)

    10001

    公司股东会

    -

    20001

    股东会秘书

    10001

    20002

    总经理

    10001

    20003

    监事会

    10001

    30001

    技术总监

    20002

    30002

    营销总监

    20002

    30003

    生产总监

    20002

    30004

    财务总监

    20002

    ......

    ......

    ......

    为篇幅起见,表3仅列出部分数据实例信息。

相关文档