IBM Case Manager: периодически возникает ошибка "Обновить несоответствие порядкового номера" при попытке сохранить дело
Я использую Java API с Case Manager 5.2.1 в Windows.
Мой веб-сервис делает следующее:
// Create a brand new case
CaseType myCaseType = CaseType.fetchInstance(osRef, myCaseTypeName);
Case newPendingCase = Case.createPendingInstance(myCaseType);
// Save it now to get access to the Case ID
newPendingCase.save(RefreshMode.REFRESH, null, ModificationIntent.MODIFY);
newCaseIdentifier = newPendingCase.getIdentifier();
// Fetch a fresh copy of the case instance
Case cs = Case.fetchInstanceFromIdentifier(osRef, newCaseIdentifier);
// Now set a whole bunch of properties, add documents, etc. etc.
...
// Finally, save all our updates: to "cs", not "newCaseIdentifier"
cs.save(RefreshMode.REFRESH, null, ModificationIntent.MODIFY);
ПРОБЛЕМА: я периодически получаю эту ошибку:
Объект {52EECAC2-38B2-4CB5-8F22-BAF33D6C35EC} класса "MyCaseTypeName" не был изменен или удален, поскольку он был изменен один или несколько раз в хранилище с момента его извлечения приложением. Обновить несоответствие порядкового номера; запрошенный USN = 0, база данных USN = 1
Я знаю, что есть только два вызова case.save(): один для "newPendingDocument", другой (намного позже) для "cs".
Я выполняю один и тот же код несколько раз: иногда это работает, иногда, если происходит сбой с ошибкой "Обновление номера последовательности несоответствие".
Q: Какие-нибудь идеи / предложения относительно того, как я могу решить эту проблему?
1 ответ
Глядя на код, который вы предоставляете, я не понимаю, зачем вам создавать второй экземпляр Case. Я полагаю, что вам будет лучше сделать это вместо этого:
// Create a brand new case
CaseType myCaseType = CaseType.fetchInstance(osRef, myCaseTypeName);
Case newPendingCase = Case.createPendingInstance(myCaseType);
// Save it now to get access to the Case ID
newPendingCase.save(RefreshMode.REFRESH, null, ModificationIntent.MODIFY);
newCaseIdentifier = newPendingCase.getIdentifier();
// Fetch a fresh copy of the case instance (not sure if this is necessary)
newPendingCase = Case.fetchInstanceFromIdentifier(osRef, newCaseIdentifier);
// Now set a whole bunch of properties, add documents, etc. etc.
...
// Finally, save all our updates: to "newPendingCase"
newPendingCase.save(RefreshMode.REFRESH, null, ModificationIntent.MODIFY);
Я не работал с Case Manager, но работал с P8. АПИ звонки очень похожи.
Номер USN может быть немного сложнее. Если есть какой-либо период времени, в течение которого вы ожидаете внешнего вызова (например, к интерфейсу REST стороннего производителя), вы можете выполнить newPendingCase.Refresh()
после вызова, а затем снова заполнить любые необходимые свойства дела.