【问题标题】:Is it possible to continue existing maximo workflow instance from automation script是否可以从自动化脚本继续现有的 maximo 工作流实例
【发布时间】:2021-08-27 14:28:07
【问题描述】:

在我们在 maximo 中的 PR 计划中,我们有一个工作流程,可以将 PR 发送给其他团队以供批准。但审批流程来自我们在 maximo 之外创建的电子邮件。我想知道是否可以从自动化脚本继续工作流实例?

现在我像这样创建自动化脚本

assignmentSet = mx.getMboSet("WFASSIGNMENT",ui);
assignmentSet.setWhere(" WFASSIGNMENTID = " + str(mbo.getLong("WFASSIGNMENTID")));
assignment = assignmentSet.moveFirst();

if(assignment.getString("ASSIGNSTATUS")=="ACTIVE" and NEXTNODE > 0):
    wfstackSet = mx.getMboSet("WFCALLSTACK",ui);
    wfstackSet.setWhere(" WFID = " + str(mbo.getLong("WFINSTANCEID")));
    wfstack = wfstackSet.moveFirst();
    if (wfstack.getInt("NODEID")==mbo.getInt("NODEID")):
        wfstack.setValue("NODEID",NEXTNODE,2L);
    wfstackSet.save();
    wfstackSet.close();
    
    assignment.setValue("ASSIGNSTATUS","COMPLETE", 2L);

assignmentSet.save();
assignmentSet.close();

此自动化脚本仅更改工作流图,但不会创建另一个分配。有人可以告诉我是否缺少我需要更新的 mbo 以便工作流继续到下一个节点?谢谢。

【问题讨论】:

  • 您的问题与之前提出的另一个没有得到答案的问题非常相似:stackoverflow.com/questions/66413410/… 考虑到这一点,如果您考虑先在 Stack Overflow 上帮助其他人,您可能会收到更多可能的解决方案使用您获得的一些声誉积分来悬赏您的问题:stackoverflow.com/help/bounty
  • 我目前无法试用您提供的自动化脚本,但我想到了几点。您尝试实现的目标可能通过以下方式完成: 1. 在与工作流相关的正确 mbo 中设置正确的值以完成当前工作流分配并移至下一个节点。 2. 在 Maximo API 中查找正确的包、类和方法,以便在 IBM 提供的自动化脚本中使用以执行相同的操作。您的脚本尝试 #1 并且可能无法成功将正确的值设置为所需的 mbo...
  • ...(您可以通过自动化脚本日志记录和针对数据库的 SQL 查询来确定)或者在通过用户界面执行此操作时没有执行 Maximo 所做的事情(可能涉及其他 mbo) .我的猜测是,Maximo 所做的不仅仅是为调用堆栈中的条目设置节点 ID 并将分配设置为在您的脚本中完成,但您可能必须在完成应用程序中的分配时跟踪数据库会话准确确认对哪些表进行了哪些更改。
  • 或者,您可以在此处或 Maximo JavaDocs 中的其他地方提供的方法中找到另一种方法来实现您希望实现的目标:api.maximo.wiki/psdi/workflow/WorkflowDirector.html
  • @Maximo.Wiki 是的,我已经尝试了第一个选项。将正确的节点值传递给 WFCALLSTACK。工作流已经更新,但如果下一个节点是分配节点,它不会创建新的分配。

标签: workflow maximo


【解决方案1】:

感谢@Maximo.Wiki。我从您的链接中找到了解决方案 我们可以像这样使用自动化脚本继续工作流

assignmentSet = mx.getMboSet("WFASSIGNMENT",ui);
assignmentSet.setWhere(" WFASSIGNMENTID = " + str(mbo.getLong("WFASSIGNMENTID")));
assignment = assignmentSet.moveFirst();
MXServer.getMXServer().lookup("WORKFLOW").completeAssignment(assignment, "APPROVE  PR", 1);

或者这样拒绝

MXServer.getMXServer().lookup("WORKFLOW").completeAssignment(assignment, "REJECT PR ", 0);

但是,如果您将 ManualInput 节点放在工作流中,它将失败,为了解决这个问题,我在对象中添加了另一个字段

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多