2016-10-24 3 views
0

Мы заметили, что 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

Как только мы войдем в запись с ошибкой и отменим изменение, мы закончим с двумя одинаковыми СУВ на устройстве

Помимо вышеуказанного вопроса, то должен быть способ, чтобы очистить локальные данные с устройства без необходимости удалить приложение

ответ

0

Вы можете попробовать положить некоторые Model.save () или в app.xml вы можете принудительно сохранить, когда вы показываете/скрываете представление.

Без сохранения я думаю, что все вносится в одно изменение ... отправляется как одно сообщение ... и вы теряете контроль над тем, как он становится бесполезным.