简介:《Aras 学习文档》是一份面向 Aras PLM 初学者与系统管理人员的 word 版使用手册,聚焦产品生命周期管理平台的用户、权限与数据建模等基础管理场景,适合需要快速熟悉系统后台配置与日常运维的读者。压缩包内共 1 个 docx 文件,约 11.06MB,内容以图文与章节化目录组织,便于按主题查阅和跟练。文档从用户管理切入,依次讲解登录用户、参与者与特殊参与者的创建和维护,并延伸到权限体系中的权限创建、发现权限、可创建者权限、子类对象创建权限及 TOC 访问权限,同时覆盖数据类型、列表、外部数据类型、配置序列与对象类型等建模要点。已有 1287 人学习,读者可借助这份手册建立 Aras PLM 系统管理的整体框架,理解权限控制与数据模型配置之间的关系,并将其作为实施、运维或二次开发入门阶段的案头参考。
1. 拿到一份 Aras PLM 后台手册,先别从第一页读
接手一个已经上线的 Aras PLM 环境,最常见的窘境不是不会点按钮,而是不知道后台那几百个配置项谁依赖谁。手上这份 Word 版的《Aras PLM 系统管理使用手册》把十九个章节按“用户管理—权限—数据类型—对象类型—实现类型—关系—生命周期—工作流”的顺序排下来,这个顺序本身就是一条配置主线:先有主体,再谈授权,然后才有数据模型,最后才轮到流程。它解决的是“知道要做,但不知道先做哪一步”的问题,适合刚接手 Aras PLM 管理后台的实施顾问、内部系统管理员,也适合要从零搭一套演示环境的开发者。不适合两类人:想找前端二开或接口文档的,以及指望照着点一遍就能上生产的。
2. 参与者与权限:先把“谁能看见什么”固定下来
2.1 权限表里选中的到底是谁
Aras 后台里,“人”和“权限”之间隔着一层抽象。你在用户管理里建的是账号,但权限记录(Access)里能选中的对象是参与者——用户、用户组、角色都算。刚接触时最容易把这两件事当成一件事,结果新建一个用户,权限一条条往这个人头上加,人一离职就要一条条拆,拆漏一条就是隐患。
手册第一章把“创建参与者”和“特殊参与者”单独列出来,就是在提醒这层抽象。我一般做的是:人只进组,权限只授组。用户组代表岗位(设计工程师、工艺工程师、文控),角色代表职责边界(审批人、只读访客),个人账号只作为组成员存在。这样一次人员变动,只改组成员关系,权限表一个字都不用动。
系统里有几个内置的特殊参与者,翻“特殊参与者”那一节能看到:World 代表系统中所有人,Creator 代表对象创建者本人,Owner 代表对象当前所有者。这三个不要拿来图方便——给 World 授更新权限,等于把整张表对所有登录者开放;给 Creator 授删除权限,等于让每个人都能删掉自己建过的东西,误操作之后没有后悔药。
提示:自定义参与者命名带上业务域前缀,比如 GRP_Design、ROLE_Approver,后面在权限表里按前缀搜索会比按中文名快很多。
2.2 建一个能登录的账号:五步走完
顺序是固定的:用户组 → 角色(可选)→ 用户 → 组成员关系 → TOC 访问权限。前四步漏了还能补,第五步漏了表现最迷惑——账号能登录,但左侧导航一片空白。
| 步骤 | 后台位置 | 关键字段 | 填写要点 |
|---|---|---|---|
| 建用户组 | 参与者管理 | Name / Label | Name 用英文标识,Label 写中文名 |
| 建角色 | 参与者管理 | Name / 权限集 | 只放职责,不放具体人 |
| 建用户 | 用户管理 | 登录名、姓名、邮件、初始密码 | 管理员账号数量控制在个位数 |
| 加组成员 | 用户组详情的成员页签 | 成员身份 | 从组这边加,不要从用户详情反着加 |
| 配 TOC | 身份详情的 TOC 访问页签 | 对象类型、可见性 | 按岗位给最小集合 |
建用户组时 Name 一定用英文,原因很实际:后面写 AML 查询、做包定义导出、跨环境迁移,走的都是 Name 而不是 Label,中文 Name 在这几个环节会带来一堆编码问题。建用户时“是否管理员”这个开关要按最小必要原则给,管理员能看到全部对象类型和全部权限配置,给多了等于把后台钥匙散出去。
加组成员从用户组那一侧操作,是因为关系记录是挂在组上的,反着从用户详情加,界面看着加上了,但某些权限判定路径读不到这条关系,表现为“明明在组里,权限不生效”。TOC 访问权限按岗位给最小集合,比如设计工程师只需要看到零部件、文档、变更单这三类入口,剩下的全部关掉。菜单越短,培训成本越低。
2.3 四种权限的判定顺序
手册第二章拆得很细:关于权限、创建权限、发现权限、可创建者权限、创建子类对象权限、TOC 访问权限。第一遍读会觉得零散,其实是四个不同层面在管不同的事。
| 层面 | 控制什么 | 配错时的表现 |
|---|---|---|
| TOC 访问权限 | 左侧导航是否出现该对象类型入口 | 登录后菜单空白 |
| 发现权限 Discover | 对象在搜索结果和列表中是否可见 | 有读权限却搜不到 |
| 对象级访问权限 | Get / Update / Create / Delete | 能搜到但打不开、存不了 |
| 属性级权限 | 单个字段能否读写 | 整条能存,某个字段被清空 |
判定顺序从上往下:先过 TOC,再过发现权限,再过对象级 Access,最后落到属性级。这条链路意味着,排查“为什么他改不了”时不要一上来就翻 Access 表,先确认他能不能看到入口,再确认他搜不搜得到,最后才看具体动作权限。
可创建者权限是一个特别容易忽略的开关。它决定这个身份能不能在某个关系页签里点“新建”。很多人把关系的访问权限配齐了,页签也显示出来了,但“新建”按钮是灰的,问题就出在这一项。创建子类对象的权限则是另一回事:对父类对象类型有创建权限,不等于对它的子类也能创建,类结构是继承关系,但权限不会自动往下传,需要显式给子类配一遍。
还有一种情况是 Owner 覆盖。对象的所有者天然带一部分权限,当你的测试账号正好是某条记录的创建者时,测出来的结果会偏乐观,换成另一个普通账号立刻打回原形。验收权限时至少准备两个账号:一个在组里,一个不在。
2.4 用 AML 反查实际权限
界面上一条条点开看权限太慢,我习惯直接查。Aras 的 AML 查询在后台的查询工具里能直接跑,下面的语句查某个对象类型上挂了哪些权限记录。
<AML> <!-- 查 Part 这个对象类型上挂了哪些访问权限 --> <Item type="Access" action="get" select="id,name,can_get,can_update,can_add,can_delete,can_discover"> <source_id> <Item type="ItemType" action="get" select="id"> <name>Part</name> </Item> </source_id> </Item> </AML>source_id指向被授权的目标(对象类型、属性、方法都可能是目标),返回的每条记录里再去看related_id,那就是被授予的身份。can_discover这一项单独拎出来看,它就是发现权限,值为 0 时对象对这批人等于不存在。
反过来查某个身份手里有哪些权限,把条件换到related_id上即可。
<AML> <!-- 列出设计组在系统里拿到的全部权限记录 --> <Item type="Access" action="get" select="id,name,can_get,can_update,can_add,can_delete,can_discover"> <related_id> <Item type="Identity" action="get" select="id,name"> <name>GRP_Design</name> </Item> </related_id> </Item> </AML>这两条查询的价值在于做权限审计。上线前跑一遍,把返回结果导出来对照岗位矩阵,比在界面上翻一百次靠谱。
注意:权限有缓存,改完权限配置后要让测试账号重新登录,或者走一遍缓存刷新,否则你看到的是上一次的判定结果,很容易误判成配置没生效。
3. 数据建模四件套:数据类型、对象类型、实现类型、关系
3.1 建模顺序不能反着来
手册把数据类型放在第三章、对象类型放第四章、实现类型第五章、关系第六章,这个排序不是按重要性,是按依赖方向。对象类型的属性必须引用一个已存在的数据类型;窗体必须挂在已存在的对象类型上;关系必须指向两个已存在的对象类型。任何一步提前做,后面都得回头返工。
一套最小可用的建模路径是:先定数据类型和列表,再把对象类型和它的属性建出来,然后配窗体和 TOC 视图让人能用,最后用关系把对象类型连起来。我见过有人先建关系再补对象类型,结果关系记录指向了空对象,删不掉也改不了,只能进数据库层面清理,这种血泪经验没必要重复一遍。
建模之前先在纸上画清楚三件事:有哪些业务对象、每个对象有哪些字段、对象之间是什么关系。这三件事想不清楚,后台点得再熟也只是把混乱搬进系统。
3.2 列表、序列与外部数据类型
数据类型这一章里,真正天天打交道的就三类,剩下的按需。
| 类型 | 适用场景 | 关键参数 | 容易踩的点 |
|---|---|---|---|
| 列表 List | 状态、类别、等级这类枚举 | 值(存库)与标签(显示)分开 | 改了值的存储内容,历史数据对不上 |
| 序列 Sequence | 自动编号、单据号 | 前缀、位数、当前值、步长 | 跨环境迁移时当前值没同步,编号重复 |
| 外部数据类型 | 映射外部库表字段做只读展示 | 数据源、表名、字段名 | 当成可写字段用,保存后数据回写不进去 |
列表最容易出问题的地方是“值”和“标签”混用。值才是写进数据库的,标签只是给人看的。上线之后再改值,等于把历史数据的含义改掉,界面上看着还是那个标签,报表里统计出来的却是另一回事。正确做法是新增一个值,把旧值保留或标记停用。
序列的当前值一定要在环境迁移时单独确认。测试环境跑了几百条单据,序列走到 500,生产环境序列还停在 1,导过去立刻撞号。手册里“配置序列”那一节讲的是怎么建,实际运维里更重要的是迁移动作之前先对齐当前值。
外部数据类型适合做“看一眼”的场景,比如把 ERP 里的物料描述拉过来在零部件页面展示。它是只读映射,不要指望在这边改完能回写过去,这类需求要走集成而不是配数据类型的路子。
3.3 对象类型的类结构、窗体与 TOC 视图
对象类型这一章是整本手册最厚的一块:关于、创建、类结构、窗体、TOC 视图、对象属性、版本、复制和粘贴。拆开看每一节都不难,难点在于它们互相牵连。
类结构决定继承。子类自动拥有父类的全部属性,父类后来加属性,子类跟着有;子类自己加的属性,父类看不见。这条规则带来一个很实际的约束:公共属性往上提,专用属性往下放。把本该在子类的字段塞进父类,等于让所有子类都背上一堆用不上的字段,窗体上还得一个个隐藏。
窗体不是一个对象类型只能有一个。同一个对象类型可以配多个窗体,按用途分:新建用一个精简的、编辑用一个完整的、只读查看用一个信息密度高的。绑定的时候按场景选,别指望一个窗体打天下。手册里“添加字段到窗体”这一节讲的是操作,实际配置时更要紧的是字段顺序——按业务阅读习惯排,而不是按建属性的时间顺序排。
TOC 视图控制左侧导航树怎么组织。同一个对象类型可以出现在多个视图节点下,方便不同岗位从自己的入口进去。视图配好之后要回到身份那边确认 TOC 访问权限,两处都对了菜单才出得来。
版本开关要慎重。对象类型一旦开启版本管理,后续所有记录都带版本维度,查询、关系、权限判定全都要多考虑一层。反过来说,已经上线跑了一段时间再打开这个开关,历史数据的版本处理会很麻烦。这个决定要在建模阶段就定下来。
3.4 关系与属性的边界
新手最容易犯的错是把所有东西都做成属性。两个对象之间有关联,就在主对象上建一个“关联编号”字段,然后在流程里靠人工维护一致性。这种设计撑不过三个月。
判断标准其实很简单:一对多的简单引用可以用属性(比如零部件上记一个物料编号),多对多、需要携带额外信息(数量、序号、生效日期)、需要独立权限控制的,一律用关系。
| 需求特征 | 用属性 | 用关系 |
|---|---|---|
| 基数 | 一对一、弱一对多 | 多对多、强一对多 |
| 是否需要携带附加字段 | 否 | 是(数量、序号、版本) |
| 是否需要独立授权 | 否 | 是 |
| 是否需要在两侧都能查看 | 否 | 是 |
建关系的顺序是:先建关系对象类型(如果关系本身要带字段),再建关系类型,指定源对象类型和目标对象类型,然后把关系绑定到对象类型的页签上,最后配可创建者权限。这五步里,第三步和第五步是最常漏的,漏了第三步关系建了但没挂上,漏了第五步页签出来了但新建按钮是灰的。
查询关系记录也能用 AML 验证,下面这条查某个零部件下挂的全部关联文档。
<AML> <!-- 查指定零部件下挂的全部文档关系 --> <Item type="Part Document" action="get" select="id,related_id,quantity,source_id"> <source_id> <Item type="Part" action="get" select="id"> <item_number>P-10001</item_number> </Item> </source_id> </Item> </AML>关系对象类型名一般是“源类型 + 空格 + 目标类型”的约定形式,related_id指向被关联的那一端,中间那层关系记录上就能挂数量、序号这类附加字段——这正是属性做不到的地方。
4. 生命周期与工作流:状态机和动作的分工
4.1 生命周期管状态,工作流管动作
这两个概念新手经常混。生命周期定义的是对象“处于什么状态”,以及状态之间允许怎么跳;工作流定义的是“跳之前要做完哪些事”。一个管静态位置,一个管动态过程。
绑定的方式是在对象类型上挂生命周期图,生命周期图的每一次转换可以触发一个工作流。比如零部件从“设计中”转到“审核中”,这次转换触发一个审批工作流,工作流里的活动全部完成后,对象才落到“审核中”这个状态。
理解这个分工很重要,因为它决定了你该去哪一章找答案。状态不对、按钮灰了,翻生命周期那一章;任务卡住、审批人收不到通知,翻工作流那一章。两章的内容不要混着查,越查越乱。
生命周期图的三个核心元素:状态、转换、对象行为。状态有名有值;转换定义从哪个状态到哪个状态、谁能触发;对象行为是转换发生时执行的方法,用来做校验、写历史、发通知这类动作。
4.2 配一条三段式生命周期
拿一个最常见的场景举例:草稿 → 审核中 → 已发布。三个状态,两次转换,一次回退。
| 状态 | 状态值 | 谁能触发下一状态 | 绑定的工作流 |
|---|---|---|---|
| 草稿 | Draft | 创建者本人 | 无 |
| 审核中 | In Review | 创建者提交,审批人推进 | 审批工作流 |
| 已发布 | Released | 无(终态) | 无 |
配置顺序是:先建生命周期图,再加三个状态,再加转换,然后给每次转换指定允许触发的身份,最后把工作流挂到“草稿 → 审核中”这次转换上。
已发布状态要做锁定处理。常见做法是在这个状态下把修改权限收回,只留只读;要改就走变更流程,生成新版本而不是直接改旧记录。这一条如果不做,发布的意义就没了。
提示:转换上绑定的身份不要直接选具体用户,选用户组或角色。具体用户一旦调岗,这条转换就成了死路,而且这种死路在测试环境往往发现不了,因为测试账号一直没动过。
4.3 活动、路径与通知的参数
工作流图由活动、路径、通知三部分组成。活动是节点,路径是连线,通知挂在活动和路径上。
活动分几类:开始、结束、普通任务。普通任务活动要配分配方式,静态分配直接选身份,动态分配则按对象上的某个属性去查身份。动态分配是这套东西里最有价值也最容易翻车的部分——它让审批人跟着数据走,比如按零部件所属部门自动找部门主管,而不是写死一个人。
动态分配配错的表现很统一:流程发起后任务一直挂着,谁的工作列表里都没有。原因通常是属性值取不到、取到的值匹配不上任何身份、或者身份的邮件地址为空导致通知发不出但任务其实已经生成。排查时先看任务有没有生成,再看生成在谁名下,最后才看通知。
路径上可以配条件,决定走哪条分支。条件表达式引用对象属性,写法要注意类型匹配——字符串和数字混着比,结果经常出人意料。通知模板里可以插入属性变量,模板写好后一定要用一个真实对象跑一遍看渲染结果,占位符拼错在界面上不会报错,只会渲染成空白。
4.4 活动工作列表与状态转变
活动生成后进入执行人的工作列表,执行人可以完成、委派或退回。这部分在手册里叫“活动工作列表”,实际使用中要关注的是任务的可见性——任务挂在一个身份上,这个身份的所有成员都能看到,所以给组分配任务比给个人分配更稳。
“状态转变”是工作流里一个特殊类型的路径,它不产生任务,走通后直接改对象状态。这条路径常用于自动推进:审批全部通过后自动把对象从审核中推到已发布,不需要再有人手动点一次。
顺序上要留意:工作流的完成和状态的转变不是原子的。工作流走完但状态没变,通常就是这条状态转变路径没配或者条件不满足。遇到这种“流程走完了状态还停着”的情况,先去看工作流图里有没有对应的状态转变路径,而不是去翻生命周期图的转换配置。
5. 常见问题与排查:八个真实的翻车现场
5.1 权限相关的三个坑
现象:新建的账号能登录,但左侧导航一片空白,用户以为登录失败。 原因:TOC 访问权限没配,或者配了但配在了另一个身份上。 解决:先确认账号确实在预期用户组里,再去用户组的 TOC 访问页签逐个勾选对象类型;改完让账号重新登录。
现象:确认有读权限,但用户在搜索里怎么都搜不到那条记录。 原因:发现权限没给。发现权限和读权限是两回事,前者决定“看不看得见”,后者决定“能不能打开”。 解决:在访问权限记录里把 can_discover 打开;如果对象类型上有多个权限记录,注意合并后的结果,任何一条拒绝都会生效。
现象:整条记录能保存,但保存后某个字段的值变成空了。 原因:属性级权限覆盖了对象级权限,这个字段对该身份是只读的,提交时被服务端丢弃。 解决:到对象类型的属性上查属性级权限记录,确认该身份的读写位;界面上不会提示“这个字段你没权限”,只会静默丢值,所以这类问题只能靠查。
5.2 建模相关的三个坑
现象:给对象类型加了属性,窗体上就是不显示。 原因:属性建好了,但没加到窗体上;或者加到了另一个窗体,而实际用的是默认窗体。 解决:打开对象类型绑定的那个窗体,在字段列表里手动添加;加完清理一次缓存再看。
现象:关系建好了,对象页面上却看不到对应的页签。 原因:关系类型没有绑定到对象类型的页签上,或者绑定了但可创建者权限没开导致页签被隐藏。 解决:在对象类型的关系页签里确认绑定关系,再给对应身份开可创建者权限;两处都对了页签才出来。
现象:删掉一个不用的属性之后,历史记录里相关的数据显示异常。 原因:属性删除是物理删除,历史数据里对应的字段值失去了定义。 解决:不用的属性不要删,改成在窗体上隐藏。隐藏是显示层的事,不动数据;删除是结构层的事,动了就回不去。
5.3 流程相关的两个坑
现象:审批按钮是灰的,用户点不动。 原因:当前身份不在这次转换允许触发的名单里;或者对象当前状态值和转换的起始状态对不上。 解决:先看对象当前状态值,再看转换配置的起始状态,最后看转换绑定的身份;三者任何一个不匹配按钮都是灰的。
现象:工作流发起后,任务在工作列表里找不到。 原因:动态分配取到的属性值为空,或者取到的值匹配不上任何身份;也可能是任务生成了但归属身份没有成员。 解决:先查工作流实例和活动实例是否存在,存在的话看归属身份是谁,再回头查对象属性值和身份配置。
6. 从测试到生产:包定义与首选项的三道验证
配置做完只是完成一半,把配置从测试环境搬到生产环境才是真正考验细节的地方。手册第十三章讲包定义,第十二章讲首选项,第十一章讲国际化,这三块内容单看都很薄,合在一起才是迁移的全貌。
6.1 包定义导出的边界
包定义能把对象类型、属性、窗体、生命周期图、工作流图这些配置打包导出,导入到另一个环境。但它有明确的边界:数据不导、权限记录不导、用户和用户组默认不导。
这意味着导入之后必须补三件事:重建用户组和角色、重配权限记录、重新确认 TOC 访问权限。我一般会在导入完成后先跑一遍第 2 章那两条 AML 查询,把权限记录拉出来对照测试环境的结果,缺哪条补哪条。
| 验证项 | 检查方式 | 通过标准 |
|---|---|---|
| 对象类型与属性 | 打开对象类型看属性列表 | 属性数量、类型、必填标记一致 |
| 窗体与 TOC 视图 | 用普通账号登录看菜单 | 入口与测试环境一致 |
| 生命周期与工作流 | 走一遍完整状态流转 | 状态、任务、通知全通 |
| 权限记录 | 跑 AML 查询对比 | 记录条数与关键位一致 |
| 序列当前值 | 查序列配置的当前值 | 大于生产已有最大编号 |
6.2 首选项与环境差异
首选项存放的是跨模块的全局参数,比如默认语言、邮件服务器、文件存储路径、日期格式。这些东西在测试环境和生产环境几乎一定不同——邮件服务器不同、文件路径不同、语言设置可能也不同。
导入包定义时不要把首选项一起带过去。正确做法是导出前把环境相关的首选项排除,导入后在生产环境手工配一遍。判断标准很简单:这个值换了环境会不会变?会变的就别打包。
可配置历史记录也值得单独确认一遍。哪些字段的变更要留痕、留痕保留多久,这些策略在测试环境往往开得很全,上生产前要按实际审计要求收一遍,否则历史表会被无意义的字段变更撑爆。
6.3 收尾的一点个人习惯
早些年我做环境迁移,习惯是“导进去能打开就算成功”,结果有一次上线第二天业务反馈某个审批节点没人收得到通知,查了半天是动态分配依赖的那个属性在生产环境的列表值里少了一个选项。从那以后我每次迁完配置,都会强制走一遍“建一条真实数据 → 走完整个生命周期 → 检查每个节点的任务归属和通知收件人”这条链路,一步不跳。
这条链路跑通,配置才算真的搬过去了。手册给的是每一项怎么配,能不能用还得靠自己跑一遍。希望帮到你。
本文还有配套的精品资源,点击获取