利用自动化脚本在 Maximo 中记录临时审计记录
Phil Runion
October 24, 2023


成熟的 Maximo 系统往往具有多层配置、自定义、集成和活动部件。通常,一条记录可以有多个进程与之交互。最近,我在一个通过集成创建工单的环境中工作;一旦工作单进入新的工作队列,调度员就会开始更新记录。在执行更新时,触发了出站集成,这导致另一次入站集成更新了记录。还出现了对一些工作单进行更新的上报情况。总而言之,用户和自动任务经常出现 “BMXAA4200E-记录已被其他用户更新” 的错误,这会让一些用户感到沮丧。
对于 “记录已由其他用户更新” 错误,解决这些错误的方法与错误发生的原因一样多。下面链接的文章描述了两种可能非常有用的方法。这些方法可以让您在错误发生时看到错误,这些方法应该放在您的工具包中。
https://www.sharptree.io/blog/2023/2023-07-25-updated-by-another-user/
https://www.linkedin.com/pulse/troubleshooting-mxrowupdateexception-error-ibm-maximo-cheremisenov
大多数方法缺乏的是跟踪记录整个生命周期的能力。传统上,为了实现记录的生命周期,审计表用于记录每一次更改。配置审计表是有目的的,但可能会有一些很大的开销,而且一旦不再需要它们,就很难撤回。在我的示例场景中,我正在查看创建特定记录后的最初几天。我不担心长期保存审计数据,我想要一些易于启用和禁用的东西。
利用自动化脚本,我得以实现所有目标。我能够在不中断的情况下将其添加到系统中,并在完成后轻松将其禁用。自从实现这个脚本以来,我又回到了脚本中,并启用了它以帮助多次排除故障。通过在 WORKORDER 和 WOACTIVITY 上设置了启动点,我能够在每次进行保存时记录基本信息。
# 设置记录器
从 psdi.util.logging 导入 mxLoggerFactory
ProjetechLogger=mxLoggerFactory.getLogger(“maximo”)
# 提取任何我想记录的数据
mboParent = mbo.getOwner ()
strparentName = “”
如果 mbaParent 和 mpaRent.getName ():
strparentName = mbparent.getName ()
# 写一个日志条目
ProjetechLogger.info(“自动脚本” + ScriptName +” 检测到 WO 存档。站点 ID:“+mbo.getString(“SITEID”)+” WONUM:” +mbo.getString(“WONUM”)+” 更改者:“+mbo.getString(“CHANGEBY”)+” 这个 MBO:“+mbo.getName () +” 父级 MBO:“+strparentName+” 交互式:” + str(交互式))
通过额外的日志记录,我能够捕获所需的数据。将记录的数据与日志消息中的关联 ID 结合使用,我得以快速整理出工作单创建生命周期的全貌。利用日志数据,我得以确定一些流程改进,这些改进消除了许多用户的挫败感。我们还得以确定不必要的遗留流程。
你怎么能利用这个?这种方法不仅限于工单。它可以应用于可以触发自动化脚本启动点并且需要额外记录的任何场景。在使用这种方法或任何增加额外日志记录的方法时,必须考虑性能影响。使用的每个日志条目和自动化脚本启动点都有资源和性能成本。
保持环境活跃,在进行故障排除时启用日志记录,并尽快将其禁用。
Discover everything you need to know to modernize your asset management strategy.
Inside, you’ll learn:

ActiveG, BPD Zenith, EAM Swiss, InterPro Solutions, Lexco, Peacock Engineering, Projetech, Sharptree, and ZNAPZ have united under one brand: Naviam.
You’ll be redirected to the most relevant page at Naviam.io in a few seconds — or you can
go now.