3.8 元素关系图
资产目录树表达的是元素之间的层级归属关系——集团、工厂、产线、设备、测点的层层嵌套。但在真实工业现场,元素之间还存在大量非层级的横向联系:一台清水池控制一台出水泵房、两台设备互为冗余、一套联锁保护另一套设备、一个公共测点影响多条工艺线。这些关系无法塞进树里,却恰恰是理解设备之间"谁影响谁、谁控制谁"的关键。
元素关系图(关联元素视图)就是为此而生:它以某个元素为中心,把该元素与周围元素之间的控制、联锁、冗余、故障影响、生产过程等工业语义关系,绘制成一张可交互的局部关系网络图。您可以直观地看到当前元素维护了哪些关系、又被哪些元素所关联,并沿着关系一步步向外探索。
元素关系图展示的是元素与元素之间的工业语义关系,它不同于元素树中的「强引用 / 弱引用 / 组合引用」等层级归属关系。这些关系由元素属性中的「元素引用(Element)类型属性」承载,并附加了关系方向与关系类型(枚举值)来描述业务语义。关于引用关系与关系类型的背景,参见 3.5 数据关联与工业本体。
3.8.1 打开元素关系图
- 在 Explorer 左侧元素树中,点击选中一个元素,主工作区打开该元素的详情视图。
- 在详情面板顶部的选项卡中,点击 关联元素。
页面随即以该元素为中心,加载并渲染关系图。被选中的元素称为中心元素,在图中以高亮样式显示。
「关联元素」选项卡只在选中某个具体元素后出现,因此必须先选中一个元素,才能进入元素关系图页面。
3.8.2 页面布局
元素关系图页面由三部分组成:
| 区域 | 位置 | 作用 |
|---|---|---|
| 工具栏 | 顶部 | 展示层级、关系类型、关系方向三个筛选器,以及编辑、保存、刷新、折叠面板等操作按钮 |
| 关系图画布 | 中部 | 以中心元素为核心的 G6 关系网络图,节点为元素、边为关系 |
| 右侧面板 | 右侧 | 展示当前选中元素的名称、路径、描述及其直接关系列表 |
3.8.2.1 节点与边的含义
图中的每个节点代表一个元素,每条边代表元素之间的一条关系:
- 中心元素:以突出颜色高亮显示,是整张图的视角中心,不可删除。
- 一度元素:与中心元素直接相连的元素,以正常实体样式显示。
- 二度及以上元素:通过间接关系可达的元素,以弱化样式显示,仅可查看与跳转。
- 已删除元素:关系仍存在、但目标元素已被删除,以警告色虚线显示,名称显示为「元素已删除」。
边上的箭头方向由关系方向和关系维护者共同决定(出发、到达、双向、无方向)。详见 3.8.3.2 关系方向。
3.8.2.2 节点名称显示
元素名称在节点圆内居中显示,最多两行,并根据名称长度自动缩小字号;名称过长时以省略号截断。完整的元素名称始终在右侧面板中展示。
3.8.3 理解关系语义
3.8.3.1 维护者与对方
每条关系都由两个元素共同构成:
- 维护者(Owner):保存这条关系属性的元素,也是关系的主体。例如"清水池 CW-01"在自身属性中维护了一条指向"出水泵房"的关系属性。
- 对方(Counterpart):关系属性指向的目标元素。
「谁维护关系」与「图上箭头指向谁」是两回事。箭头方向由关系方向和关系维护者共同决定:关系方向描述「从维护者视角看关系指向何方」,维护者决定关系属性存在谁身上。详见 3.8.3.2 关系方向。
3.8.3.2 关系方向
每条关系都有一个关系方向,决定图上箭头的指向:
| 方向 | 含义 | 图上箭头 |
|---|---|---|
| 出发(Outgoing) | 从维护者指向对方 | 单箭头指向对方 |
| 到达(Incoming) | 从对方指向维护者 | 单箭头指向维护者 |
| 双向(Bidirectional) | 双向语义 | 两端箭头 |
| 无方向(Undirected) | 无明确方向 | 无箭头 |
关系方向是相对维护者定义的。当您以中心元素 C 查看一条关系时,如果 C 恰好是关系的对方(而非维护者),那么"出发"和"到达"在 C 的视角下会互换。例如:对方元素维护了一条方向为「到达」的关系(箭头指向维护者),从 C 的视角看,这条关系就是「出发」。方向筛选会自动做这种视角换算。
3.8.3.3 关系类型
每条关系都属于一个关系类型(一个枚举集),并取该枚举集中的一个关系取值(枚举值)来描述具体语义。例如关系类型为「控制」,关系取值可能是「控制」「联锁」「冗余」等。关系类型与关系取值都是在枚举集中预先定义的(参见 3.4 数据标准化)。
3.8.4 查看关系图
3.8.4.1 逐层展开
关系图默认展示二级关系(中心元素 + 一度元素 + 二度元素)。页面通过逐层加载的方式构建图:先加载中心元素的一度关系并立即渲染,再以一度元素为边界加载第二度,逐层合并,直到达到「展示层级」设定的层数。
3.8.4.2 调整展示层级
工具栏的 展示层级 下拉框支持一级到七级关系:
- 选择「一级关系」:只显示中心元素及其直接相连的一度元素,二度及以上元素被隐藏。
- 选择「二级关系」及更深层级:逐级向外扩展更多间接元素。
展示层级越深,图上的节点与边越多。当关系数量超过展示上限时,页面会提示「关系数量超过展示上限,当前仅显示部分结果」,此时建议缩小层级或使用筛选缩小范围。
3.8.4.3 点击节点探索
点击图中的任意一个未删除节点,右侧面板会切换到该节点,展示它的名称、路径、描述和直接关系列表。同时,该节点的一度关系会被增量合并进主图,让您可以沿着关系不断向外探索——但主图的中心元素始终保持不变。
点击已删除节点(警告色虚线)不会发起加载请求,右侧面板会提示「关联元素已被删除」,并展示当前已知的关联边信息。
3.8.4.4 右侧面板
右侧面板随图中节点的选择而变化,始终展示当前选中元素的信息:
- 元素名称、路径、描述;
- 直接关系数量统计;
- 关系表格,列为「出发节点 / 到达节点 / 关系类型 / 关系取值 / 关系方向」。
初始进入页面时,右侧面板默认展示中心元素的信息。点击其他节点后,面板切换为该节点的信息,但主图的中心元素不变。
3.8.4.5 折叠与展开面板
点击工具栏最右侧的折叠 / 展开按钮,可以收起或展开右侧面板,为关系图画布腾出更多空间。
3.8.5 筛选关系
工具栏提供三个筛选器,帮助您在复杂的关系图中聚焦关心的关系。筛选可组合使用。
3.8.5.1 关系类型筛选
关系类型下拉框(多选)按关系类型过滤边。它作用于图中的所有边(包括间接边),只保留选中类型的关系,允许结果出现多个互不连通的子图。
3.8.5.2 关系方向筛选
关系方向下拉框(多选)按方向过滤边。它仅作用于与中心元素直接相连的一度边,间接边始终保留;筛选后,与中心元素断开的孤儿节点会被自动剔除,保证结果图始终以中心元素为根连通。
关系类型筛选与方向筛选的语义不同:类型筛选是全局的(作用于所有边),方向筛选只作用于直接边。这是为了让"从中心元素看出去的出发 / 到达关系"这一视角始终清晰。
3.8.5.3 编辑态下的筛选
筛选器在编辑态下会被禁用。进入编辑态前,请先通过筛选把需要维护的关系范围确定下来。
3.8.6 编辑关系
关系图支持在编辑态下维护与中心元素直接相关的关系。编辑采用草稿 + 批量保存模式:所有操作先记录为前端草稿,点击「保存」后一次性提交。
3.8.6.1 进入与退出编辑态
- 点击工具栏的编辑按钮进入编辑态,此时编辑按钮切换为保存和放弃两个按钮。
- 点击保存:把全部草稿一次性提交,成功后退出编辑态并刷新图。
- 点击放弃:丢弃全部未保存的草稿,退出编辑态。
编辑态下有未保存的草稿时,如果切换中心元素,系统会提示您保存或放弃,避免草稿丢失。
3.8.6.2 从中心元素添加关系
- 进入编辑态,点击中心元素,弹出菜单。
- 选择添加关系,弹出「添加关系」弹窗。
- 第一步选择对方元素,第二步选择关系类型与关系取值。
- 点击确认,新关系以草稿形式加入图中(此时尚未写入后端)。
- 点击工具栏保存,关系属性写入中心元素,正式生效。
从中心元素发起的关系,维护者是中心元素本身,对方元素可选。
3.8.6.3 从其他节点添加关系
- 进入编辑态,点击一个一度元素或二度元素,弹出菜单。
- 选择添加关系,弹出「添加关系」弹窗。
- 此时对方元素锁定为中心元素,只需选择关系类型与关系取值。
- 点击确认并保存后,关系属性写入被点击的节点(维护者是该节点,对方是中心元素)。
3.8.6.4 拖入元素创建关系
- 进入编辑态,从左侧元素树拖拽一个元素到关系图画布上。
- 松手后,该元素以白色虚线孤立草稿节点的形式出现在画布上(此时尚未建立任何关系,也未写入后端)。
- 点击该草稿节点,弹出菜单,可选择:
- 添加关系:以草稿节点为维护者、中心元素为对方创建关系;
- 移除对象:仅把草稿节点从画布移除(不删除真实元素)。
「移除对象」只移除画布上的临时草稿节点,不会删除真实的元素资产。
如果拖入的元素已经是图中的节点(或已拖入的草稿),页面会提示「该元素已在关系图中,无需重复添加」。
3.8.6.5 编辑与删除直接边
进入编辑态后,点击一条直接边(与中心元素直接相连的边),弹出边菜单:
- 编辑:修改该关系的目标元素或关系取值。
- 删除:删除该关系。
只有与中心元素直接相连的直接边可编辑或删除;二度及以上的间接边只读,没有编辑入口。
3.8.6.6 从右侧面板维护关系
右侧面板的关系列表中,仅当选中中心元素 C 时,每行关系才提供编辑 / 删除菜单;选中其他节点时,列表只读,不显示操作列。
3.8.6.7 删除关系与待删除状态
删除关系时,该边先以红色虚线保留在图上(标记为待删除),并记录一条删除命令;点击保存后,删除命令批量生效,关系被真正删除。
如果删除的是尚未保存的新增关系(草稿边),保存时会直接抵消对应的新增命令,无需后端删除。
3.8.6.8 批量保存与回滚
所有新增、修改、删除操作都合并为一次批量提交:
- 后端在同一个元素事务内依次执行全部命令;
- 任一命令失败,整体回滚,前端保留草稿与编辑态,不会出现"部分成功、部分失败"的中间状态。
3.8.7 关系异常处理
当一条关系指向的元素已被删除时,这条关系会以**关系异常(dangling)**的形式保留在图中:
- 缺失的元素以警告色虚线节点显示,名称为「元素已删除」;
- 右侧面板会提示「关联元素已被删除,请检查维护该关系的属性」;
- 您可以在编辑态删除这条异常关系,从而清理维护者元素中遗留的悬空属性。
删除目标元素时,系统不会自动修改其他元素的属性。因此其他元素中指向该已删元素的关系属性会保留下来,成为关系异常,需要您显式清理。
3.8.8 常见问题
问:为什么我看不到某个元素之间的关系?
答:关系图以当前选中的元素为中心,只展示与它(及其扩展层级内)相连的关系。请确认您选中的元素确实维护了关系属性、或被其他元素的关系属性所指向。另请检查「展示层级」是否设置得过小,以及筛选器是否过滤掉了目标关系。
问:为什么箭头方向和我预期的不一样?
答:箭头方向由关系方向和关系维护者共同决定——关系方向描述的是「从维护者视角看,关系指向何方」,而维护者决定了这条关系属性存在哪个元素上。两者组合,箭头在图上可能从维护者指向对方,也可能从对方指向维护者:
| 关系方向 | 维护者是谁 | 图上箭头 |
|---|---|---|
| 出发(Outgoing) | 当前元素 | 当前元素 → 对方 |
| 出发(Outgoing) | 对方元素 | 对方 → 当前元素 |
| 到达(Incoming) | 当前元素 | 对方 → 当前元素 |
| 到达(Incoming) | 对方元素 | 当前元素 → 对方 |
| 双向(Bidirectional) | 任意一方 | 两端箭头 |
| 无方向(Undirected) | 任意一方 | 无箭头 |
例如:对方元素维护了一条方向为「到达」的关系,从当前元素的视角看,箭头指向对方(即「出发」)。因此,如果箭头方向与预期不符,请同时检查该关系的方向取值和维护者。
问:为什么有些边不能编辑?
答:只有与中心元素直接相连的直接边可编辑;二度及以上的间接边只读。如果您需要编辑一条间接边,请先切换到以该边为直接边的中心元素。
问:拖入元素后为什么没有立即建立关系?
答:拖入元素只会创建一个孤立草稿节点,目的是让您先组织画布,再显式决定是否添加关系。请点击草稿节点,选择「添加关系」并保存。









