简介:本资源是一份面向Maximo初学者与实施人员的系统性入门培训文档,聚焦资产管理系统的核心配置逻辑与实操基础,适用于企业IT运维、EAM项目实施及设施管理岗位人员快速掌握平台底层架构。文档以Word格式(.doc)单文件呈现,体积为5.96MB,内容结构清晰、章节完整,覆盖数据库配置与属性配置两大核心模块:第一章详解对象建模(含主对象、新建对象、类、级别、持久性)、数据库连接与configdb配置;第二章深入属性机制(类型与长度、等同属性、虚拟字段、缺省值、自动编号及字段绑定类),并辅以test表等实操练习示例。目前已有254人学习下载,读者可直接获取体系化配置知识框架、关键概念对照说明及可复用的配置思路,为后续工作流定制、数据模型扩展与系统集成打下坚实基础。
1. Maximo 是什么:一个帮你管好“公司里所有东西”的数字管家
你有没有想过,一家工厂里几百台设备、写字楼里几十部电梯、医院里上千件医疗仪器——这些资产一旦出问题,谁来记?谁来修?修到哪一步了?下次该保养是什么时候?如果全靠Excel表格和纸质单子,光是找一份去年某台空调的维修记录,可能就要翻半天。Maximo 就是为解决这种“东西太多、人太忙、事太杂”而生的系统——它不是个简单的记账软件,而是一套企业级资产全生命周期管理平台。你可以把它理解成给整个公司的“固定资产+维修工单+备件库存+人员排班”配了个超级大脑:设备一报修,自动派单给最近的工程师;维修过程拍照上传,历史记录永久可查;备件库存低于阈值,系统自动提醒采购;甚至能算出某台泵机过去三年的故障率,帮管理层决定是修还是换。它不写代码、不画电路图,但所有操作都落在“对象—属性—关系”这套清晰骨架上。这份《Maximo基本培训.doc》就是从零带你搭起这副骨架的第一块砖:先学会在系统里“造表”(数据库配置),再“填字段”(属性)、“连关系”(关联)、“设权限”(谁能看到什么)——就像教一个新手木匠,先认准锤子、锯子、钉子分别叫什么、怎么用,才能开始组装第一张工作台。你不需要懂Java或Oracle底层,只要愿意点几下鼠标、看懂界面提示,就能亲手配置出属于你业务场景的第一个可运行模块。
2. 先搞懂一个概念:Maximo 的“对象”到底是什么,为什么它比 Excel 表格强十倍
很多新手第一次打开 Maximo 的数据库配置界面,看到“对象”“属性”“关系”这几个词就懵了:这不就是数据库里的“表”“字段”“外键”吗?干嘛要换名字?别急,咱们用一个真实场景来拆解——假设你要管公司所有打印机:
2.1 为什么不能直接用 Excel?三个血泪教训告诉你
教训一:改名像拆弹
你在 Excel 里把“HP_LaserJet_4000”改成“HP_LaserJet_Pro_4000_MFP”,所有引用它的维修单、耗材申请单、责任人名单全得手动改一遍。而在 Maximo 里,你只改一次“对象名”,所有关联数据自动同步——因为系统认的是“对象ID”,不是名字字符串。教训二:查数据像大海捞针
想查“所有2023年故障超过3次的惠普打印机”,Excel 得写复杂公式+筛选+复制粘贴;Maximo 只需在“打印机对象”上点开“搜索类型”设为“全文检索”,输入关键词,秒出结果——背后是它把“品牌”“型号”“故障次数”这些字段提前做了索引优化。教训三:权限控制像纸糊的
Excel 文件发给5个人,其中2个不该看维修成本的,你只能靠自觉。Maximo 里,“打印机对象”的“采购价”字段可以单独设为“仅管理员可见”,普通运维员登录后根本看不到这一列——权限细到字段级,不是文件级。
提示:Maximo 的“对象”本质是带行为规则的数据模板。它不只是存数据的容器,还内置了“新建时自动填入当前日期”“删除前必须确认关联工单”“修改状态需审批”等逻辑。Excel 表格只有“存”,Maximo 对象有“存+管+控”。
2.2 对象的五个关键属性:新手必须盯住的“生命体征”
打开《Maximo基本培训.doc》第4页“1.1 新建对象”,你会看到创建对象时必填的5个核心项。别跳过!它们决定了这个对象能不能活、怎么活:
| 字段名 | 实际含义 | 新手常踩的坑 | 正确做法 |
|---|---|---|---|
| 对象名(Object Name) | 数据库表名,必须全大写、无空格、不超过30字符(如PRINTER) | 用中文“打印机”或带空格“HP Printer” → 系统直接报错 | 用英文缩写:PRINTER、TONER_INV(耗材库存)、MNT_LOG(维修日志) |
| 描述(Description) | 给人看的说明,支持中文(如“公司所有办公打印机主表”) | 留空或写“测试用” → 后期别人接手完全看不懂 | 描述要具体:“存储所有在用/闲置/报废的激光打印机基础信息及位置” |
| 主对象(Primary Object) | 决定能否挂工作流(如审批流、自动派单) | 把PRINTER_PARTS(配件表)设为主对象 → 流程引擎找不到入口 | 只有核心实体设主对象:ASSET(资产)、WORKORDER(工单)、PRINTER(打印机) |
| 持久性(Persistent) | 是否真在数据库建物理表 | 误关持久性 → 配置完发现数据存不进库,全是内存临时数据 | 99%场景必须勾选!除非做纯计算用的虚拟汇总表(如“各厂区月度故障率视图”) |
| 级别(Level) | 控制数据隔离范围:SYSTEM(全公司通用)、ORG(按部门)、SITE(按具体地点) | 给总部用的VENDOR(供应商表)设SITE级 → 分公司看不到总部供应商 | SYSTEM用于基础码表(国家、币种);SITE用于设备位置(北京朝阳区 vs 上海浦东区) |
2.3 一个真实例子:3分钟建出你的第一个可运行对象
我们以“会议室预约表”为例,跟着文档第5页“1.1 新建对象”一步步操作(无需安装环境,纯界面认知):
对象名:ROOM_BOOKING 描述:存储所有会议室预约申请,含申请人、时间、用途、是否通过 主对象:✓(需要走审批流程) 持久性:✓(必须存档备查) 级别:SITE(不同办公地点会议室独立管理)注意:此时你只是在 Maximo 界面里“画了个蓝图”,数据库里还没有
ROOM_BOOKING这张表!就像建筑师画完图纸,还得施工队(configdb 工具)去盖楼。这点新手最容易误解——以为点完“保存”就万事大吉,其实后面还有关键一步。
2.4 常见问题排查:为什么我新建的对象“看不见”?
现象:在数据库配置界面点了“新建对象”,填完信息点保存,返回列表却找不到刚建的ROOM_BOOKING。
原因:Maximo 默认只显示“已发布”状态的对象。新建对象初始状态是“待添加(Pending Add)”,需手动发布或执行 configdb 才生效。
解决:在对象列表右上角点“过滤器” → 勾选“显示待处理对象” → 找到ROOM_BOOKING→ 右键“发布” → 再刷新列表。
现象:发布后,在“应用程序设计器”里找不到ROOM_BOOKING这个对象作为数据源。
原因:对象发布只是让系统“认识”它,但没告诉前端界面“允许调用”。还需进入“应用程序设计器” → 新建应用 → 在“数据源”下拉框中手动添加该对象。
解决:文档第三章第19页“1.16 控件选用板”会讲如何绑定对象到界面,这是下一步。
现象:想给ROOM_BOOKING加个“预约时间”字段,类型选了DATE,但保存后发现只能输年月日,没有时分秒。
原因:DATE类型天生不含时间,DATETIME才包含。Maximo 对字段类型极其严格,选错类型后期无法直接修改。
解决:删掉错误字段,重新建一个类型为DATETIME的字段(文档第8页“1.6 属性类型和长度”)。记住口诀:“要时间,选 DATETIME;只要日期,才用 DATE”。
3. 第一个实操:用“属性”给对象装上“器官”,让数据真正活起来
建好ROOM_BOOKING这个“骨架”后,它还只是个空壳。现在我们要给它装上“眼睛”(看申请人)、“耳朵”(听预约理由)、“心脏”(记录时间)——这些就是“属性”。文档第7页“3 属性”说得很清楚:属性 = 数据库表的字段。但 Maximo 的属性远不止存数据,它自带“智能器官”。
3.1 属性的七种类型:选错类型,后面全是坑
文档第8页“1.6 属性类型和长度”列出了常用类型。新手最易混淆的是ALN和UPPER,以及YORN和INTEGER:
ALN(Alphanumeric):万金油类型,支持汉字、字母、数字、符号(如会议室A-301、张三_市场部)。适用场景:所有需要自由输入的文本,如申请人姓名、预约事由、备注。
UPPER:强制转大写,输入zhangsan自动变ZHANGSAN。适用场景:编码类字段,如工单号
WO-2024-001、设备编号PRN-BJ-001——避免大小写混乱导致查询失败。YORN(Yes or No):只存1(是)或0(否),界面上显示为复选框 ✓。关键区别:它不是数字字段!不能做加减运算(如
SUM(YORN)会报错),但能做条件判断(如“是否通过”=1 时显示绿色图标)。INTEGER:纯整数,如“预约人数”“会议时长(分钟)”。警惕:如果字段可能为小数(如“平均参会时长2.5小时”),必须用
DECIMAL并设置精度(如DECIMAL(5,1)表示最多5位数,1位小数)。
3.2 三个必设属性:让对象从“能用”升级到“好用”
每个对象至少要有这三个属性,否则后续开发会反复返工:
| 属性名 | 类型 | 长度 | 为什么必须设 | 文档依据 |
|---|---|---|---|---|
| ROOMBOOKINGID | INTEGER | — | 主键,系统自动生成唯一编号(如1001,1002...),所有关联查询都靠它 | 文档第7页:“新建的对象,系统会自动添加两个字段:对象名+ID” |
| DESCRIPTION | ALN | 255 | 人类可读的简短说明(如“CEO季度战略会”),搜索、报表、导出都依赖它 | 同上 |
| STATUS | ALN | 20 | 记录状态流转(DRAFT草稿→SUBMITTED已提交→APPROVED已批准→CANCELLED已取消) | 文档第五章“权限”提到状态控制,这是基础 |
注意:
ROOMBOOKINGID不是你手动输的!它是 Maximo 自动维护的序列号。你只需确保字段存在、类型正确,系统会在每次新建记录时自动填入下一个整数。
3.3 “缺省值”和“自动编号”:给字段装上“自动驾驶”
文档第9页“1.10 缺省值”和“1.11 自动编号”是提升效率的神器:
缺省值(Default Value):字段的“出厂设置”。比如
STATUS字段缺省值设为DRAFT,用户新建预约时,状态栏自动显示“草稿”,不用手动选。操作路径:在属性编辑界面 → “缺省值”框输入
DRAFT(注意是英文、无空格、带引号?不!Maximo 里直接写DRAFT即可,引号是系统自动加的)。自动编号(Auto-Key):给字段配专属流水号。比如
BOOKING_NO字段设为自动编号,格式RB-YYYY-NNN(RB=Room Booking,YYYY=年份,NNN=三位序号),系统生成RB-2024-001、RB-2024-002…关键步骤:
- 字段类型必须是
ALN(文本型); - 勾选“自动编号” → 点“编辑格式” → 输入
RB-{YEAR}-{SEQ:3}; - “SEQ:3”表示三位序号,自动补零。
- 保存后,该字段在界面将变为灰色不可编辑,值由系统生成。
- 字段类型必须是
3.4 避坑指南:属性配置的四大翻车现场
现象:给ROOM_BOOKING加了START_TIME(开始时间)字段,类型选了DATE,结果用户预约下午3点的会议,系统只存了“2024-05-20”,时间丢了。
原因:DATE类型只存日期,DATETIME才存完整时间戳。
解决:删掉START_TIME,新建同名字段,类型选DATETIME。切记:类型一旦保存,无法直接修改!只能删了重来。
现象:APPROVER_ID(审批人ID)字段设了缺省值ADMIN,但实际审批人是动态的,每次都要手动改。
原因:缺省值是静态的,适合固定值(如“创建人”=CURRENT_USER)。动态值要用“字段绑定类”或后台代码。
解决:删掉缺省值,留空。后续在“BEAN 类”章节(文档第四章)用代码实现“提交时自动填当前登录人”。
现象:ROOM_NAME(会议室名称)字段设了UPPER类型,用户输入a座301,系统存成A座301,但中文“座”字没转大写,搜索时用A座301能搜到,用a座301就搜不到。
原因:UPPER只对英文字母有效,中文、数字、符号原样保留。
解决:若需统一格式,改用ALN类型,配合前端校验规则(文档第三章“1.20 标签页”可设输入提示)。
现象:ATTENDEE_COUNT(参会人数)字段类型是INTEGER,用户输15.5,系统报错“请输入整数”,但业务上确实需要支持半个人(如带小孩的家长)。
原因:业务需求与技术类型冲突。
解决:改字段类型为DECIMAL(4,1)(最大999.9人),并在界面加提示“请输入人数,支持小数(如1.5表示1大1小)”。
4. 关联不是“拉线”,而是给数据装上“导航系统”
建好ROOM_BOOKING对象和它的属性后,它还是个孤岛。真正的威力在于让它和其他对象“说话”——比如关联到PERSON(人员表)查申请人信息,关联到ROOM(会议室主表)查房间容量。文档第11页“4 关联”说的就是这事。新手常以为“关联”就是数据库外键,其实 Maximo 的关联是带业务逻辑的智能导航。
4.1 关联的本质:三句话讲清它为什么比外键高级
第一句:关联 = 预设的快捷查询路径
比如在ROOM_BOOKING记录里,点一下“申请人”字段旁的小图标,立刻弹出PERSON表的搜索框,输“张”字就列出所有姓张的员工——这背后是 Maximo 已预设好“ROOM_BOOKING.APPLICANT_ID → PERSON.PERSONID”的映射关系,不用你写 SQL。第二句:关联 = 权限控制的放大器
如果你给用户设了“只能看北京站点的ROOM”,那么当他查看ROOM_BOOKING时,所有关联的ROOM信息(如房间照片、设备清单)也自动按北京站点过滤——关联继承了权限,不是简单 JOIN。第三句:关联 = 工作流的触发开关
当ROOM_BOOKING.STATUS变为APPROVED,系统可通过关联自动查到ROOM对象,把该会议室状态改为OCCUPIED(占用中),并通知保洁组——这就是“关联+工作流”的自动化。
4.2 创建关联的四步法:跟着文档第15页“1.15 关系”走
以ROOM_BOOKING关联ROOM(会议室主表)为例:
进关联配置页:在数据库配置界面 → 选中
ROOM_BOOKING对象 → 点顶部“关联”标签页 → 点“新建”。填关联基本信息:
关联名:ROOM_REF // 英文,无空格,建议用“主表_关联表”命名 描述:关联到会议室主表,用于获取房间容量、位置等信息 目标对象:ROOM // 从下拉框选,不是手动输!设关联字段映射(最关键!):
- 左侧“源字段”:
ROOM_BOOKING.ROOM_ID(你在ROOM_BOOKING里建的“会议室ID”字段) - 右侧“目标字段”:
ROOM.ROOMID(ROOM表的主键)
注意:两边字段类型必须一致!如果
ROOM_BOOKING.ROOM_ID是INTEGER,ROOM.ROOMID也必须是INTEGER,否则关联无效。- 左侧“源字段”:
选关联类型(影响界面行为):
ONE-TO-ONE(一对一):一个预约对应一个会议室(推荐)ONE-TO-MANY(一对多):一个预约可选多个会议室(如联合会议)→ 此时需用“表控件”展示MANY-TO-ONE(多对一):多个预约共享一个会议室 → 这是常态,选ONE-TO-ONE即可
4.3 关联后的神奇效果:在界面上亲眼见证
配置完ROOM_REF关联后,回到“应用程序设计器”(文档第三章),新建一个ROOM_BOOKING应用程序:
在“控件选用板”拖一个“文本框(Text Box)”到界面 → 属性里“数据源”选
ROOM_BOOKING→ “属性”选ROOM_ID→ 这时它只是个输入框,输数字ID。再拖一个“帮助格(Help Grid)”控件 → 属性里“数据源”选
ROOM_BOOKING→ “属性”选ROOM_ID→ 关键来了:在“帮助格”属性里找到“关联”选项 → 下拉选ROOM_REF!
效果:用户点这个帮助格,立刻弹出
ROOM表的搜索窗口,可按“房间名”“楼层”“容量”筛选,选中后自动把ROOM.ROOMID填进ROOM_BOOKING.ROOM_ID字段。全程无需记ID数字,全是人性化搜索——这就是关联的价值。
4.4 常见问题排查:关联为啥“点不动”?
现象:在帮助格里点“搜索”按钮,弹出窗口是空的,或者提示“未找到数据”。
原因:关联字段映射错了,或目标对象ROOM本身没数据。
解决:
- 检查
ROOM_BOOKING.ROOM_ID和ROOM.ROOMID类型是否一致(都是INTEGER?); - 进
ROOM对象,确认已有测试数据(如ROOMID=101,ROOMNAME="A座301"); - 在
ROOM_BOOKING新建一条记录,ROOM_ID先手动输101,保存后点帮助格,看能否查到A座301。
现象:关联后,ROOM_BOOKING界面显示了ROOM的字段(如ROOM.CAPACITY),但修改ROOM.CAPACITY时,ROOM表本身没变。
原因:这是 Maximo 的“只读关联”设计。关联默认是查询用,不支持反向更新。想改ROOM数据,必须进ROOM应用单独操作。
解决:接受这个设定。若业务真需联动修改,要用“BEAN 类”写后台代码(文档第四章),不推荐新手直接碰。
现象:一个ROOM_BOOKING记录,想同时关联多个ROOM(如视频会议需主会场+分会场),但ONE-TO-ONE关联只允许一个ID。
原因:关联类型选错了。
解决:删掉ROOM_REF关联,新建一个ROOM_LIST关联,类型选ONE-TO-MANY,然后在界面用“表(Table)”控件展示,每行可选一个ROOM。
5. configdb:不是点击就完事的“魔法按钮”,而是数据库的“最终验收”
到此为止,你已经在 Maximo 界面里完成了:建对象ROOM_BOOKING→ 加属性ROOM_ID、START_TIME→ 设关联ROOM_REF。但文档第一章第6页“6 configdb”强调了一件事:所有这些配置,此刻都只是“纸上谈兵”,真正的数据库表还没诞生。configdb 就是那个把蓝图变成大楼的“施工队”。新手最大的误区,就是以为配置完就等于能用了。
5.1 configdb 的真实作用:三重身份解析
身份一:数据库表的“建造师”
它读取你所有“待添加”“待修改”的对象配置,真的去 Oracle/DB2 数据库里执行CREATE TABLE ROOM_BOOKING (...)语句,建出物理表。身份二:字段结构的“校验官”
它检查ROOM_BOOKING.ROOM_ID类型是否和ROOM.ROOMID一致,不一致就报错中断,绝不让你带着错误结构上线。身份三:系统缓存的“刷新器”
Maximo 前端有很多缓存(如下拉框选项、搜索索引)。configdb 执行后,自动清空旧缓存,加载新对象、新字段、新关联,确保界面和数据库实时一致。
提示:configdb 不是“一键部署”,而是“一键验证+部署”。它会先做完整校验,任何错误都会明确告诉你哪一行配置有问题,必须修复后才能继续。
5.2 执行 configdb 的标准流程:五步不跳步
文档第12页“6 configdb”描述了操作路径。我们按生产环境安全规范来:
备份先行:在执行前,务必让 DBA 备份当前数据库(或至少备份
MAXIMO用户下的所有表结构)。configdb 是 DDL 操作,不可逆。进入工具:Maximo 管理控制台 → “数据库配置” → 点顶部“configdb”按钮(不是“保存”!)。
选择范围:弹出窗口让你选“全部对象”或“选定对象”。新手强烈建议选“选定对象” → 勾选你刚配的
ROOM_BOOKING→ 这样即使出错,也只影响这一个表,不影响全局。执行与观察:点“确定” → 系统开始执行 → 界面出现进度条 →紧盯日志窗口(通常在底部),看是否有红色报错。成功时显示
ConfigDB completed successfully。验证结果:
- 进数据库,查
SELECT * FROM ROOM_BOOKING→ 应返回“表不存在”错误(说明 configdb 没跑?不!说明表建好了但没数据); - 在 Maximo 前端,进“应用程序设计器” → 新建应用 → 数据源下拉框里应能看到
ROOM_BOOKING; - 进“数据库配置”界面 →
ROOM_BOOKING状态应从“待添加”变为“已发布”。
- 进数据库,查
5.3 configdb 必须知道的三个铁律
铁律一:configdb 前,必须“发布”所有待处理对象
如果ROOM_BOOKING状态还是“待添加”,configdb 会直接忽略它,不建表。发布操作:在数据库配置列表 → 右键ROOM_BOOKING→ “发布”。铁律二:configdb 后,必须重启 Maximo 应用服务器
文档没明说,但这是血泪经验!configdb 更新了数据库结构,但应用服务器内存里还存着旧的元数据缓存。不重启,前端可能报“找不到对象”或字段错乱。重启命令因环境而异(WebSphere/Tomcat),找运维同事执行。铁律三:configdb 不是“热更新”,不能在生产高峰期跑
它会锁表、占资源,执行时所有用户无法新建/修改数据。建议在凌晨或维护窗口执行,且提前邮件通知全员。
5.4 避坑指南:configdb 的三大“静默杀手”
现象:configdb 执行完成,日志显示success,但进数据库查ROOM_BOOKING表,字段少了一个END_TIME。
原因:你建END_TIME字段时,类型选了DATETIME,但长度填了10(DATETIME固定长度26,填长度会报错,但 configdb 日志可能被淹没)。
解决:回数据库配置界面 → 查ROOM_BOOKING→ 点“属性”标签 → 找END_TIME→ 看右侧“长度”是否为空(DATETIME不填长度!)。删掉长度值,重新发布,再跑 configdb。
现象:configdb 成功,但ROOM_BOOKING表建出来了,ROOM_ID字段却是VARCHAR2(20),而ROOM.ROOMID是NUMBER,关联失效。
原因:建ROOM_BOOKING.ROOM_ID字段时,类型误选了ALN(文本),不是INTEGER。
解决:删掉ROOM_ID字段 → 重建,类型严格选INTEGER→ 发布 → configdb。记住:关联字段,类型必须100%一致。
现象:configdb 后,前端所有应用都打不开,报错java.lang.NullPointerException。
原因:configdb 时选了“全部对象”,其中一个系统核心对象(如ASSET)配置有隐性错误,导致整个元数据加载失败。
解决:立即联系管理员,用备份恢复数据库结构;下次只选“选定对象”,且每次只配1个新对象,逐个验证。
6. 下一步学什么:从“能配”到“会用”的三阶跃迁路径
走到这里,你已经亲手完成了 Maximo 最硬核的入门闭环:从零建对象、加字段、设关联、跑 configdb,让一个业务需求真正落地为系统功能。但这只是万里长征第一步。很多新手卡在“会配不会用”,或者“能做简单表,一碰流程就懵”。根据我带过二十多批新人的经验,接下来三个月,你应该按这三阶路径走,每阶聚焦一个目标,拒绝贪多。
6.1 第一阶(1-2周):让配置“活”起来——掌握应用程序设计器
你现在会建ROOM_BOOKING表,但用户怎么用?总不能让他们进数据库手动插数据吧。文档第三章“应用程序设计器”就是答案。重点攻克三个控件:
帮助格(Help Grid):你已经用过关联,现在要深挖。练习:给
ROOM_BOOKING.APPROVER_ID字段配一个关联到PERSON表的帮助格,要求搜索时能按“部门”“角色”筛选(文档第36页“1.29 帮助格”)。关键参数:WHERECLAUSE里写status='ACTIVE' and dept='IT',这样IT部门在职员工才可选。表(Table)控件:解决“一对多”场景。练习:在
ROOM_BOOKING应用里,加一个“参会人员列表”表控件,数据源设为ROOM_BOOKING_PERSON(你需先建这个关联表),实现点击“+”添加人员、“-”删除。文档第33页“1.25 表”有详细属性说明。签名选项(Signature Options):权限落地的关键。练习:在
ROOM_BOOKING应用里,给“批准”按钮加签名,要求审批人必须输入密码(文档第39页“7 签名选项”)。参数SIGNATURE_REQUIRED设为true,SIGNATURE_FIELD指向APPROVED_BY字段。
工具推荐:用 Maximo 自带的“演示数据”(Demo Data)快速填充测试数据,避免手动一条条输。在管理控制台 → “数据库配置” → “导入演示数据”。
6.2 第二阶(3-4周):让逻辑“动”起来——理解 MBO 类与 BEAN 类
配置是骨架,代码是神经。文档第四章讲的 MBO(Managed Business Object)和 BEAN 类,就是让系统自动做事的“肌肉”。新手不必写复杂代码,先读懂三类高频场景:
| 场景 | 对应类 | 文档位置 | 一句话作用 | 新手可抄的代码片段 |
|---|---|---|---|---|
| 保存时校验 | Mbo类(文档第79页) | 1.60 Mbo 主类 | “用户点保存,我要检查开始时间不能晚于结束时间” | if (getDateTime("START_TIME").after(getDateTime("END_TIME"))) throw new MXApplicationException("booking", "TIME_ERROR"); |
| 列表页加按钮 | TableBean类(文档第60页) | 1.43 说明 | “在预约列表上加‘批量导出’按钮,导出选中的记录” | public void exportSelected() { ... // 调用导出API } |
| 弹窗选人 | SelectDialogBean(单选,文档第71页) | 1.52 功能说明 | “点‘申请人’旁边的按钮,弹出人员选择框,选完自动填ID” | public class RoomBookingSelectBean extends SelectDialogBean { ... } |
学习心法:不要从头学 Java。打开文档第四章,找到你正在做的功能(如“保存校验”),直接看“1.39 样例”里的代码,复制到你的类里,改字段名、改提示语,就能跑通。我第一次学时,就是把
WORKORDER的校验代码复制过来,把WORKORDER全替换成ROOM_BOOKING,改了3处就成功了。
6.3 第三阶(5-8周):让系统“智”起来——打通权限与后台任务
最后两章(第五章权限、第六章后台任务)是让系统从“可用”到“好用”的分水岭:
权限组(第五章):不是简单设“谁能看”,而是组合拳。例如:
- 组A:能看所有
ROOM_BOOKING,但只能改自己提交的; - 组B:能看所有,但
APPROVED_BY字段只读; - 组C:只能看
STATUS='APPROVED'的记录。
实操:在“安全管理” → “权限组” → 新建组 → “应用程序授权”里勾
ROOM_BOOKING→ “数据限制”里设OBJECT_RESTRICT为STATUS='APPROVED'。- 组A:能看所有
后台任务(第六章):让系统自动干活。例如:
- 每天凌晨2点,自动把
STATUS='DRAFT'且超24小时的预约设为EXPIRED; - 每周一上午9点,邮件发送上周会议室使用率报表。
实操:管理控制台 → “后台任务” → 新建 → “任务类”选
psdi.workflow.schedule.ScheduleTask→ “参数”里写WHERECLAUSE=STATUS='DRAFT' and createddate < sysdate-1。- 每天凌晨2点,自动把
从那以后我每次配新对象,都强制走一遍这四步:
- 在数据库配置里建好对象和字段;
- 在应用程序设计器里做出可用界面;
- 用 configdb 部署到测试环境;
- 写一条最简单的 MBO 校验(哪怕只是
if (1==1) return;),确保代码框架能跑。
这四步走完,我才敢跟业务方说:“这个功能,下周可以试用。”——不是因为代码多牛,而是因为每一步都踩在 Maximo 的设计逻辑上,不玄学、不黑匣子、不靠猜。希望帮到你。
本文还有配套的精品资源,点击获取