在Maximo 7.6.1.1中:
我在这些表中有自定义字段:
X
和Y
(空)X
和Y
(已填充)X
和Y
(已填充)我想使用以下逻辑填充X
中的Y
和WORKORDER
字段:
(逻辑与auto-create spatial search logic中的逻辑相似,但略有不同。]
Scenario: A user is making edits to work orders.
1. If the related WOSERVICEADDRESS table gets edited:
then update WORKORDER.X & WORKORDER.Y with WOSERVICEADDRESS.LONGITUDEX and WOSERVICEADDRESS.LATITUDEY
2. In the WORKORDER table, if WORKORDER.ASSETNUM gets edited and WOSERVICEADDRESS.LATITUDEY is null:
then update WORKORDER.X & WORKORDER.Y with the related values in ASSET.X and ASSET.Y.
3. In the WORKORDER table, if the WORKORDER.LOCATION gets edited and WOSERVICEADDRESS.LATITUDEY is null
and WORKORDER.ASSETNUM is null:
then update WORKORDER.X & WORKORDER.Y with the related values in LOCATIONS.X and LOCATIONS.Y.
关于#2和#3的注释:出于性能原因,仅在实际编辑ASSETNUM
字段或LOCATION
字段时才运行脚本,这一点很重要。
WORKORDER
时都运行脚本。WORKORDER.DESCRIPTION
被编辑,我不希望脚本运行(当然要检查ASSETNUM
或LOCATION
字段是否被编辑。Jython Automation脚本中有没有办法做到这一点?
x = ""
y = ""
if assetnum_modified or location_modified:
if location:
x = mbo.getString("ASSET.LONGITUDEX")
y = mbo.getString("ASSET.LATITUDEY")
elif assetnum:
x = mbo.getString("ASSET.LONGITUDEX")
y = mbo.getString("ASSET.LATITUDEY")
woaddr = mbo.getMboSet("SERVICEADDRESS").getMbo(0)
if woaddr.getString("LONGITUDEX"):
x = woaddr.getString("LONGITUDEX")
y = woaddr.getString("LATITUDEY")
mbo.setValue("LONGITUDEX", x)
mbo.setValue("LATITUDEY", y)
对于WO服务地址,因为它是另一个表,所以有点棘手。如果性能是您系统上的一个大问题,那么解决方案可能是在WOSERVICEADDRESS对象上创建一个单独的脚本,并根据您的规则具有处理“添加/更新”和“删除”事件的逻辑]