Мы заметили, что Anywhere группирует и заказывает транзакции таким образом, чтобы сначала были отправлены транзакции для родительского [то есть: Рабочий заказ], а затем транзакция для дочерних записей [например: Спецификации ]Anywhere переупорядочивает последовательность транзакций
Сценарий: Шаг 1. Измените описание на WO Шаг 2. Введите значения Спецификация Шаг 3. Измените статус WO сравнительному
в результате сделки посылаются следующим Step1 и Step3 являются сгруппированы и отправлены в Maximo Об успехе Шаг 2 отправляется Maximo
Мы хотим, чтобы отправлять сообщения в том же порядке, что произошло, и причина этого заключается в том, что валидация мы имеем в месте в Maximo
например: Мы проверяем, если ребенок таблица имеет записи [в нашем случае мы проверяем, заполнены ли спецификации] до того, как мы закончим WO
Из-за переупорядочения событий \ транзакций мы не можем COMP WO из устройства в качестве дочерней транзакции никогда не доходит до Maximo, поскольку транзакция родителя не выполняется из-за отсутствия данных о ребенке [catch 22]
Мы нашли кусок кода в JS-файле [/MaximoAnywhere/apps/WorkExecution/common/js/platform/model/PushingCoordinatorService.js], что делает это Переупорядочить и мы закомментировали повторный заказ
//if (!transaction.json[PlatformConstants.TRANSACTION_LOCK_FORUPDATE])
//{
// Logger.trace("[PUSHING] Trying to shrink/merge transactions and lock transactions");
// var self = this;
// var promise = this._shrinkSubTransactions(metadata, transaction);
//
// Logger.trace("[PUSHING] going to perform async operations");
// promise.then(function() {
// self._pushSubTransactions(transaction, deferred);
// });
//}
//else
//{
Logger.trace("[PUSHING] going to perform async operations");
this._pushSubTransactions(transaction, deferred);
//}
Как только это было сделано, мы смогли скомпоновать WO с устройства, поскольку события/транзакция теперь отправлены в том же порядке, в каком они произошли.
Однако мы заметили, что это создало еще одну нежелательную проблему, при которой при ошибке устройство заканчивается двумя Рабочими поручениями с ошибкой и той, которую она запросила у Maximo
Сценарий: У нас есть активный таймер, запущенный в WO, и мы нажимаем на часы. Это вызовет представление Stop Timer View, и мы выберем [Complete Work]
Итак, есть две вещи, которые должны произойти: таймер должен быть остановлен и статус должен быть изменен. Из-за некоторой ошибки проверки от Maximo эта транзакция терпит неудачу. В результате мы получаем один и тот же код wok, дважды с новым статусом и сообщением об ошибке, и один из них повторно выбран из Maximo
Как только мы войдем в запись с ошибкой и отменим изменение, мы закончим с двумя одинаковыми СУВ на устройстве
Помимо вышеуказанного вопроса, то должен быть способ, чтобы очистить локальные данные с устройства без необходимости удалить приложение