В нашем рабочем процессе Maximo есть несколько схем, в которых рабочее задание достигает узла условия с проверкой даты начала. Если текущая дата меньше даты начала, то заказ на работу переходит на узел ожидания с условием «maximo.workorder.update». Поэтому, когда наступает запланированная дата для WO, людям нужно перейти к отслеживанию WO и сохранить этот WO вручную. Только после этого он продолжает свой путь через рабочий процесс. В противном случае WO будет сидеть на этом узле ожидания до конца времени.
Что я хочу сделать, так это запускать это событие обновления с помощью crontsk каждый день, чтобы, когда наступит подходящая дата, WO проснулся сам по себе.
Я проверил исходный код кнопки «Сохранить» в приложении отслеживания WO и обнаружил, что независимо от того, что есть вызов метода MboRemoteSet.save(). Я предположил, что вам нужно внести некоторые изменения, а затем вызвать save() для правильного MboSet. Также я знаю, что в БД есть таблица EVENTRESPONSE, которая отслеживает WO, сидящие на узлах ожидания в рабочем процессе. Мой класс crontsk содержит этот код:
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 остается на узле ожидания.
Итак, как запустить maximo.workorder.update?