Events Maximo:在更新相关表时使用脚本更新工作单

Events Maximo:在更新相关表时使用脚本更新工作单,events,relationship,insert-update,maximo,ticket-system,Events,Relationship,Insert Update,Maximo,Ticket System,我在Maximo 7.6.1.1中有一个自动化脚本,用于更新WORKORDER表中的自定义字段 我想在用户编辑LatitudeY和LongitudeX字段(在WOSERVICEADDRESS表中)时执行自动化脚本 执行此操作需要什么类型的启动点?您可以在latitudeY字段上创建一个属性操作启动点,在Longtudex字段上创建另一个属性操作启动点。每当修改每个字段时,都会触发这些命令,因此在更改latitudeY字段时会触发一次,在更改longitudeX字段时会触发一次,在更改longit

我在Maximo 7.6.1.1中有一个自动化脚本,用于更新
WORKORDER
表中的自定义字段

我想在用户编辑
LatitudeY
LongitudeX
字段(在
WOSERVICEADDRESS
表中)时执行自动化脚本


执行此操作需要什么类型的启动点?

您可以在latitudeY字段上创建一个属性操作启动点,在Longtudex字段上创建另一个属性操作启动点。每当修改每个字段时,都会触发这些命令,因此在更改latitudeY字段时会触发一次,在更改longitudeX字段时会触发一次,在更改longitudeX字段时会触发一次,依此类推。这也是保存数据之前的所有操作,因此用户可以选择取消更改,但脚本仍将被触发

您还可以为WOSERVICEADDRESS创建一个“保存时”对象启动点(如果这是通过映射实际更新的内容)。这将在保存对象中的任何数据时运行,因此您必须进行额外检查,查看这些字段中的任何一个是否已更改,然后执行您的逻辑,但它至少会运行一次,并且只有在用户提交更改时才会运行。

相关:

WOSERVICEADDRESS.LONGITUDEX
WOSERVICEADDRESS.LATITUDEY
中的值填充
WORKORDER.WOSAX
WORKORDER.WOSAY
(自定义字段)

脚本语言是Python,而不是Jython(我不确定这是否重要)


启动点是属性启动点,而不是对象启动点



谢谢,德克斯。关于这一点:“……你必须做额外的检查,看看这些字段中的任何一个是否发生了变化,然后再做逻辑……”——你知道我如何执行这个检查吗?在MboValue字段类上有一个“isModified()”方法(你可以从带有“getMboValue”的Mbo记录类中获得该方法),但这只会告诉您,有人至少更改了字段中的值一次。如果他们把它从X改成Y,然后再从Y改成X,Maximo仍然会告诉你它被修改了。在这个MboValueData类中,还有一个“getInitialValue”方法,您可以将其与之进行比较,以确保它确实不同。我认为,如果您将自动脚本设置绑定到该字段,您将获得一个隐式“\u initial”变量,该变量也将为您提供初始值以进行比较。请注意,在这两种情况下,返回的都是MaxType类,而不是字符串。因此,您必须担心空值,并且必须从类中获取字符串。@User1973否,它将返回自实例化(加载到内存中)以来是否对其进行了修改。关于你的解决方案,我倾向于保存事件。然后,Maximo问你在这些选择的保存过程中,你希望脚本在哪一点触发。在“操作”阶段期间/之前以及数据仍然可更改时(在保存方法之前)?在“操作”阶段之后以及数据何时应为静态/不变(保存后)?还是在数据提交到数据库之后?
woMbo=mbo.getOwner()
longitudex=mbo.getString('longitudex')
latitudey=mbo.getString('latitudey')
if woMbo is not None:
  wosax=woMbo.getString('WOSAX'); 
  wosay=woMbo.getString('WOSAY');    
  if longitudex!=wosax:
      woMbo.setValue('WOSAX',longitudex)
  if latitudey!=wosay:
      woMbo.setValue('WOSAY',latitudey)