简介:本资源是一份面向IT运维工程师、资产管理系统实施人员及Maximo初学者的入门级培训文档,聚焦Maximo平台核心配置能力培养,解决企业资产建模、数据库结构定义与属性精细化管理等实际落地问题。文档以Word格式(.doc)单文件呈现,体积5.96MB,内容完整覆盖数据库配置与属性配置两大模块:第一章详述对象建模逻辑,包括主对象(Asset/WorkOrder/Location)、新建对象流程、持久性机制、级别分层及类模板设计;第二章深入属性配置要点,涵盖类型与长度约束、等同属性复用、搜索类型设定、虚拟字段生成逻辑、缺省值与自动编号规则、字段绑定类等关键实践。目录结构清晰,含13个子节与配套练习,便于按需精读与实操对照。目前已有254人学习下载,是理解Maximo底层数据模型与配置体系不可多得的系统化中文参考资料。
1. Maximo 是什么:一个帮你管好“公司里所有东西”的数字管家
你有没有想过,一家工厂里成百上千台设备、写字楼里几十部电梯、医院里几百台医疗仪器——它们什么时候该保养?坏了找谁修?备件库存还够不够?上个月哪台机器停机最久?这些问题,靠Excel表格和微信群根本理不清。Maximo 就是为解决这类问题而生的:它不是个简单的记账软件,而是一套企业级资产全生命周期管理系统——从设备采购入库、日常巡检、故障报修、计划性维护,到报废处置,所有动作都在线上留痕、自动流转、数据可查。它把“人、事、物、钱、时间”全串在一起,让维修不再靠喊,保养不再靠猜,决策不再靠拍脑袋。对刚接触它的新人来说,Maximo 像一个功能强大但略显厚重的“工业操作系统”:界面看着像老派企业软件,背后却有清晰的逻辑骨架——对象(相当于数据库里的表)、属性(相当于字段)、域(相当于下拉选项的取值范围)、应用程序(相当于你每天点开的那个工单录入页面)。它不追求炫酷动效,但求稳、准、可配置、可扩展。如果你的工作涉及设备管理、设施运维、EAM(企业资产管理系统)实施或二次开发,那 Maximo 就是你绕不开的“基本功”。这份《Maximo基本培训.doc》不是泛泛而谈的概念手册,而是从零开始带你亲手搭起第一个可运行的自定义对象、做出第一个能查能改的工单页面——就像学做饭,先别急着研究米其林酱汁,先学会怎么淘米、点火、看锅里水开了没。
2. 先搞懂一个概念:Maximo 的“对象”到底是什么,为什么它比 Excel 表格难配却更强大
在 Maximo 里,“对象”(Object)这个词出现频率极高,但它绝不是编程语言里的抽象类,也不是数据库管理员嘴里的“schema”。你可以把它理解成“业务实体的数字身份证模板”。比如,你公司有一台编号为 “PUMP-001” 的水泵,它有品牌、型号、安装位置、上次保养日期、当前状态等信息——这些信息不能零散地堆在一张大表里,而是要归到一个叫 “Asset”(资产)的对象下;再比如,每次报修生成的“工单”,它有申请人、设备号、故障描述、预计完成时间——这些就属于 “WorkOrder”(工单)对象。每个对象,就是一类业务数据的结构化定义。它决定了:这个东西在系统里叫什么名字(对象名)、有哪些字段(属性)、字段能填什么类型的数据(文本/数字/日期)、哪些字段必须填(必填项)、哪些字段可以下拉选择(绑定域)、它和其他对象怎么关联(比如一个工单属于哪个资产)、它存到数据库哪张表里(持久性)、甚至它在流程中能不能当起点(主对象)。这正是它比 Excel 强大的地方:Excel 表格是静态的容器,你改了表头,数据不会自动校验;而 Maximo 对象是带规则的“活模板”,一旦定义好,系统就知道怎么验证输入、怎么联动查询、怎么触发后续流程。新手最容易卡在这一步:看到“新建对象”按钮就点,填完名字点保存,结果发现界面上啥也没变,数据库里也没多出一张表——别慌,这不是失败,而是 Maximo 的设计哲学:所有配置都是“声明式”的,不是“即时生效”的。你只是画好了图纸,还没开工建房。真正的建表动作,要等到后面执行 “configdb”(配置数据库)这个关键步骤。所以,别急着找“刷新”按钮,先静下心来,把对象的“身份信息”填准确。
2.1 新建对象:三步走,填对名字、描述、级别,就成功了一半
新建对象是整个 Maximo 配置的起点,操作路径很直接:登录系统 → 进入“数据库配置”应用(Database Configuration)→ 点击工具栏上的“新建”按钮。这时弹出的对话框,就是你的第一张“数字身份证申请表”。重点填三项:
- 对象名(Object Name):必须用英文,且只能是字母、数字、下划线,不能有空格或中文。推荐用业务缩写,比如“泵”就叫
PUMP,“阀门”叫VALVE。这个名字会成为数据库表名、Java 类名、API 路径的基础,一旦定下,后期修改成本极高,务必想清楚。 - 描述(Description):这里可以写中文,比如“水泵资产主表”,它是给其他同事看的说明文字,不影响系统运行,但写清楚能避免日后自己都忘了当初为啥建它。
- 级别(Level):这是新手最容易忽略也最易踩坑的选项。它决定了这个对象的适用范围。常见三个值:
SYSTEM(系统级):默认值,适用于全公司通用的数据,比如“供应商”、“人员”。ORG(组织级):适用于按“分公司”或“事业部”隔离的数据,比如“各事业部的预算科目”。选这个级别,系统会强制要求你必须添加一个叫ORGID的字段,用来标记这条记录属于哪个组织。SITE(站点级):适用于按“具体厂房”或“办公地点”隔离的数据,比如“某车间的设备台账”。选这个,就必须有SITEID和ORGID两个字段。
提示:如果你不确定该选哪个级别,先选
SYSTEM。它最宽松,后续如果真需要按组织或站点隔离,可以通过“数据限制”权限来控制,比改级别安全得多。
2.2 主对象与持久性:两个开关,决定你的对象能不能“干活”和“存住”
新建完对象,别急着关窗口,往下看还有两个关键复选框:“主对象”(Primary Object)和“持久性”(Persistent)。它们就像对象的“上岗证”和“户口本”,缺一不可。
主对象(Primary Object):勾上它,意味着这个对象被 Maximo 认证为“核心业务实体”,可以作为工作流(Workflow)的起点。比如,“工单”(WORKORDER)是主对象,所以你能从它发起一个审批流;但“工单附件”(WARRANTY)就不是,它只是附属品,不能单独走流程。如果你建的
PUMP对象,未来要支持“泵的年度大修计划”这种完整流程,那就必须勾上。不勾,它永远只是个静态数据容器,无法驱动业务。持久性(Persistent):这是决定对象“生死”的开关。勾上,表示你希望 Maximo 在数据库里真真正正地创建一张物理表来存储它的数据,
configdb后,这张表就会出现在 Oracle 或 SQL Server 里,所有增删改查都落盘。不勾,它就是一个“虚拟对象”(Virtual Object),只存在于 Maximo 的内存和配置中,configdb后数据库里啥也没有。虚拟对象常用于临时计算、视图聚合,或者做中间过渡,但绝对不能用来存你真正要管的设备、工单、人员。新手常犯的错是:建了个PUMP对象,没勾持久性,configdb后发现数据输不进去,以为系统坏了——其实是对象没“落户”,自然存不了“户口”。
2.3 避坑:新手建对象时最常翻车的 4 个地方
现象:点击“新建”后,填完名字点“确定”,界面上啥反应都没有,列表里也找不到新对象。
原因:你可能没点最下方的“应用”(Apply)按钮,只点了“确定”(OK)。在 Maximo 的很多配置界面,“确定”只是关闭当前弹窗,而“应用”才是把你的修改真正提交到当前配置会话中。
解决:每次填完新建对象的信息,务必找到并点击弹窗右下角的“应用”按钮,看到对象名出现在左侧列表里,才算成功。
现象:configdb执行完,数据库里确实多了张PUMP表,但用 SQL 查询发现只有PUMPID和DESCRIPTION两个字段,你自己加的MANUFACTURER(厂家)、INSTALLDATE(安装日期)全没了。
原因:你在“对象”界面新建了对象,但没切换到“属性”(Attributes)标签页去添加这些字段。对象名只是“户口本封面”,字段才是“户口本内页”的具体内容。
解决:新建对象后,一定要在左侧列表里选中它,然后点击上方的“属性”标签页,再点“新建”去逐个添加你需要的字段。
现象:建了个SITE级别的PUMP对象,configdb时报错,提示SITEID字段不存在或类型不对。
原因:SITE级别是强约束,它不仅要求你有SITEID字段,还要求这个字段的类型必须是ALN(字符型),长度至少为 20,并且必须设置为“等同属性”(Equivalency),指向系统内置的SITE对象的SITEID字段。
解决:在“属性”页添加SITEID字段时,类型选ALN,长度设为 20;添加完,在该字段行上右键 → “等同属性” → 在弹出窗口里找到SITE对象,选中它的SITEID,点确定。
现象:configdb执行成功,但登录应用后,发现PUMP对象的列表页面一片空白,点“新建”也打不开表单。
原因:configdb只负责建数据库表和字段,它不管界面长什么样。你还需要用“应用程序设计器”(Application Designer)去创建一个专门展示PUMP数据的应用程序,并授权给用户。没有这个“门面”,数据就在后台躺着,用户根本看不见。
解决:configdb完成后,立刻进入“应用程序设计器”,按文档第三章的步骤,新建一个名为PUMPAPP的应用,把PUMP对象拖进去,放几个文本框控件,保存发布。这才是让用户能“摸得着”的第一步。
3. 第一个实战:从零开始,5 分钟跑通你的第一个 Maximo 自定义对象(含 configdb 全流程)
光说不练假把式。现在,我们就用这份《Maximo基本培训.doc》里的方法,亲手搭一个最简化的PUMP(水泵)对象,并让它真正能在系统里存数据、查数据。整个过程不需要写一行 Java 代码,全是点点点+填填填,但每一步都直击 Maximo 的核心逻辑。准备好,我们开始。
3.1 步骤一:在数据库配置里画好“图纸”——新建 PUMP 对象及字段
- 登录 Maximo 系统,确保你有“系统管理员”(System Administrator)或“数据库配置”(Database Configuration)应用的访问权限。
- 在顶部导航栏,找到并点击 “系统配置”(System Configuration)→ “平台配置”(Platform Configuration)→ “数据库配置”(Database Configuration)。这会打开一个类似 Excel 表格的界面。
- 点击工具栏上的 “新建”(New)按钮。弹出“新建对象”对话框。
- 按照前面讲的避坑要点,填写:
- 对象名(Object Name):
PUMP - 描述(Description):
水泵资产主表 - 级别(Level):
SYSTEM(先选最简单的) - 勾选 “主对象”(Primary Object)和 “持久性”(Persistent)
- 对象名(Object Name):
- 点击 “应用”(Apply)按钮。此时,左侧对象列表里应该出现了
PUMP。 - 在左侧列表中,单击选中
PUMP,然后点击上方的 “属性”(Attributes)标签页。 - 点击 “新建”(New)按钮,开始添加字段:
- 字段名(Attribute Name):
PUMPID,类型(Type):ALN,长度(Length):20,勾选 “主键”(Primary Key)和 “必填”(Required)。这是系统自动加的,但你要确认它存在。 - 字段名:
DESCRIPTION,类型:ALN,长度:100。这也是系统自动加的,确认即可。 - 字段名:
MANUFACTURER,类型:ALN,长度:50,描述写“生产厂家”。 - 字段名:
INSTALLDATE,类型:DATE,长度不用管(DATE 类型固定),描述写“安装日期”。 - 字段名:
STATUS,类型:ALN,长度:10,描述写“当前状态”。(注意:这里先不绑定域,后面第二章再做)
- 字段名(Attribute Name):
- 每添加一个字段,都点一次 “应用”(Apply)。全部加完后,
PUMP对象的“图纸”就画完了。
3.2 步骤二:执行 configdb —— 把图纸变成真实的数据库表
这一步是魔法发生的时刻。configdb不是一个按钮,而是一个后台任务,它会扫描你所有“待处理”的对象变更,然后生成 SQL 语句,去数据库里建表、加字段、改索引。
- 在“数据库配置”应用的界面,点击顶部菜单栏的 “数据库配置”(Database Configuration)→ “配置数据库”(Configure Database)。
- 弹出的窗口里,你会看到一个列表,里面列出了所有你刚刚修改过、但尚未
configdb的对象。你应该能看到PUMP,状态是 “待添加”(Pending Add)。 - 确保
PUMP这一行被选中(勾选左侧的复选框)。 - 点击右下角的 “确定”(OK)按钮。系统会弹出一个进度条,显示 “正在配置数据库…”。
- 等待几秒到一分钟(取决于服务器性能),进度条消失,弹出提示 “数据库配置已成功完成”。恭喜,
PUMP表已经诞生在你的数据库里了!
提示:
configdb是一个高危操作,它会直接修改生产数据库结构。在真实项目中,绝对不要在生产环境直接执行。它应该在测试环境反复验证无误后,由 DBA 审核 SQL 脚本,再安排在维护窗口期执行。我们这里是在学习环境,所以可以大胆尝试。
3.3 步骤三:验证成果——用 SQL 和 Maximo 界面双重确认
configdb成功只是第一步,我们必须亲眼看到数据能存能取,才算真正跑通。
方式一:用数据库工具查表如果你有数据库客户端(如 Oracle SQL Developer, SQL Server Management Studio),连上 Maximo 的数据库,执行:
SELECT * FROM PUMP;你应该能看到一个空表,但表结构(字段名、类型)完全符合你刚才的定义。这证明
configdb的建表动作是成功的。方式二:在 Maximo 里看数据
configdb后,Maximo 并不会自动给你一个PUMP的数据录入页面。但有一个隐藏的“万能入口”可以快速验证:在 Maximo 任意页面的地址栏末尾,手动加上/pump,然后回车。例如,原本地址是https://maximo.example.com/maximo/webclient/,就改成https://maximo.example.com/maximo/webclient/pump。如果一切正常,你会看到一个非常朴素的列表页面,标题是 “Pump”,下面有个 “新建” 按钮。点它,就能输入PUMPID、MANUFACTURER等信息,点“保存”,数据就真的存进数据库了!这就是 Maximo 的“默认应用程序”机制——只要对象存在且有持久性,系统就自动生成一个基础 CRUD(增删改查)界面。
3.4 关键参数解释:为什么这几个字段名和类型是“黄金组合”
PUMPID(ALN, 20, 主键):这是对象的“身份证号”。ALN(Alphanumeric)类型意味着它可以是纯数字(001)、纯字母(PUMP-A)或混合(PUMP-001),灵活性最高。20 位长度足够覆盖绝大多数编码规则。设为主键,保证了每台泵的唯一性,这是所有业务逻辑的基石。INSTALLDATE(DATE):这里特意选了DATE而不是DATETIME。因为“安装日期”通常只关心年月日,精确到秒反而增加录入负担和数据噪音。DATE类型在 Maximo 里会自动渲染成一个日历控件,用户点一点就能选,比手动输2023-10-27友好太多。STATUS(ALN, 10):虽然最终我们会给它绑定一个“域”(Domain)来提供下拉选项(如ACTIVE,INACTIVE,RETIRED),但字段本身用ALN是最稳妥的。如果一开始就用YORN(是/否),那以后想加第三个状态(比如UNDER_MAINTENANCE)就麻烦了。ALN留足了扩展空间。
4. 为什么必须学“域”:它让你的下拉菜单不再靠手输,还能自动校验和联动
如果你的PUMP表里,STATUS字段允许用户随便输RUNNING、running、Runing、1、0……那一个月后,报表里会出现十几个拼写各异的状态,统计口径彻底混乱。这就是“域”(Domain)存在的意义:它是一份受控的、可复用的“标准答案库”。你可以把它想象成 Excel 里的“数据验证”下拉列表,但功能强大百倍。一个域可以被无数个对象的无数个字段共享,改一处,全局生效;它能定义数据的合法性(比如STATUS只能是ACTIVE/INACTIVE),能控制显示的中文名(ACTIVE显示为“启用”),甚至能决定某个状态下,界面上哪些字段是灰色不可编辑的(这叫“条件显示”,文档第四章会讲)。对于新手,域是提升数据质量、降低用户操作门槛的第一道防线。它不炫技,但极其务实。学不会对象,你建不出新表;学不会域,你建出来的表,数据就是一锅粥。
4.1 添加域:三步定义一份“标准答案”
在 Maximo 里,域的管理入口是独立的:“系统配置” → “平台配置” → “域”(Domains)。我们来为PUMP的STATUS字段创建一个名为PUMPSTATUS的域。
- 进入“域”应用,点击 “新建”(New)。
- 填写基本信息:
- 域标识(Domain Identifier):
PUMPSTATUS(必须全大写,无空格,这是域的唯一 ID) - 描述(Description):
水泵状态域 - 域类型(Domain Type):
ALN(因为我们的STATUS字段是ALN类型,必须一致)
- 域标识(Domain Identifier):
- 点击 “应用”(Apply),域就创建好了。但此时它还是空的,没有“标准答案”。
4.2 编辑域值:往“答案库”里填上你的标准选项
创建好域,下一步就是填充内容。这就像在 Excel 数据验证里,一条一条输入下拉选项。
- 在“域”列表里,找到并单击选中
PUMPSTATUS。 - 点击上方的 “域值”(Domain Values)标签页。
- 点击 “新建”(New)。
- 填写:
- 值(Value):
ACTIVE(这是存到数据库里的真实值,必须是英文、大写、无空格) - 显示值(Display Value):
启用(这是用户在界面上看到的友好中文名) - 序号(Sequence):
10(决定下拉菜单里的排序,数字越小越靠前)
- 值(Value):
- 再点一次 “新建”,添加第二条:
- 值:
INACTIVE - 显示值:
停用 - 序号:
20
- 值:
- 每添加一条,都点 “应用”(Apply)。完成后,“域值”列表里应该有两条记录。
4.3 属性绑定域:把“答案库”和你的字段“锁死”
现在“答案库”有了,但PUMP表的STATUS字段还不知道要去哪里找答案。这就需要“绑定”。
- 回到 “数据库配置” 应用。
- 在左侧列表里,找到并单击选中
PUMP对象。 - 切换到 “属性”(Attributes)标签页。
- 在列表中找到
STATUS这一行,双击它,或者右键 → “属性”(Properties)。 - 在弹出的属性窗口里,找到 “域”(Domain)这一栏。
- 点击右侧的放大镜图标(浏览按钮),在弹出的域列表里,找到并双击
PUMPSTATUS。 - 点击 “确定”(OK),再点 “应用”(Apply)保存对
STATUS字段的修改。
提示:绑定域后,
STATUS字段的类型会自动从ALN变成DOMAIN,这表示它现在受控于PUMPSTATUS域。你再也无法手动输入ACTIVE以外的值了,只能从下拉菜单里选。
4.4 避坑:域绑定后常见的 3 个“为什么不行”
现象:给STATUS绑定了PUMPSTATUS域,但在PUMP的数据录入页面,STATUS字段还是个普通文本框,没有下拉箭头。
原因:你只绑定了域,但没有执行configdb。域的绑定信息也是配置的一部分,需要configdb才能推送到前端界面渲染引擎。
解决:回到“数据库配置”应用,执行一次configdb(哪怕只选中PUMP对象),然后刷新浏览器页面。
现象:configdb后,STATUS字段变成了下拉框,但选项里只有ACTIVE,没有INACTIVE。
原因:你在“域值”里添加了INACTIVE,但可能忘记点 “应用”(Apply)了。域值的添加和对象属性的添加一样,不点“应用”就不生效。
解决:重新进入“域”应用,找到PUMPSTATUS,检查“域值”列表,确认INACTIVE行存在且序号正确。如果不存在,重新添加并点“应用”。
现象:STATUS下拉框里,ACTIVE和INACTIVE都有,但选了INACTIVE后,点“保存”,系统报错:“STATUS 字段值无效”。
原因:INACTIVE这个值,在数据库里可能已经被其他业务逻辑(比如一个 MBO 类的init()方法)硬编码校验为非法。或者,PUMP对象的STATUS字段被设置了“非空”约束,但PUMPSTATUS域里没有定义一个空值(NULL)选项。
解决:这是一个进阶问题,说明你的域和业务逻辑有冲突。最简单的办法是,在PUMPSTATUS域里,添加一个值为空、显示值为“请选择”的域值,序号设为0,并确保它被设为“默认值”(Default Value)。这样用户第一次进入时,就不会误触非法状态。
5. 下一步学什么:从“能跑通”到“能定制”,我的血泪经验路径图
当你亲手完成了PUMP对象的创建、configdb、域绑定,并且在界面上成功录入第一条数据时,恭喜你,已经跨过了 Maximo 学习路上最陡峭的那道坎。接下来的路,会越来越宽,但也越来越需要你主动去“拆解”和“组装”。我第一次学的时候,就卡在“知道每个零件怎么用,但不知道怎么搭成一辆能跑的车”。后来才明白,Maximo 的学习不是线性的,而是一个“螺旋上升”的过程:先建立宏观认知,再钻进一个模块深挖,最后跳出来,用更高维度的视角把它们串起来。以下是我为你梳理的、经过实践验证的下一步学习路径,它不追求速成,但保证每一步都扎实、可落地。
5.1 路径一:从“看数据”到“改界面”——应用程序设计器(Application Designer)是你的画布
你现在能录入PUMP数据了,但那个默认的、只有几行文本框的界面,显然没法满足业务需求。比如,你可能需要:
- 把
MANUFACTURER字段放在第一行,INSTALLDATE放在第二行,而不是默认的乱序。 - 给
STATUS字段加一个醒目的颜色标识(比如启用是绿色,停用是红色)。 - 在页面底部加一个“关联工单”表格,一键查看这台泵的所有维修历史。
这些,全都要靠“应用程序设计器”(Application Designer)来实现。它不是写代码,而是一个可视化拖拽工具,就像搭乐高。文档第三章就是它的操作手册。我的建议是:不要试图一次性学会所有控件。先专注攻克最常用的三个:
- 文本框(Text Box):这是你最熟悉的,用来显示和编辑单个字段。重点学它的“只读”(Read-only)和“必填”(Required)属性,这能瞬间提升数据质量。
- 表(Table):这是展示“一对多”关系的神器。比如,一个
PUMP对应多个WORKORDER。在PUMP应用里拖一个Table控件,把它绑定到PUMP的子对象WORKORDER上,所有相关工单就自动列出来了。 - 标签页组(Tab Group):这是让界面不显得拥挤的“分隔符”。把“基本信息”、“技术参数”、“维修历史”分别放在不同的标签页里,用户体验会好十倍。
从那以后我每次新建一个应用,都强制走一遍“三步法”:先拖一个
Table放在最上面,绑定主对象;再拖一个Tab Group,把不同维度的信息分开展示;最后,在每个标签页里,只放 3-5 个最关键的Text Box。这个习惯让我设计的界面,从来不会被用户吐槽“找不到我要的字段”。
5.2 路径二:从“存数据”到“管逻辑”——MBO 类是你的业务规则引擎
当你开始思考“什么样的泵需要每月点检?”、“停用的泵能不能再生成新工单?”这类问题时,就到了必须接触 MBO(Managed Business Object)类的时候了。它不是界面,而是藏在后台的“大脑”,负责执行所有业务规则:数据校验、默认值填充、状态流转、关联数据同步。文档第四章讲的就是这个。对新手,别被“Java 类”吓到。你不需要从零写,而是要学会“继承”和“重写”。比如,系统自带的AssetMBO 类已经定义了“资产报废”的逻辑,你只需要新建一个PumpMbo类,继承它,然后重写save()方法,在里面加一句“如果STATUS是INACTIVE,则自动把LASTINSPECTIONDATE清空”。就这么简单。我的血泪经验是:永远先查文档,再查源码,最后才动手写。Maximo 的标准 MBO 类源码是公开的,里面充满了最佳实践。花一小时读懂Asset.save(),比自己闭门造车写三天都强。
5.3 路径三:从“单点突破”到“全局管控”——权限(Security)是你的护城河
当你的PUMP应用上线,有 10 个工程师都能编辑时,问题就来了:王工只能改自己车间的泵,李工只能看不能删,张经理要能看到所有数据……这时候,“权限”就不再是可选项,而是必选项。文档第五章讲的就是这个。它包含三层:
- 应用程序授权:决定谁能看见
PUMPAPP这个菜单。 - 操作授权:决定谁能对
PUMP数据执行“新建”、“删除”、“导入”等动作。 - 数据限制:这是最精妙的一层,它能让你在同一个
PUMPAPP里,让不同的人看到不同的数据子集。比如,通过SITEID字段,自动过滤出只属于当前用户所在站点的泵。
从那以后我每次交付一个新应用,都强制走一遍“权限三问”:这个应用,谁需要看?谁需要改?他们各自能看到哪些数据?把这三个问题的答案,清清楚楚地写在需求文档里,再交给系统管理员去配置。这个习惯,帮我避免了 90% 的上线后权限投诉。
希望帮到你。
本文还有配套的精品资源,点击获取