简介:本资源是一份面向PLM实施工程师、系统管理员及制造业数字化转型从业者的Aras PLM入门与进阶学习文档,聚焦产品生命周期管理平台的核心管理能力。内容覆盖用户管理(含参与者创建、角色分级与特殊权限配置)、细粒度权限体系(读/写/删、TOC访问、子类对象创建等6类权限设置逻辑)以及数据类型与对象类型建模基础,结构清晰、实操导向,可直接用于系统部署、权限规划与日常运维参考。资源为单个11.06MB的Word文档(.docx),完整呈现31页系统管理手册目录及详细操作说明,含用户管理、权限配置、数据建模等四大模块,便于逐章研读与快速检索。目前已有1278人学习下载,适合零基础接触Aras或需巩固权限模型与系统管理逻辑的技术人员系统掌握平台管理要点。
1. Aras PLM 系统管理手册:不是说明书,是能直接上手配置的“操作黑匣子”
你刚接手一个 Aras PLM 实施项目,领导甩来一句:“把权限模型搭出来,下周要上线试运行。”——打开官网文档,全是概念图和抽象描述;翻论坛,老工程师只回一句“看源码”;问 vendor,得到的是排期三个月的定制服务报价。这时候,一份带完整页码、真实截图位置标注、每一步都对应 Word 文档具体章节编号的《Aras PLM 系统管理使用手册(Word 版)》,就是你桌上唯一能立刻划重点、做标记、抄命令、改配置的“操作黑匣子”。
这不是泛泛而谈的 PLM 概念科普,而是聚焦 Aras Innovator 平台底层可配置能力的实战指南:从创建第一个参与者开始,到配置 TOC 访问权限、定义对象版本行为、搭建多对象查询逻辑、设置生命周期邮件通知,再到用包定义实现跨环境迁移——整套流程全部基于 Aras 原生 Admin UI 和 Schema Editor 可视化操作,不依赖二次开发,不写一行 C# 或 JavaScript。适合两类人:一是刚转岗进 PLM 实施团队的系统管理员,需要快速建立配置直觉;二是已有 ERP/CRM 经验但首次接触元数据驱动型 PLM 的架构师,需穿透“配置即代码”的底层逻辑。它解决的不是“PLM 是什么”,而是“我现在点哪里、填什么、为什么这里必须选‘继承’而不是‘覆盖’”。
提示:本手册内容严格对应 Aras Innovator 12.0–13.0 主流企业部署版本(含 SP12/SP15 补丁集),不兼容 11.x 旧版 Schema 结构。所有操作路径、字段命名、权限粒度均以该版本 UI 实际呈现为准。
2. 用户与权限:从参与者创建到 TOC 访问控制的闭环配置
Aras 的权限体系不是简单的“角色→权限”映射,而是由参与者(Participant)→ 权限(Permission)→ 对象类型(ItemType)→ 关系(Relationship)→ 生命周期状态(Life Cycle State)构成的五层嵌套结构。跳过任意一层,都会导致“明明给了读权限却看不到数据”的玄学问题。本章带你用手册第 6–22 页内容,把这五层拧成一股绳。
2.1 创建参与者:不是加用户,是建“身份容器”
在 Aras 中,“用户”只是参与者的一种实现形式。真正起作用的是参与者(Participant)对象——它承载身份、角色、组织归属、甚至外部系统 ID 映射。手册第 10 页明确指出:“创建参与者时,必须指定其type属性,该值决定后续权限继承链起点。”
# 在 Aras Admin UI 中执行(非命令行,但需理解其等价逻辑): # 路径:Administration > Participants > New Participant # 必填字段: # - Name: "ENG-Reviewers"(建议用业务角色命名,非个人名) # - Type: "User Group"(关键!选错 type 将无法绑定权限策略) # - Is Active: True # - Description: "Engineering Review Team for ECN Process"逻辑说明:
Type字段不是标签,而是 Schema 中预定义的 Participant 子类。手册第 12 页“特殊参与者”章节强调,User Group类型参与者可被赋予Group Membership权限,从而让成员自动继承组权限;而Individual User类型则需逐个绑定权限。参数Is Active控制该参与者是否参与权限计算——设为 False 后,即使成员仍在 Active Directory 同步列表中,其权限也会被忽略。
2.2 权限创建:四类核心权限的配置边界与组合逻辑
手册第 14–18 页将权限分为四类:基础操作权限(Read/Write/Delete)、发现权限(Discover)、创建者权限(Creator)、子类对象权限(Subclass Creation)。它们不是并列关系,而是存在隐式依赖:
| 权限类型 | 手册页码 | 是否必须显式配置 | 典型误配场景 | 正确配置前提 |
|---|---|---|---|---|
| Read/Write/Delete | P14 | 是 | 给了 Write 却没给 Read → UI 显示空白 | 必须先有 Read,Write 才生效 |
| Discover | P17 | 否(但强烈建议) | 未配置 → 用户搜索不到对象 | 需配合Item Type的Can Discover属性启用 |
| Creator | P18 | 是(对自定义对象) | 给了 Creator 却未给子类权限 → 创建失败 | 必须同时配置目标 ItemType 的Can Create |
| Subclass Creation | P18 | 是(对继承结构) | 创建子类时提示“无权限” | 需在父类 Permission 中勾选Allow Subclass Creation |
# 伪代码示意权限依赖验证逻辑(实际在 Aras Server 端执行): def validate_permission_chain(participant, item_type, action): if action in ['Write', 'Delete']: # 强制检查 Read 权限是否存在 if not has_permission(participant, item_type, 'Read'): raise PermissionError(f"Cannot {action} without Read permission on {item_type}") if action == 'Create': # 检查 Creator 权限 + 目标 ItemType 的 Can Create 属性 if not has_creator_permission(participant, item_type): raise PermissionError(f"Missing Creator permission for {item_type}") if not item_type.can_create: raise PermissionError(f"{item_type} is not configured as creatable")参数说明:
has_creator_permission()不是简单查表,而是遍历参与者所属的所有 Permission 对象,检查其Action字段是否为Creator且ItemType匹配;item_type.can_create是 Schema 中 ItemType 定义的布尔属性,需在 Object Type Designer 中手动启用(手册第 32 页)。
2.3 TOC 访问权限:为什么“能看到目录树”比“能读对象”更难配置?
TOC(Table of Contents)是 Aras 的导航中枢,但它的权限独立于对象权限。手册第 21 页单列一节强调:“TOC 访问权限控制的是左侧导航树节点的可见性,而非节点下数据的可访问性。” 这意味着:用户可能看到“ECN”节点,却因缺少ECNItemType 的 Read 权限而点开为空;也可能看不到节点,却通过 URL 直接访问到对象(若 URL 已知且有对应权限)。
配置 TOC 权限的关键在于TOC Definition 对象。手册第 21 页步骤明确:
- 进入
Administration > TOC Definitions - 找到目标 TOC(如
Default TOC) - 编辑其
Permissions标签页 - 添加新 Permission 条目,设置:
Participant: 选择目标参与者(如ENG-Reviewers)Action:View(注意不是Read)Item Type:TOC Definition(固定值)Related Item: 选择该 TOC 下需显示的 ItemType(如ECN,Part,BOM)
逻辑说明:
Related Item字段是 TOC 权限的核心。它不是指向具体对象,而是指向 ItemType。只有当用户对该 ItemType 有 Read 权限,且该 ItemType 被显式添加到 TOC Definition 的Related Item列表中,该节点才会在导航树中出现。手册第 21 页底部警告:“删除 Related Item 条目不会移除用户对该 ItemType 的数据权限,仅隐藏导航入口。”
3. 数据类型与对象类型:让元数据配置不再“凭感觉”
Aras 的强大源于其元数据驱动架构,但这也意味着:90% 的配置错误,根源都在数据类型(Data Type)和对象类型(Item Type)的定义偏差上。手册第 23–50 页用近 30 页篇幅拆解这两者,不是讲理论,而是教你怎么避开“改完重启才生效”“字段值存不进去”“窗体加载卡死”三类高频翻车现场。
3.1 创建列表数据类型:为什么下拉框选项总少一条?
列表(List)是 Aras 最常用的数据类型,用于构建下拉框、单选按钮。手册第 24 页给出标准创建流程,但没明说一个致命细节:列表项(List Item)的Sort Order必须为连续正整数,且不能重复。实测发现,若导入 Excel 生成的 List 时Sort Order为1,2,4(缺 3),UI 将只显示前两项,第三项(原Sort Order=4)被静默丢弃。
<!-- 手册第 24 页示例的正确 XML 导入片段(用于批量创建 List) --> <List id="ECN_Status"> <ListItem id="Draft" sort_order="1">Draft</ListItem> <ListItem id="In Review" sort_order="2">In Review</ListItem> <ListItem id="Approved" sort_order="3">Approved</ListItem> <ListItem id="Rejected" sort_order="4">Rejected</ListItem> </List>参数说明:
sort_order是整数字段,Aras 内部按此排序渲染下拉项。若存在sort_order=0,该项将被置于最前但不可见(UI 渲染 bug);若存在负数,整个列表加载失败。手册第 26 页“外部数据类型”章节提到,可通过External Data Source动态加载列表,但必须确保外部 SQL 查询返回的sort_order列为非空、连续、正整数。
3.2 对象类型创建:类结构(Class Structure)里的“继承陷阱”
手册第 37 页“类结构”是 Aras 配置中最易被误解的部分。它不是面向对象编程中的 class inheritance,而是Schema 层级的元数据复用机制。关键规则:子类(Subclass)自动继承父类(Superclass)的所有属性、关系、权限,但不继承窗体(Form)和 TOC 配置。
常见错误配置:
- 在父类
Part上配置了Revision字段的必填规则 - 创建子类
Mechanical_Part,期望自动获得该规则 - 结果:
Mechanical_Part对象保存时未校验Revision,因规则未被继承
正确做法(手册第 37 页脚注):
- 进入
Object Type Designer→ 选择Mechanical_Part - 切换到
Properties标签页 - 找到
Revision字段 → 点击Override按钮 - 在弹出窗口中勾选
Required→ 保存
逻辑说明:
Override操作本质是在子类 Schema 中生成一条Property Override记录,覆盖父类定义。手册第 37 页图示明确标注:“Override 后,该字段在子类中的行为独立于父类”。未 Override 的字段,其Required、Read Only、Default Value等属性均沿用父类设置。
3.3 窗体(Form)配置:字段绑定失效的三个隐蔽原因
手册第 40–42 页详述窗体创建,但实际部署中,常出现“字段拖进去了,值却不显示”的情况。经实测,90% 的原因是以下三点之一:
- 字段未启用
Visible属性:在 Form Designer 中,右键字段 →Properties→Visible默认为False,需手动改为True(手册第 41 页图示未标出此开关)。 - 字段绑定路径错误:对于关系字段(如
Part.Revision),绑定路径必须写为related_id.Revision,而非Revision(手册第 42 页示例中related_id被简写为rel_id,易误导)。 - 窗体未关联到正确 ItemType:一个窗体可被多个 ItemType 复用,但必须在窗体属性中明确指定
Item Type(手册第 40 页步骤 5)。若留空,Aras 会尝试匹配当前上下文 ItemType,失败则显示空白。
// Aras Client Script 中验证窗体字段绑定的调试技巧(手册未提及): // 在窗体 OnLoad 事件中添加: function onLoad() { var field = this.getItem("Revision"); // 获取字段对象 if (!field) { console.error("Field 'Revision' not found in form"); return; } console.log("Field binding path:", field.getBindingPath()); // 输出实际绑定路径 console.log("Field value:", field.getValue()); // 输出当前值,判断是否为空 }参数说明:
getBindingPath()返回字符串如"related_id.Revision",若返回null或空字符串,说明绑定未生效;getValue()在 OnLoad 时可能返回undefined,需结合field.isLoaded()判断数据是否已加载。
4. 关系、生命周期与工作流:打通业务流程的“三叉神经”
Aras 的业务流程能力,不在 Workflow Engine 的复杂度,而在关系(Relationship)→ 生命周期(Life Cycle)→ 工作流(Workflow)三者的精准咬合。手册第 55–102 页用 48 页篇幅覆盖此链条,但多数读者卡在“关系建好了,生命周期配完了,工作流却启动不了”的断点上。本章直击断点,用手册原文+实操补丁,把断点焊死。
4.1 关系类型对象行为:为什么“关联对象”不触发状态变更?
手册第 71 页“关系类型对象行为”是全书最易被跳过的冷知识。它规定:当两个对象通过关系连接时,默认不触发任何行为。若需在建立关系时自动更新状态(如:将ECN关联到Part时,自动将Part状态设为Under Change),必须显式配置关系类型(Relationship Type)的On Create行为。
配置路径(手册第 71 页步骤):
- 进入
Administration > Relationship Types - 找到目标关系(如
ECN to Part) - 编辑 →
Behaviors标签页 →On Create→Add Behavior - 设置:
Behavior Type:Change StateTarget Item:Related Item(即被关联的 Part 对象)New State:Under ChangeCondition:true(或写 JS 表达式)
逻辑说明:
Target Item选项中Related Item指关系中“被关联方”,Source Item指“主动关联方”。手册第 71 页图示用虚线箭头标注,但文字未强调此区别。若选错,状态变更将作用于 ECN 而非 Part,业务逻辑彻底颠倒。
4.2 生命周期配置:Email 通知的“收件人字段”必须是参与者 ID
手册第 76 页“配置 Email”看似简单,但实操中 70% 的邮件发不出去,原因全在收件人字段。Aras 的 Email 模板不支持user@domain.com格式,必须填写参与者(Participant)的 ID 字符串(如ENG-Reviewers或admin@aras.com)。
<!-- 手册第 76 页 Email 模板示例的修正版 --> <EmailTemplate id="ECN_Approval_Notice"> <To>ENG-Reviewers</To> <!-- 正确:参与者ID --> <!-- <To>eng-review@company.com</To> 错误:Aras 会静默忽略 --> <Subject>ECN #{number} Requires Your Approval</Subject> <Body><![CDATA[ <p>Hello,</p> <p>ECN <b>#{number}</b> is ready for your review.</p> <p><a href="#{url}">Open in Aras</a></p> ]]></Body> </EmailTemplate>参数说明:
#{number}和#{url}是 Aras 内置变量,分别解析为当前对象的number字段值和详情页 URL。手册第 76 页未说明To字段的解析逻辑:Aras 会查询 Participants 表,匹配id字段,获取其id不存在,邮件队列中显示“Recipient not found”,但日志无报错。
4.3 工作流活动:动态分配的“表达式语法”避坑指南
手册第 99 页“动态分配”允许用 JavaScript 表达式决定任务负责人,但 Aras 的 JS 引擎极度精简,不支持 ES6+ 语法、不支持import、不支持async/await。常见翻车代码:
❌ 错误(手册未警示):
// 使用箭头函数 → 报错:Unexpected token => const approver = (item) => item.created_by; // 使用解构 → 报错:Unexpected token { const { created_by } = item;✅ 正确(手册第 99 页示例的强化版):
// 必须用 function 关键字 function getApprover(item) { // item 是当前工作流上下文对象 if (item.item_type === 'ECN') { // 获取创建者所属的参与者组 var creatorGroup = item.getProperty('created_by').getProperty('group'); if (creatorGroup && creatorGroup.id === 'ENG-Reviewers') { return 'QA-Team-Lead'; // 返回参与者ID,非用户名 } } return 'admin@aras.com'; // 默认负责人 }逻辑说明:
item.getProperty('created_by')返回的是Identity对象,其group属性是Participant对象,需用.id获取字符串 ID。手册第 99 页示例中return 'admin'是危险写法——admin是用户名,Aras 会尝试匹配Participant.id='admin',若不存在则分配失败。必须返回Participant.id(如admin@aras.com)或User.id(需确认该 User 已映射为 Participant)。
5. 避坑:Aras 配置中五个血泪经验换来的“后悔药”
配置 Aras 不是点点鼠标就完事,很多问题要等到用户实际操作时才暴露。以下是我在 12 个实施项目中踩过的坑,每一条都对应手册某页的“小字备注”,但足以让新手加班到凌晨。
5.1 现象:修改窗体后,部分用户看到旧版窗体
原因:Aras 客户端缓存窗体定义(.form文件),且缓存键基于窗体 ID + 时间戳。当多人同时编辑同一窗体,后保存者会覆盖时间戳,导致先保存者的修改被客户端缓存锁定。
解决:强制清除客户端缓存。路径:Help > Clear Cache and Reload。手册第 123 页脚注提到“缓存影响”,但未给出此操作路径。
5.2 现象:创建新对象时提示“Validation failed: Cannot save item with null required property”
原因:该对象类型(ItemType)的某个必填字段,在窗体中被设为Read Only,但未设置Default Value。Aras 服务端校验时发现字段为空,拒绝保存。
解决:进入Object Type Designer→ 该 ItemType →Properties→ 找到对应字段 → 勾选Default Value→ 输入默认值(如""或0)。手册第 42 页“对象属性”未关联此校验逻辑。
5.3 现象:TOC 节点显示正常,点击后报错“Access denied to item type 'XXX'”
原因:TOC Definition 中配置了Related Item,但该 ItemType 的Can Discover属性为False(手册第 21 页未强调此依赖)。
解决:进入Object Type Designer→ 该 ItemType →General标签页 → 勾选Can Discover→ 保存。此操作需 Admin 权限。
5.4 现象:工作流启动后,任务始终停留在“Created”状态,不进入“Active”
原因:工作流定义中Start Activity的Auto Start属性为False(手册第 83 页图示默认为 True,但新建工作流时实际为 False)。
解决:编辑工作流 →Activities标签页 → 选中Start Activity→Properties→ 勾选Auto Start。手册第 83 页步骤 3 隐含此操作,但未明确写出。
5.5 现象:用包定义(Package Definition)导出配置,导入到新环境后权限失效
原因:包定义默认不包含Permission对象的Participant字段值(因其为 GUID,跨环境不一致)。手册第 116 页“包定义”未说明此限制。
解决:导出前,进入Administration > Packages→ 编辑包 →Included Items→ 勾选Permissions→ 点击Edit Filter→ 在Filter Expression中添加:participant_id != null。或导入后,用 SQL 脚本批量更新participant_id。
6. 进阶验证:用三步法确认你的 Aras 配置已“真正生效”
配置做完不是终点,验证才是。我从不依赖“UI 看起来对”,而是用一套可量化的三步法,确保每个环节都咬合到位。这套方法来自手册未写的“灰盒测试”逻辑,但已在 8 个项目中零失误验证。
6.1 第一步:Schema 层验证——用 SQL 直查元数据一致性
Aras 的配置最终落地为数据库表。绕过 UI,直查innovator库中的ItemType,Property,Permission表,是最硬核的验证。
-- 验证“ECN”对象类型是否启用 Can Discover(影响 TOC 显示) SELECT id, name, can_discover FROM innovator."ItemType" WHERE name = 'ECN'; -- 验证“ENG-Reviewers”参与者是否拥有 ECN 的 Read 权限 SELECT p.id, p.action, p.item_type, pt.name FROM innovator."Permission" p JOIN innovator."ItemType" pt ON p.item_type = pt.id WHERE p.participant_id = ( SELECT id FROM innovator."Participant" WHERE name = 'ENG-Reviewers' ) AND p.action = 'Read' AND pt.name = 'ECN';说明:
can_discover字段为true才表示该 ItemType 可被搜索发现;第二条查询返回记录数 > 0 才表示权限已生效。手册第 117 页“配置管理”提到“数据库是最终权威”,但未提供此验证 SQL。
6.2 第二步:API 层验证——用 REST API 模拟用户操作
UI 可能缓存,但 REST API 永远返回实时数据。用curl测试关键路径,比点 UI 更快。
# 测试用户是否有 ECN 的 Read 权限(替换 YOUR_TOKEN 和 SERVER_URL) curl -X GET \ "https://your-aras-server/Server/main.aspx?method=getItems&database=Innovator&itemtype=ECN&where=id='some-id'" \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" # 若返回 200 + ECN 数据,权限 OK;若返回 403,权限未生效参数说明:
YOUR_TOKEN从 Aras Admin UI 的Security > Tokens获取,有效期 24 小时;some-id是任意一个 ECN 对象的 ID。手册第 116 页“可配置网络”提到 REST API,但未给出此验证用例。
6.3 第三步:用户层验证——用“最小权限账户”走通全流程
创建一个专用测试账户(如test-config@aras.com),仅赋予ENG-Reviewers参与者权限,禁用所有 Admin 权限。然后亲自用此账户:
- 登录 → 检查 TOC 节点是否可见
- 创建 ECN → 检查窗体字段是否可编辑
- 关联 Part → 检查关系是否建立
- 提交工作流 → 检查任务是否出现在待办列表
教训:从那以后我每次完成一套配置,都强制走一遍这个“三步验证”。不是为了炫技,而是因为 Aras 的权限继承链太长,任何一个环节的微小偏差,都会在用户侧表现为“功能消失”,而日志里只有一行
Access denied。这种静默失败,比报错更可怕。希望帮到你。
本文还有配套的精品资源,点击获取