Как правильно добавить запись трудовой транзакции в скрипт автоматизации Maximo - PullRequest
0 голосов
/ 17 февраля 2020

Привет! Я пытаюсь добавить трудовую транзакцию из скрипта автоматизации действий с объектом ASSIGNMENT в Maximo. В настоящее время я пытаюсь использовать приведенный ниже код.

labTransSet = MXServer.getMXServer().getMboSet("LABTRANS",ui);
labTrans = labTransSet.add();
labTrans.setValue("laborcode", userLabor);
labTrans.setValue("wonum", assignWonum);
sds1=SimpleDateFormat("hh.mm aa").format(firstDate);
sds2=SimpleDateFormat("hh.mm aa").format(Date());
labTrans.setValue("STARTTIME", sds1);
labTrans.setValue("FINISHTIME", sds2);
labTransSet.save();
labTransSet.close();

userLabor - имя пользователя текущего пользователя

assignWonum - номер рабочего задания назначения

firstDate - поле запланированной даты из задания

Трудовая запись корректно добавляется с правильными данными, но когда я go для маршрутизации своего рабочего процесса после вызова сценария из кнопки, мне выдается предупреждение BMXAA8229W WOACTIVITY было обновлено другим пользователем и рабочий заказ не маршрутизируется. У меня сложилось впечатление, что это происходит потому, что объект назначения для сценария запрашивается одновременно с попыткой добавить и сохранить трудовую запись. Кто-нибудь знает, правильно ли мое предположение или в чем еще проблема и как я могу это исправить? Спасибо

1 Ответ

3 голосов
/ 17 февраля 2020

Эта ошибка возникает из-за того, что Maximo уже имеет одну версию записи, загруженную в память, когда запись в базе данных изменяется независимо. Затем Maximo пытается работать с объектом в памяти и обнаруживает, что он не совпадает с тем, что находится в базе данных, и выдает эту ошибку. Время не имеет к этому никакого отношения (кроме того, что редактирование произошло в какой-то момент после того, как запись была загружена в память).

Что вам нужно сделать, это убедиться, что вы изменяете точно то же самое запись задачи / назначения / labtrans, которая уже была загружена в память. Этот материал "MXServer.getMXServer (). GetMboSet" гарантированно использует новый объект. Так вы начинаете новую транзакцию в Maximo; как убедиться, что вы не используете что-либо уже загруженное в память. Я подозреваю, что вы хотите избавиться от неявного объекта "mbo", который вам даст скрипт.

...