Maximo工单带附件时自动勾选复选框的实现方式咨询
Maximo工单附件状态复选框实现方案
一、条件表达式实现(仅适用于初始状态)
条件表达式可以实现工单加载时自动判断并勾选复选框,但存在明显局限性:
- 操作步骤:
- 在WORKORDER对象中新增布尔型字段(例如命名为
HASATTACHMENTS)。 - 给该字段设置默认值表达式:
exists (select 1 from doclinks where doclinks.ownerid=:wonum and doclinks.ownertable='WORKORDER')
- 在WORKORDER对象中新增布尔型字段(例如命名为
- 局限性:该表达式仅在工单首次加载时计算一次,若工单打开后新增/删除附件,复选框不会自动更新,必须刷新页面才会同步状态,适合对实时性要求不高的场景。
二、自动化脚本实现(实时同步状态)
如果需要附件增删时实时更新复选框状态,必须通过自动化脚本实现,步骤如下:
- 准备字段:在WORKORDER对象新增布尔型字段
HASATTACHMENTS,设置为只读属性,防止手动修改。 - 创建附件事件脚本:
- 触发对象选择
DOCLINKS,触发事件选择Add和Delete(分别对应附件新增、删除操作)。 - 脚本示例(Jython):
from psdi.mbo import MboConstants # 获取当前操作的附件记录 doclinks_mbo = mbo owner_table = doclinks_mbo.getString("OWNERTABLE") owner_id = doclinks_mbo.getString("OWNERID") # 仅处理工单相关附件 if owner_table == "WORKORDER": # 加载对应工单MBO wo_set = mbo.getMboSet("WORKORDER") wo_set.setWhere(f"WONUM = '{owner_id}'") wo_mbo = wo_set.moveFirst() if wo_mbo: # 统计工单剩余附件数量 doclinks_set = wo_mbo.getMboSet("DOCLINKS") has_attachments = doclinks_set.count() > 0 # 更新复选框字段 wo_mbo.setValue("HASATTACHMENTS", has_attachments, MboConstants.NOACCESSCHECK) wo_mbo.save()
- 触发对象选择
- 创建工单加载脚本:
- 触发对象选择
WORKORDER,触发事件选择Load(工单打开时触发)。 - 脚本示例(Jython):
from psdi.mbo import MboConstants wo_mbo = mbo # 统计当前工单附件数量 doclinks_set = wo_mbo.getMboSet("DOCLINKS") has_attachments = doclinks_set.count() > 0 # 初始化复选框状态 wo_mbo.setValue("HASATTACHMENTS", has_attachments, MboConstants.NOACCESSCHECK)
- 触发对象选择
- 优势:能实时响应附件的增删操作,无需刷新页面,复选框状态始终与附件实际情况同步。
总结
- 若仅需工单加载时显示附件状态,使用条件表达式即可快速实现;
- 若需要实时同步附件变化的状态,必须通过自动化脚本完成。
内容的提问来源于stack exchange,提问作者user19992807
相关产品推荐
相关产品推荐

