从代码中解雇Maximo工作流事件

时间:2013-04-22 12:42:09

标签: event-handling workflow wait maximo

在我们的Maximo工作流程中,我们有一些模式,其中工作单到达一个Condition节点,并检查一个startdate。如果当前日期小于它的startdate,则工作单将转到具有“maximo.workorder.update”条件的Wait节点。因此,当WO的预定日期到来时,人们需要进行WO跟踪并手动保存该WO。只有这样,它才能继续完成工作流程。否则,WO将坐在Wait节点上,直到时间结束。

我想做的是每天都通过crontask触发这个更新事件,所以当正确的日期到来时,WO会自动唤醒。

我在WO跟踪应用程序中检查了Save按钮的源代码,发现无论有什么MboRemoteSet.save()方法调用。我假设您需要完成一些更改,然后在右侧MboSet上调用save()。另外我知道在DB中有一个名为EVENTRESPONSE的表,用于跟踪工作流中等待节点上的WO。 我的crontask类包含以下代码:

MXServer mxServer = MXServer.getMXServer();
UserInfo userInfo = mxServer.getUserInfo("maxadmin");
woSet = mxServer.getMboSet("WORKORDER", userInfo);
...
String query = "select sourceid as WORKORDERID from EVENTRESPONSE"
                + " where eventname = 'maximo.workorder.update'"
                + " and sourcetable = 'WORKORDER'";
SqlFormat sqf = new SqlFormat("workorderid IN (" + query + ")");
woSet.setWhere(sqf.format());
MboRemote wo;
Date currentDate = new Date();
for (int i = 0; (wo = woSet.getMbo(i)) != null; i++) {
    System.err.println(wo.getString("description"));
    wo.setValue("CHANGEDATE", currentDate);
}
woSet.save();

workorder.changedate成功刷新,但“maximo.workorder.update”事件未触发,WO停留在Wait节点上。

那么,我该如何解雇maximo.workorder.update?

1 个答案:

答案 0 :(得分:2)

我明白,这个回复迟了一年,但它可能对其他人有所帮助。

可以使用“升级”来识别所有有时间工作的工单并在升级时使用操作来更新工单上的内容。这将导致Maximo保存更改,从而触发工作流的等待节点,所有这些都没有任何代码,只需配置。

我过去做过类似的事情,通常我最终会翻转我为此目的创建的YORN字段。