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() после вызова, а затем снова заполнить любые необходимые свойства дела.

Другие вопросы по тегам