创建第一个 ItemType
ItemType 是 Aras Innovator 的核心元模型:它描述一类 Item 有哪些属性、关系、视图、权限和行为。不要把它简单理解为“一张 SQL 表”;数据库结构只是表型之一,真正应由平台元数据和公开 API 管理。
本章创建一个最小的“设备”对象 acme_equipment。完成后,测试用户可以从 TOC 打开搜索页,新建设备,并看到编号、名称和启用状态。
适用范围
- 操作思路以 R31《Configuring Solutions Student Guide》为配置基线。
- 菜单名称会受 Release、语言包和管理员定制影响。
- 请在独立开发环境操作,并将所有新增定义加入 Package Definition。
目标模型
| Property | 类型 | 用途 |
|---|---|---|
item_number | String | 设备编号 |
name | String | 设备名称 |
acme_is_active | Boolean | 是否启用 |
我们暂时不加入 Lifecycle、Workflow 和 Relationship。先让最小对象可以创建、查询和授权,再逐层增加能力,错误会更容易定位。
前置条件
- 具有创建和维护 ItemType 的管理员权限
- 已准备一个开发用 Package Definition
- 已准备一个不属于 Administrators 的测试账号
- 已决定团队的命名前缀;本文使用
acme_
不要使用业务显示名作为内部名称
Name 会进入 AML、代码和包依赖。发布后再改名的成本远高于修改 Label。内部名称使用稳定的英文/数字/下划线;中文放在 Label 和多语言文本中。
第 1 步:创建定义
- 进入 ItemType 管理界面并新建一条记录。
- 将内部名称设为
acme_equipment。 - 将单数 Label 设为“设备”,复数 Label 设为“设备”。
- 选择适合普通业务数据的默认结构;不要在第一次实验中启用 Federated、Poly Item 等高级模式。
- 把 ItemType 加入开发用 Package Definition。
- 保存。
保存后,重新打开该 ItemType,确认 Properties、Views、RelationshipTypes 等配置页签可以正常加载。
为什么先保存
创建 ItemType 会让平台生成并关联一组系统管理的元数据。后续配置应基于保存后的真实状态,不要根据某个版本“固定会有多少个系统属性”来写脚本。
第 2 步:配置属性
在 Properties 页签中确认或新增以下属性:
| Name | Data Type | Required | 说明 |
|---|---|---|---|
item_number | String | 是 | 如果当前模板已提供,复用而不是重复创建 |
name | String | 是 | 人可读名称 |
acme_is_active | Boolean | 否 | Default Value 设为启用状态 |
保存后不要直接修改数据库列。属性的长度、数据类型和约束都应从 ItemType 元数据演进,详细规则见 Property。
第 3 步:配置 Keyed Name
Keyed Name 决定 Item 链接、选择对话框和许多标题位置显示什么。对于本例,选择一种清晰且稳定的方案:
- 只使用
item_number;或 - 先
item_number,再name。
具体配置字段名称可能随 Release 不同,但验证标准一致:创建数据后,界面不应只显示 32 位 ID。
第 4 步:准备 Form 与 View
打开 Views,确认存在可用于新建和查看 Item 的默认视图。若需要自行创建表单:
- 创建一个 Form。
- 放入编号、名称、启用状态三个字段。
- 将 Form 通过 View 关联回
acme_equipment。 - 保存后分别测试 New 和 View/Edit 场景。
Classic 与 Responsive 的编辑方式不同,不要把 Classic 的 Rebuild 操作套到 Responsive Form。参见 Form。
第 5 步:先做权限,再做 TOC
一个 TOC 入口可见,不代表用户有权发现或创建数据。至少完成以下配置:
- 为目标角色准备 Group Identity。
- 配置 ItemType 的 Can Add,使该角色可以创建设备。
- 配置默认 Permission,使创建后的 Item 对预期角色可 Discover/Get,并按需求允许 Update/Delete。
- 用非管理员测试账号验证。
权限模型见 Identity 与 Permission。
第 6 步:加入 TOC
在 TOC Editor 中创建或选择一个开发分类,然后放置 acme_equipment 入口,并将入口可见范围分配给目标 Group Identity。操作见 TOC。
第 7 步:验证完整闭环
使用非管理员测试账号执行:
- 登录后能看到“设备”入口。
- 打开入口后,搜索网格可以加载且没有权限错误。
- 新建设备
EQ-0001 / 校准台,启用状态默认正确。 - 保存后关闭再打开,字段值仍然存在。
- 搜索
EQ-0001可以找到记录,标题显示预期 Keyed Name。 - 退出编辑后检查锁是否按预期释放。
也可以用 AML 验证数据层:
<AML>
<Item type="acme_equipment" action="get"
select="id,item_number,name,acme_is_active">
<item_number>EQ-0001</item_number>
</Item>
</AML>预期返回一条 Item。若管理员可以查询而测试账号返回零条,优先检查 Permission,不要先怀疑数据库。
对象创建完成检查表
- [ ] 内部名称有命名前缀且不会与 OOTB 对象冲突
- [ ] 定义已加入 Package Definition
- [ ] 关键字段有明确类型、长度和必填策略
- [ ] Keyed Name 对人可读
- [ ] New、View/Edit 都能加载正确 Form
- [ ] Can Add 与默认 Permission 已配置
- [ ] 非管理员账号已完成创建和查询测试
- [ ] TOC 只负责导航可见性,没有被当作安全控制
- [ ] 未直接修改 Innovator 数据库表
常见问题
能看到入口,但无法新建
检查 ItemType 的 Can Add。TOC Access 只影响导航入口,不授予创建业务 Item 的权限。
能新建,但保存后自己也看不到
检查新 Item 最终使用的 permission_id 及其中的 Discover/Get 权限。不要只在管理员身份下测试。
新增属性没有出现在表单上
Property 与 Form Field 是两层元数据。新增属性不会保证自动出现在每个已有 Form;应在对应表单编辑器中显式放置或按版本使用受支持的重建操作。
是否应该直接查看生成的 SQL 表
只读诊断可以帮助理解,但表名、列类型和索引属于实现细节。业务读写应通过 AML、IOM、OData 或平台配置完成,避免绕开权限、事件、版本和历史。
下一步
依据
- Aras Training, Configuring Solutions Student Guide Innovator R31, Units 3–8
- Aras Documentation Library
- Aras Innovator 35 Programmer's Guide
