Maximo:MAXVARS 的用途是什么?

Maximo: What is the purpose of MAXVARS?

A​​ PDF about Maximo formulas 提及 MAXVARS:

Maximo Formulas are the logical next step in Maximo customization after Maximo Scripting. Maximo formulas follow Excel-like grammar to define expressions that use input from variables to calculate a value. Unlike scripting, where most of the variables need to get predefined and bound to some Maximo attributes/properties/MAXVARS, the formula expression can use any of those Maximo attributes/properties/MAXVARS inside the expression without ever needing to predefine or bind them.

我假设 MAXVARS 是某种全局变量。

但是当我搜索文档时,我没有看到任何详细解释它们的内容。

什么是 MAXVARS 以及如何使用它们?

通常,它们是系统级配置元素。它们在代码中的特殊情况下使用,以确定系统的行为方式。它包含诸如系统是否启用管理模式,或是否在收到发票时自动关闭已完成的采购订单,或在完成分配后将工作订单置于何种状态等内容。它的本质实际上只是 ORG 级别的通用键值对 table,因此它可以用于可能想要存储的任何类型的系统变量,尽管通常没有太多用例在定制中。

MAXVARS 是一个数据库 table,它标识 MAXIMO 环境中的许多系统属性。它是旧版本的遗留问题,我记得它出现在版本 3 中(当前版本是 7.6)。

一些 MAXVARS 条目可以通过 MAXIMO UI 进行修改(例如组织应用程序 - PM 选项),其他条目必须通过适当的 SQL 进行修改(例如如果管理模式卡住了,您需要通过 SQL 更新更新相关的 MAXVARS 条目)

新系统值现在定义为 'system properties'(在 MAXPROP 和 MAXPROPVALUE tables 中定义),并且在系统属性应用程序中是可见的并且可以修改。

:)

MaxVars 变量

正如其他人之前提到的,MAXVARS 起源于 Maximo 的早期版本(例如 3.x、4.x),然后才成为 Java 应用程序和多租户,因此最初所有 MAXVARS 值都应用于系统级别,因为系统中没有组织和站点。除了 SYSTEM 之外,我不记得具体是哪个版本引入了具有 ORG 和 SITE 范围的 MaxVars 条目,但这些在 Maximo 7 中可用。6.x.

下面解释了如何查询 maxvartype 数据库 table 以解释 maxvars table 中每个条目的作用:

https://www.ibm.com/support/pages/checking-purpose-maxvars-variables

https://developer.ibm.com/static/site-id/155/maximodev/7609/maximocore/businessobjects/psdi/app/system/MaxVars.html

用法

一个示例是用于 Inventory 的 MaxVars 值。系统中的每个组织都有 6 个 MaxVars 条目:

  • A_BREAKPOINT : 0.8
  • B_BREAKPOINT : 0.15
  • C_BREAKPOINT : 0.05
  • A_CCF : 30
  • B_CCF : 60
  • C_CCF : 90

前 3 个值表示 A、B 和 C 类库​​存项目占组织循环盘点项目的百分比。后 3 个值表示 A、B 和 C 类库​​存项目的周期盘点频率(以天为单位)。简而言之,MaxVars 条目允许循环计数功能具有一定的灵活性,而不是对这些值进行硬编码。此处提供了这些特定 MaxVars 条目的更多详细信息:

https://developer.ibm.com/static/site-id/155/maximodev/7609/maximocore/businessobjects/psdi/app/inventory/Inventory.html

系统属性

系统属性是稍后引入的,但通过 属性 名称和值的列表执行类似的角色。系统属性适用于实例或全局适用于使用同一数据库服务器的所有实例。系统属性相对于 MaxVars 变量的一个额外好处是,一些系统属性可以实时刷新,并且可以立即使用新的 属性 值,而不是例如必须重新启动应用程序服务器。

用法

一个常见的示例是 属性 名称 mxe.adminmode.logoutmin,它记录了在启用管理员模式之前用户必须注销的分钟数。这通常在“更多操作”->“管理管理模式”的数据库配置中进行修改。在启用管理员模式之前,您可以编辑“用户注销的分钟数”并单击“更新属性”以更新系统属性中的 mxe.adminmode.logoutmin 属性 值。

https://www.ibm.com/support/knowledgecenter/en/SSLKT6_7.6.0/com.ibm.mbs.doc/propmaint/r_ctr_sysprops_overview.html

https://developer.ibm.com/static/site-id/155/maximodev/7609/maximocore/businessobjects/index.html?index-all.html

为什么有两种方法实现大致相同的功能?

我猜想可能有很多遗留代码仍然引用 MaxVars 变量而不是更新的系统属性,重构代码以使用系统属性可能不是高优先级,但 MaxVars 可能是随着时间的推移逐步淘汰。

Maximo 定制

创建 Maximo 定制时,MaxVars 变量或系统属性可能很有用(优先使用后者)以避免硬编码值以提供可重用性和灵活性。例如,假设您有一个工作流程,可以将超过特定价值的采购订单发送给 CEO 以供批准。您可以创建一个自定义系统 属性 来存储阈值金额,并使用自定义条件自动化脚本将 PO 总成本与系统 属性 值进行比较,而不是在工作流中对货币值进行硬编码并且 return 相应地为真或假。因此,如果未来 CEO 批准的价值门槛发生变化,您只需要修改系统 属性,而不需要修改工作流程。

公式

虽然您问题中 pdf 的 link 不再有效,所以我没有查看该文档,从您提供的摘录中我希望系统属性和 MaxVars 变量用于公式中类似的方式,以避免硬编码一个值,如果它在将来可以使用 属性 时发生变化,则需要我们修改公式。