Maximo 可以通过多种方式强制执行业务逻辑。每种方法都有一些优点,需要实施的技术技能水平也各不相同。可以通过几种不同的方式来处理需要在屏幕上显示字段。

在 Maximo 中创建必填字段的第一种方法是通过应用程序设计器将字段设置为 “必填字段”;这是在单个应用程序中将特定字段设置为 100% 必填字段的简便方法。对于在 Maximo 中仅与单个应用程序交互且始终需要该字段的用户来说,这是一个绝佳的选择。当用户想要向 “必填” 字段添加条件逻辑时,第二种方法很有用;这可以通过使用数据限制来完成。这些数据限制可以在安全组或全局级别上实施。我发现全球数据限制在大多数情况下都行之有效。这种方法比应用程序设计器的更改更为复杂,因为您必须编写 where 子句。这是我工具包中的首选解决方案,因为它们用途广泛。

这两种方法都很棒,因为它们可以在应用程序中明显地将字段显示为 “必填字段”。这些方法在应用程序中非常有效,同时仍易于实施和支持。缺点是,当工作单上的状态发生变化时,以前状态中不必填的字段在新更新的状态下可能会变为必填字段。例如,处于 WAPPR 状态的工作单正在移至 APPR 状态,而 WAPPR 状态中不必填的字段在 APPR 状态下是必填字段;当用户更改状态时,他们会收到一条一般性错误,提示字段为必填字段。另一个缺点是,条件逻辑只能与实现者编写 where 子句的技能一样好。

自动化脚本在提供带有清晰信息的复杂逻辑方面大放异彩。在记录的状态更改上添加自定义业务逻辑是自动化脚本的绝佳用例。我对资产、工作订单、服务请求、采购订单和配置项目的状态变更使用了这种方法。我发现自动化脚本允许我传送有针对性的消息,其逻辑可以根据需要而复杂。我将分享一些常见的例子。

发射点

使用基于属性的启动点将允许逻辑在每次状态变化时触发。在下面的示例中,我正在对资产变更状态进行验证。如果你想更频繁地运行验证,你可以使用对象保存启动点。

错误消息

将自动化脚本与 Maximo 消息配对允许向用户提供特定而灵活的消息。对于我实现的每个自动化脚本,我都希望有一条相应的消息,其中包含一个可以向其传递消息的参数。此消息是在 “消息” 对话框的 “数据库配置” 中配置的。“{0}” 将是我们通过自定义消息传递的参数。

在自动化脚本中有消息后,就可以利用该消息调用错误。请注意,前两个参数表示要使用的消息。第三个参数是传递给消息的数组。调用时,消息中的 “{0}” 将替换数组中的第一个字符串。在消息中添加 “{1}” 将映射到数组中的第二个值。

service.error (“emx”、“assetStatusValidation”、[“地址需要变为 ACTIVE 状态。”])

示例:

状态更改为 ACTIVE 时的必填地址

如果 mbo.getString (“状态”) == “ACTIVE” 且 mbo.isNULL(“emxAddress”):

service.error (“emx”、“assetStatusValidation”、[“地址需要变为 ACTIVE 状态。”])

状态更改为运营时要求所有资产规格提供价值

如果 mbo.getString (“状态”) == “正在运行”:

mbosetAssetSpec= mbo.getmboset(“$EMXASSETSPEC 必填项”、“ASSETSPEC”、“assetnum =: assetnum 和 siteid=: siteid”)

mboAssetSpec = mbosetAssetSpec.moveFirst ()

而 mboAssetSpec:

如果 mboAssetSpec.isNULL(“ALNVALUE”)和 mboAssetSpec.isNULL(“NUMVALUE”)和 mboAssetSpec.isNULL(“表值”):

service.error(“emx”、“AssetStatusValidation”、[“资产规范” + mboAssetSpec.getString (“ASSETATTRID”) + “必须不为空”])

mboAssetSpec = mbosetAssetSpec.moveNext ()

所有 WO 任务都必须是 COMP 才能更改为 COMP

if (mbo.getString (“状态”) == “COMP”):

mbosetTask = mbo.getmboset(“$EMXWOTASK”、“WOACTIVITY”、“historyflag=0 和 istask=0 和状态!= “COMP” 和 parent=: wonum 和 siteid=: siteid”)

if(不是 mbosetTask.isEmpty ())

service.error (“emx”,” woStatusValidation”, [“此工作单有 “+mbosetTask .count () + “未完成的子工作单必须完成才能完成此工作单。”])

MORE Community Logo
Live from the MORE community

Your Maximo questions probably already have answers

See what Maximo users are asking, answering, and solving right now.

Unlock the Ultimate Guide to IBM Maximo Application Suite (MAS)

Discover everything you need to know to modernize your asset management strategy.

Inside, you’ll learn:

  • What’s new in IBM Maximo Application Suite 9.0
  • Key differences between Maximo 7.6 and MAS
  • How AppPoints and OpenShift change the game
  • Industry use cases across energy, manufacturing, and transportation
  • Step-by-step guidance for upgrading and migration readiness
Cover of 'The Ultimate Guide to MAS Maximo Application Suite' by Naviam featuring a man in a yellow construction helmet and safety vest holding a tablet.
×

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.

Read Press Release