RelationshipType 关系类
Aras Innovator 通过 RelationshipType 机制实现 ItemType 之间的关联。关系本身就是一种特殊的 ItemType,可以携带独立的属性,并在表单的 Relationship Grid(关系网格)中展示。
关系的基本结构
一条关系由三个部分组成:
| 组成部分 | 说明 |
|---|---|
| Source ItemType | 关系的父端(如 Purchase_Order) |
| Related ItemType | 关系的子端(如 Part) |
| RelationshipType | 关系的定义本身,保存在 RelationshipType 元数据表中 |
| Relationship ItemType | 由 RelationshipType 创建时自动生成,用于存储每条关系实例的数据,包含 source_id 和 related_id 两个系统字段 |
创建 RelationshipType
推荐的方式是从 Source ItemType 的 RelationshipTypes 标签页中操作,而不是单独到 Administration 下创建:
- 打开 Source ItemType 编辑
- 进入 RelationshipTypes 标签页
- 点击 Add ItemTypes,在弹窗中选择 Related ItemType
- 填写 Relationship Name(关系名)和 Tab Label(标签页显示名)
- 保存
系统会自动在数据库中生成对应的 Relationship ItemType 物理表。
RelationshipType 关键配置
| 配置项 | 说明 |
|---|---|
| Name | 关系名称,也是自动生成的 Relationship ItemType 的名称 |
| Label | 关系标签页在父 Item 表单上的显示名称 |
| Source ItemType | 父端 ItemType 名称 |
| Related ItemType | 子端 ItemType 名称 |
| Min Occurs | 最少必须关联的子 Item 数量(0 表示可选) |
| Max Occurs | 最多允许关联的子 Item 数量 |
| Behavior | 关系实例创建时默认的版本行为:Fixed / Float |
| On New Related Option | 添加关系时允许的操作方式 |
| Requires Related | 是否强制要求关联子 Item(禁止空行占位) |
| Open Related Form | 创建子 Item 时是否自动打开其表单 |
| Auto Search | 关系网格加载时是否自动检索 |
| Default Page Size | 关系网格每页显示行数 |
| Grid View | 子 Item 属性列在网格中的位置:Left / Right / Intermix |
| Sort Order | 多个关系标签页之间的排列顺序 |
On New Related Option 详解
该配置决定了用户在关系网格中新增关联记录的方式:
| 选项 | 行为 |
|---|---|
| Pick Only | 只能从已有记录中搜索选择,隐藏 New Item 按钮 |
| Create Only | 只能新建记录,隐藏 Add Item 按钮 |
| Pick & Create | 两种方式都允许(默认) |
关系类型模式
Aras 中存在几种典型的关系模式:
直接关系(Direct Relationship)
最常见的模式,Source 和 Related 是两个不同的 ItemType:
Design Request→Document:一个设计申请关联多份文档
循环关系(Circular Relationship)
Source 和 Related 指向同一个 ItemType,典型例子是 BOM(物料清单):
Part→Part BOM→Part:一个零件可以包含多个子零件
空关系(Null Relationship)
Related ItemType 为空,关系实例仅用于在父 Item 上展示附加属性网格,不需要指向另一个 ItemType:
Design Request→Comments:在设计申请上添加多条评论记录
创建 Null 关系时,直接在 RelationshipTypes 标签页点击 New RelationshipType,Name 留空,只填写 Relationship Name 和 Tab Label。
Null 关系必须有可见属性
如果 Null Relationship 的 Relationship ItemType 上没有任何可见属性(Hidden2 未勾选),网格将无法正常显示,操作会失败。
关系的递归关系(Relationship to Relationship)
Aras 允许关系指向另一个关系。标准方案中的 BOM Substitute 就是这个模式:在 Part BOM 的某条关系上,再关联一个替代件记录。
关系 vs Item 属性
当需要在两个 ItemType 之间建立连接时,可以选择使用关系(RelationshipType)或使用 Item 类型属性(Property,数据类型为 Item)。两者各有适用场景:
| 对比维度 | Item 属性 | RelationshipType |
|---|---|---|
| 关系类型 | 一对一 | 一对多(支持多行网格) |
| 附加信息 | 无法携带额外属性 | 关系本身可以有独立属性 |
| Foreign 属性 | 支持,可以直接拉取关联字段 | 不直接支持,需要通过关系行访问 |
| 数据库开销 | 较少(不新增表) | 较多(新增一张 Relationship 表) |
| 界面呈现 | 以超链接字段展示 | 以关系网格标签页展示 |
选型建议:
- 只需引用单条记录,且希望以超链接形式展示 → 用 Item 属性
- 需要引用多条记录,或需要在关系上存储附加信息(如数量、备注) → 用 RelationshipType
- 需要拉取关联记录的字段值用于显示 → Item 属性 + Foreign 属性组合更高效
常见建模示例
采购单 - 零件关联(直接关系)
Purchase_Order (Source)
└─ Purchase_Order_Part (Relationship) ← 可携带 quantity、unit_price 等属性
└─ Part (Related)BOM 物料清单(循环关系)
Part (Source)
└─ Part BOM (Relationship) ← 携带 quantity、reference_designator
└─ Part (Related) ← 子零件,子零件可以继续展开变更单 - 备注记录(Null 关系)
Change_Request (Source)
└─ Change_Request_Memo (Relationship) ← 携带 comments 字段
└─ (无 Related ItemType)