Skip to content

创建第一个 ItemType

ItemType 是 Aras Innovator 的核心元模型:它描述一类 Item 有哪些属性、关系、视图、权限和行为。不要把它简单理解为“一张 SQL 表”;数据库结构只是表型之一,真正应由平台元数据和公开 API 管理。

本章创建一个最小的“设备”对象 acme_equipment。完成后,测试用户可以从 TOC 打开搜索页,新建设备,并看到编号、名称和启用状态。

适用范围

  • 操作思路以 R31《Configuring Solutions Student Guide》为配置基线。
  • 菜单名称会受 Release、语言包和管理员定制影响。
  • 请在独立开发环境操作,并将所有新增定义加入 Package Definition。

目标模型

Property类型用途
item_numberString设备编号
nameString设备名称
acme_is_activeBoolean是否启用

我们暂时不加入 Lifecycle、Workflow 和 Relationship。先让最小对象可以创建、查询和授权,再逐层增加能力,错误会更容易定位。

前置条件

  • 具有创建和维护 ItemType 的管理员权限
  • 已准备一个开发用 Package Definition
  • 已准备一个不属于 Administrators 的测试账号
  • 已决定团队的命名前缀;本文使用 acme_

不要使用业务显示名作为内部名称

Name 会进入 AML、代码和包依赖。发布后再改名的成本远高于修改 Label。内部名称使用稳定的英文/数字/下划线;中文放在 Label 和多语言文本中。

第 1 步:创建定义

  1. 进入 ItemType 管理界面并新建一条记录。
  2. 将内部名称设为 acme_equipment
  3. 将单数 Label 设为“设备”,复数 Label 设为“设备”。
  4. 选择适合普通业务数据的默认结构;不要在第一次实验中启用 Federated、Poly Item 等高级模式。
  5. 把 ItemType 加入开发用 Package Definition。
  6. 保存。

保存后,重新打开该 ItemType,确认 Properties、Views、RelationshipTypes 等配置页签可以正常加载。

为什么先保存

创建 ItemType 会让平台生成并关联一组系统管理的元数据。后续配置应基于保存后的真实状态,不要根据某个版本“固定会有多少个系统属性”来写脚本。

第 2 步:配置属性

在 Properties 页签中确认或新增以下属性:

NameData TypeRequired说明
item_numberString如果当前模板已提供,复用而不是重复创建
nameString人可读名称
acme_is_activeBooleanDefault Value 设为启用状态

保存后不要直接修改数据库列。属性的长度、数据类型和约束都应从 ItemType 元数据演进,详细规则见 Property

第 3 步:配置 Keyed Name

Keyed Name 决定 Item 链接、选择对话框和许多标题位置显示什么。对于本例,选择一种清晰且稳定的方案:

  • 只使用 item_number;或
  • item_number,再 name

具体配置字段名称可能随 Release 不同,但验证标准一致:创建数据后,界面不应只显示 32 位 ID。

第 4 步:准备 Form 与 View

打开 Views,确认存在可用于新建和查看 Item 的默认视图。若需要自行创建表单:

  1. 创建一个 Form。
  2. 放入编号、名称、启用状态三个字段。
  3. 将 Form 通过 View 关联回 acme_equipment
  4. 保存后分别测试 New 和 View/Edit 场景。

Classic 与 Responsive 的编辑方式不同,不要把 Classic 的 Rebuild 操作套到 Responsive Form。参见 Form

第 5 步:先做权限,再做 TOC

一个 TOC 入口可见,不代表用户有权发现或创建数据。至少完成以下配置:

  1. 为目标角色准备 Group Identity。
  2. 配置 ItemType 的 Can Add,使该角色可以创建设备。
  3. 配置默认 Permission,使创建后的 Item 对预期角色可 Discover/Get,并按需求允许 Update/Delete。
  4. 用非管理员测试账号验证。

权限模型见 IdentityPermission

第 6 步:加入 TOC

在 TOC Editor 中创建或选择一个开发分类,然后放置 acme_equipment 入口,并将入口可见范围分配给目标 Group Identity。操作见 TOC

第 7 步:验证完整闭环

使用非管理员测试账号执行:

  1. 登录后能看到“设备”入口。
  2. 打开入口后,搜索网格可以加载且没有权限错误。
  3. 新建设备 EQ-0001 / 校准台,启用状态默认正确。
  4. 保存后关闭再打开,字段值仍然存在。
  5. 搜索 EQ-0001 可以找到记录,标题显示预期 Keyed Name。
  6. 退出编辑后检查锁是否按预期释放。

也可以用 AML 验证数据层:

xml
<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 或平台配置完成,避免绕开权限、事件、版本和历史。

下一步

依据

本站内容仅供学习与参考