首页 / 资讯中心 / 文章详情

MAXIMO二次开发入门:分层架构、工作流与Mbo代码实战指南

MAXIMO二次开发入门:分层架构、工作流与Mbo代码实战指南 ★ FEATURED ARTICLE
简介这份Maximo入门培训资料面向刚接触企业资产管理系统的开发者与实施人员帮助其从技术架构到代码开发建立完整认知。内容围绕J2EE体系展开依次讲解RMI业务对象交互、程序结构与模块组成、页面开发中的界面与常用控件、基于WebSphere Process Server的工作流模型与组件标记、后台计划任务的界面配置与代码实现以及Oracle、DB2等数据库连接与更新配置并附有MboSet、Mbo、FldXX等代码示例和常用类说明目录层次清晰便于按章节循序渐进学习。资源包为1个docx文档约436KB轻量易读适合作为入门阶段的系统化笔记。目前已有360人学习可供需要了解Maximo二次开发与系统定制的读者参考。1. 从一张分层地图看 MAXIMO 入门先认清它到底由哪几层组成很多人第一次接触 MAXIMO会把它当成一个“配置页面 写点 Java”的普通企业系统结果一上手就翻车页面改了不生效、工作流跑不通、后台任务不触发最后发现是没搞清它内部的分层关系。梳理下来会发现MAXIMO 的知识体系其实是一张很规整的分层地图最底层是 J2EE 技术底座RMI、XML、OR 持久化、缓存、事务、日志往上是程序结构businessobjects、maximouiweb、mboweb 等模块各司其职再往上是三条并行的开发线——页面开发、工作流开发、后台任务开发最后统一落到数据库配置与 Mbo/MboSet 代码开发上。这张地图适合两类人正在系统学 MAXIMO 二次开发的以及准备复习、想快速查漏补缺的。先把层与层之间的调用关系记住后面每一章都是在这张地图上填细节。2. 技术底座与程序结构RMI、XML 与三大模块的分工2.1 六项底层技术决定了后面所有开发方式MAXIMO 基于 J2EE 架构业务对象通过 RMI 机制实现这让分布式调用变得自然页面逻辑与用户交互走 Ajax保证操作流畅对象与关系采用半自动映射减少手写维护成本应用页面和信息交互统一用 XML 描述框架自带事务处理机制长事务需要把相关方法纳入同一个事务队列持久层提供系统级 OR 映射开发者只需继承基类。再加上系统级缓存数据变化时自动重载和基于 Log4j 扩展的日志与异常包装这六项技术基本覆盖了后面所有开发场景的“为什么”。复习时最容易忽略的是“事务”和“缓存”这两条。页面开发感觉不到它们但一旦写 Mbo 逻辑事务边界没划对就会出现数据半提交缓存没刷新就会出现“数据库明明改了、页面还是旧值”的玄学现象。把这两点先记住后面踩坑会少很多。2.2 程序结构先分清每个包和 war 包管什么MAXIMO 的程序结构可以按“表现层—控制层—业务层与持久层”来记。表现层除登录验证外页面内容均由 XML 提供这些 XML 存储在 MAXPRESENTATION 表中由 JSP 控制标签组件、components 组件和 JavaScript 共同生成页面CSS 文件夹定义通用样式。控制层的核心是 mboweb 里的 MAXIMOStartupServlet它读取 maximo.properties以 Properties 对象传给 MXServer.start建立 MXServer 实例并初始化系统服务与应用服务maximouiweb 里的 WebClientServlet 则负责所有 /ui/* 匹配的 URL调用 WebClientSession 处理请求。模块/包作用businessobjects.jarMAXIMO 业务相关类maximouiweb.warWeb 客户端前台应用mboweb.war启动加载的 Web 应用mboejb.jar / meajmsejb.jar集成相关包properties.jar配置文件psdi.server.*数据库连接、session、线程、数据字典加载psdi.app.*业务对象 Mbo、MboSet 与业务逻辑psdi.mbo.*核心持久层操作实现 OR 映射psdi.workflow.*工作流逻辑处理psdi.util.*克隆/删除 app、加密解密、客户化应用生成提示MXServer 是运行期上下文系统服务连接池、缓存、数据字典、RMI 注册、MaxSession 线程管理和应用服务业务 MBO都挂在它下面理解这一点后面排查“服务起不来”就有方向了。2.3 重点在哪控制层的两个 Servlet 是入口系统启动链路是 MAXIMOStartupServlet → MXServer.start(properties) → 加载数据字典与各类服务请求链路是 WebClientServlet → WebClientSession → 页面 XML → 业务层。复习时把这两条链路画出来比背十个类名有用。业务层再往下就是 Mbo/MboSet这部分在第 5、6 章展开。3. 页面开发与工作流开发设计器能做什么、节点怎么连3.1 页面开发应用程序设计器覆盖了大部分日常改动“应用程序设计器”的定位很明确技术用户和非技术用户都无需编辑代码即可配置应用支持拖放。常见操作包括移动字段和部分、创建新字段/表/标签页高级功能包括创建或复制应用程序、定义签名选项、编辑工具栏和“选择操作”菜单。复习页面开发重点不是记按钮位置而是记住“哪些改动属于配置、哪些必须落到 XML 和组件层”。3.2 工作流模型定义、活动、转换、条件、角色、程序工作流设计器用图形界面展示记录可能经过的路径。一个工作流定义包含过程模型、活动、转换、条件、相关数据、角色以及需要激活的内部/外部程序。涉及的应用不少Actions操作、Communication Templates通信模板、Escalations上报/自动触发、Inbox/Assignments Setup收件箱设置、People、Person Groups、Roles、Workflow Application、Workflow Designer、Workflow Inbox。复习时按“定义—分配—触发—收件”四条线归类比平铺记忆清楚。3.3 节点类型每种节点的进出线规则是易错核心节点关键规则开始任何过程只能有一个起点停止记录脱离工作流控制的点可放多个任务至少一条出线最多一正一反两条输出操作输入可多条条件出线必须一正一反由节点内 SQL 表达式解析真假手动输入用户从菜单选择下一步子过程嵌入完整工作流遇停止节点沿原路返回主过程交互多条入线、只能一条出线用预定义选项引导解决路径等待过程暂停直到指定事件发生单一退出点任务节点的参数值得单独记标题显示在图标下描述是节点说明应用程序指定流程应用的应用时限规定完成时长、超时则分配给“升级角色”任务分配可指定角色并用表达式限制分配对象这对控制转发很有用接受操作有两个选项——所有人都接受才算接受或任一人接受即算接受。实践部分可以用 demo 库里的过程 APPWFWO 改一改在工单里跑通整条流程。4. 后台任务与数据库配置定时逻辑和结构变更怎么落地4.1 后台任务界面配参数代码继承 SimpleCronTask后台任务开发分两步。界面侧新建后台任务并配置相关参数代码侧继承 SimpleCronTask在 init() 里做参数初始化在 cronAction() 里写执行逻辑。public class CrontaskTest extends SimpleCronTask { public void init() throws MXException { super.init(); // 参数初始化读取界面配置的任务参数 } public void cronAction() { // 执行相应逻辑清理、同步、生成报告等 } }这段骨架的关键在两点init() 负责把界面配置的参数接进来cronAction() 才是真正被调度执行的入口。复习时问自己三个问题——任务参数从哪读、执行频率在哪配、失败后日志去哪看能答上来基本就掌握了。4.2 数据库配置先建对象再应用配置变更数据库配置的界面操作包括新建对象、创建对象属性、索引和关系改完之后要“更新数据库”第一步打开管理方式第二步应用配置变更开始配置数据库。顺序不能反——先建结构再应用变更否则会出现对象存在但表没生成的情况。4.3 重点与易错结构变更和代码变更的边界梳理下来会发现后台任务和数据库配置最容易混的是“哪些改动需要重启、哪些需要应用配置变更、哪些只是刷新缓存”。血泪经验是数据库结构改动走“应用配置变更”代码改动走重新部署缓存问题先查数据是否真的落库。把这三类改动分开记排查时就不会乱试。5. 代码开发MboSet、Mbo 与 Fld 三层怎么写5.1 MboSet持久层核心类的固定写法MboSet 是 MAXIMO 持久层的核心类超类是 psdi.mbo.MboSet。应用程序对象与 MboSet 直接关联创建对象时必须指定关联的 MboSet 类MboSet 类必须继承 psdi.mbo.MboSet 并实现 psdi.mbo.MboSetRemote 接口同时必须定义构造方法、实现 getMboInstance(MboSet) 方法返回 Mbo 实例。package maxdemo.lesson1; import java.rmi.RemoteException; import psdi.mbo.Mbo; import psdi.mbo.MboServerInterface; import psdi.mbo.MboSet; import psdi.util.MXException; public class CustDemoMboSet extends MboSet implements CustDemoMboSetRemote { private static final long serialVersionUID 3918526761961603733L; // 构造方法必须定义传入 MboServerInterface public CustDemoMboSet(MboServerInterface arg0) throws RemoteException { super(arg0); } // 返回本 MboSet 对应的 Mbo 实例 protected Mbo getMboInstance(MboSet arg0) throws MXException, RemoteException { return new CustDemoMbo(arg0); } }参数说明MboServerInterface 是服务端接口构造时透传给父类getMboInstance 是工厂方法框架靠它把一行记录包装成具体 Mbo。漏掉这个方法MboSet 就不知道要造哪种 Mbo运行时报错往往很隐晦。5.2 Mbo 与 Fld业务逻辑和字段逻辑各归其位Mbo 承载单条记录的业务逻辑FldXX 承载字段级逻辑。复习时按“集合—记录—字段”三层理解MboSet 管一批Mbo 管一条Fld 管一个字段的取值与校验。三层各写各的不要在一个类里堆所有逻辑这是可维护性的分水岭。5.3 Mbo 常用方法按场景分组记别按字母背场景方法新增/复制add()、copy()、toBeAdded()删除delete()、canDelete()、toBeDeleted()校验appValidate()、checkFieldAccess()取值/赋值getXXXX(attributeName)、setValue(name, attributeName)、setValueNull(attributeName)状态判断isModified()、isModified(attribute)、isNew()、isNull(attributeName)、isSelected()标记与回滚setFieldFlag(attributeName, flag, state)、setFlag(flag, state)、rollbackToCheckpoint()生命周期init()、initialize()、clear()、modify()上下文getThisMboSet()、getInitialBaseLanguageString()、getInsertCompanySetId()待保存状态toBeUpdated()、toBeSaved()5.4 MboSet 常用方法保存与清理的时序MboSet 侧重点是 save()、cleanup()、close()、commit()。这四个方法的顺序感很重要save 落库、commit 提交事务、cleanup 释放集合资源、close 关闭。顺序错了会出现“保存了但查不到”或“连接没释放”的问题。6. 易错点清单这五处最容易翻车易漏点一getMboInstance 没实现或返回类型不对。为什么漏教程里常只强调继承 MboSet工厂方法一笔带过。怎么补新建 MboSet 时先写构造方法和 getMboInstance再写业务。易漏点二条件节点只连了一条线。为什么漏图形界面上一条线也能画出来不报错。怎么补条件节点出线必须一正一反SQL 表达式要能解析出真假两条路径。易漏点三任务节点接受规则选错。为什么漏“所有人接受”和“任一人接受”只差一个选项业务含义完全不同。怎么补按审批严格程度选涉及会签用前者涉及抢单用后者。易漏点四数据库结构改了没应用配置变更。为什么漏界面建完对象就以为完事。怎么补固定走“打开管理方式 → 应用配置变更”两步改完再验证表是否生成。易漏点五长事务没纳入事务队列。为什么漏单方法测试正常批量场景才暴露。怎么补涉及多步写操作时把相关方法纳入同一事务队列并确认回滚点。7. 复习清单按链路自查比按章节背更有效复习 MAXIMO 入门我建议按“启动链路—请求链路—数据链路”三条线自查而不是从第一章背到最后一章。启动链路问自己MAXIMOStartupServlet 读了什么、传给谁、MXServer 初始化了哪些服务请求链路问自己/ui/* 映射到哪个 Servlet、页面 XML 存在哪张表、components 和 JavaScript 怎么拼出页面数据链路问自己MboSet 怎么造 Mbo、save 和 commit 的先后、缓存什么时候刷新。三条链路都能口述出来说明地图已经在脑子里了。下面这张自查表可以直接抄去用自查项能口述需回看六项底层技术及各自作用各 jar/war 包职责两个核心 Servlet 的调用关系工作流八类节点的进出线规则任务节点四个参数含义后台任务 init 与 cronAction 分工数据库配置两步顺序MboSet 必须实现的两个成员Mbo 常用方法按场景分组save/commit/cleanup/close 时序查漏补缺的具体技巧拿一张白纸先画三层结构技术底座、程序结构、开发线再往每层填三个关键词填不出来的地方就是薄弱点回到对应章节补。这个方法比反复通读快得多也更容易发现“以为自己会了”的假掌握。我自己的习惯是每次动手改任何一处配置或代码之前先强制走一遍“这属于哪一层、影响哪条链路、要不要应用配置变更或刷缓存”三问从那以后因为顺序搞反导致的返工少了很多。这份笔记按知识地图整理适合边学边对照希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站