能否通过Automation Script推进Maximo现有工作流实例继续运行
Maximo工作流自动推进脚本解决方案
你当前手动修改WFASSIGNMENT和WFCALLSTACK表字段的实现方式风险很高,缺少工作流引擎的路由触发逻辑,自然无法自动生成下一个节点的任务分配。Maximo本身已经封装了成熟的工作流操作API,不需要手动操作底层MBO字段即可实现完整流转。
最优实现方案
直接调用WFAssignment对象的原生completeAssignment()方法,Maximo会自动处理底层表更新、节点跳转校验、下一个节点任务生成、关联动作执行等所有逻辑,代码可简化为:
from psdi.mbo import MboConstants # 获取当前待处理的工作流分配记录 assignmentSet = mx.getMboSet("WFASSIGNMENT", ui) assignmentSet.setWhere("WFASSIGNMENTID = " + str(mbo.getLong("WFASSIGNMENTID"))) assignment = assignmentSet.moveFirst() if assignment and assignment.getString("ASSIGNSTATUS") == "ACTIVE" and NEXTNODE > 0: # 参数说明:下一个节点ID、是否执行节点关联动作、审批备注、权限校验标识 assignment.completeAssignment(NEXTNODE, True, "外部邮件触发审批完成", MboConstants.NOACCESSCHECK)
手动修改MBO需要补充的操作
如果你坚持要手动操作底层MBO实现流转,除了你已修改的内容外,还需要完成以下操作:
- 更新
WFINSTANCE表的CURRENTNODE字段为新节点ID - 调用
initNextNode()方法生成下一个节点的WFASSIGNMENT记录 - 执行当前节点配置的所有后置动作、下一个节点的所有前置动作
- 新增
WFTRANSACTION流转记录,满足审计留痕要求 - 同步处理子流程、嵌套流程的调用栈数据
该方式需要处理非常多的边界场景,极易出现工作流数据不一致问题,强烈不建议使用。
内容的提问来源于stack exchange,提问作者user8533094
相关产品推荐
相关产品推荐

