关系数据可视化 (Query Builder & Tree Grid View)
在企业 PLM 系统中,数据往往呈现高度关联的网状或树状结构(例如多级物料清单 BOM、变更受控对象树、项目任务分解树等)。为了直观地展示这些多级关联关系,Aras Innovator 提供了 Query Builder(查询构建器) 和 Tree Grid View(树形网格视图,简称 TGV) 组合工具,允许开发人员在免写代码的情况下,快速构建交互式多级树状表格。
1. 技术架构:QB 与 TGV 的解耦设计
Aras 的关系数据可视化采用“数据定义与界面渲染分离”的经典架构:
- Query Builder (QB):负责定义“数据如何查”。它构建了一个逻辑视图,描述从主 Item 开始,应该如何沿着关系键(
relationship)或外键(item属性)递归、深度遍历查询相关的子项及关联项。 - Tree Grid View (TGV):负责定义“数据如何显”。基于 QB 提供的数据流,定义哪些节点应该渲染为树节点,每一列显示什么属性,各层级使用什么图标,以及节点双击跳转、单元格渲染控制等交互。
2. 第一步:构建 Query Builder (QB)
- 进入管理端 -> Query Definitions,新建一个查询定义。
- 选择根节点 (Root Query Item):这是查询的起始点,即主对象(如
Part)。 - 添加子节点 (Add Related Item):
- 右键根节点,选择
Add Related Item。 - 选择关联类型:可以是通过关系类关联(如
Part BOM关系),也可以是直连属性关联(如创建者Created By的User记录)。
- 右键根节点,选择
- 递归定义 (Recursion):
- 对于物料清单 BOM 这种深度未知的树结构,可以对子节点配置递归(Recursion Reference)。例如,设置
Part BOM关系下的Related Item (Part)递归关联回Part本身。
- 对于物料清单 BOM 这种深度未知的树结构,可以对子节点配置递归(Recursion Reference)。例如,设置
- 选择输出属性 (Selected Properties):
- 勾选在展示中需要用到的各级对象的字段(如
item_number,name,state,quantity等)。
- 勾选在展示中需要用到的各级对象的字段(如
查询性能优化
在 Query Definition 中,尽量只勾选需要的属性字段,避免加载大文本或不必要的关联字段,以优化大数据量多级树的检索加载速度。
3. 第二步:配置 Tree Grid View (TGV)
数据源 QB 构建好后,进入管理端 -> Tree Grid Views 创建展示界面。
3.1 创建与映射 (Mapping Elements)
- 新建 TGV,将刚才创建的
Query Definition绑定为数据源。 - 进入 TGV 编辑画布(Graph Editor)。画布上会以图形化方式显示 QB 中定义的多级结构。
- 映射节点 (Map Elements):
- 勾选你需要作为树形层级展开的节点。只有映射后的节点才会作为行展示在树状网格中。
- 可以通过
Combine Rows按钮,将“关系类”和“关联子类”合并在同一行展示,从而使树形结构更加紧凑。
3.2 界面样式定制 (Grid Formatting)
- 列配置 (Columns):定义列名称、列宽度、文字对齐方式(左/中/右)。
- 节点图标 (Icons):为不同类型或不同分类(Classification)的节点配置个性化图标,使界面更加美观。
- 单元格渲染 (Cell Settings):
- 超链接映射 (Item Links):将特定的单元格绑定为 Hyperlink,使用户在点击时能直接弹窗打开对应的物理对象表单。
- 值变换 (Cell Display):可以将原始的
state等系统英文值映射为直观的中文显示。
3.3 带参数的动态查询 (TGV Parameters)
在很多场景下,我们希望树形网格中的子项过滤与某些动态变量关联。
- 在 Query Definition 中定义 Query Parameter(例如:
Target_Environment)。 - 在查询条件中引用该参数:
[Target_Environment] = 'Production'。 - 在 TGV 中,系统会自动感知此参数,并可以在用户打开页面时提供输入框,或者从主表单的属性字段中动态提取该参数传递给后台。
4. 第三步:发布与应用 (Usage)
TGV 配置完成后,需要通过 Tree Grid View Usage 关联到系统中,常见的使用方式有:
作为关系 Tab 页 (Relationship Tab)
- 在目标 ItemType(如
Part)的Relationships中,新增一个关系。 - 将该关系的渲染方式改为自定义的 TGV 视图。
- 用户在打开
Part表单时,底部 Tab 会直接渲染为多级 BOM 展开网格,支持懒加载展开。
- 在目标 ItemType(如
作为 TOC 独立导航视图 (TOC Item)
- 将 TGV 配置到目录树中。
- 用户从 TOC 菜单点击,会打开一个全局的树形查询网格(支持在顶部输入过滤参数)。
5. 最佳实践与避坑指南
循环引用检测
如果在配置递归查询(如 BOM 结构)时,数据库物理数据中存在循环引用(例如 A 零件的子项是 B,B 的子项又是 A),查询引擎会报堆栈溢出。在向系统录入数据或 Method 开发时,必须做环路检测。
权限继承问题
TGV 中展示 of 各级子节点的数据严格遵循 Aras 的 Permissions (权限配置)。如果用户对某个子零件没有 Get 权限,该节点在 TGV 中会被自动隐藏,其子节点也不会被拉取,以保障企业数据安全。
