Я создаю файл на моем документе службы с CMIS API, используя следующий код:КМИС Versioning не работает, как ожидалось
zipMapFile.put(PropertyIds.OBJECT_TYPE_ID, "sap:versioned");
zipMapFile.put(PropertyIds.NAME, "g" + g.getId() + ".zip");
Document versionedDocument = openCmisSession.getRootFolder().createDocument(zipMapFile, contentStream, VersioningState.MAJOR);
newZipFileId = versionedDocument.checkOut();
...
Код выше работает, и файл быть правильно генерируется. Когда я запускаю следующий код:
cmisSession.getObject(newZipFileId.getId());
Я получаю файл, который я создал ранее, без ошибок.
Однако у меня возникли проблемы при попытке загрузить новую версию для этого файла.
Чтобы сделать это, я использую следующий фрагмент кода:
oldZipFileId = newZipFileId;
Document pwc = (Document) cmisSession.getObject(oldZipFileId);
pwc.setContentStream(contentStream, true);
newZipFileId = pwc.checkIn(false, null, null, null);
Всякий раз, когда я делаю это, я могу получить доступ к новой версии без проблем работает следующий код:
cmisSession.getObject(newZipFileId.getId());
Однако я больше не могу получить доступ к старой версии! Если я пытаюсь запустить:
cmisSession.getObject(oldZipFileId);
Я получаю CmisObjectNotFoundException
В тот момент, я потерял доступ к старой версии точно, когда метод pwc.checkIn(false, null, null, null);
выполняется. После этого вызова попытка получить объект, на который ссылается oldZipId, дает мне исключение CmisObjectNotFoundException.
Я использую MongoDB.
Любая помощь приветствуется! Спасибо!
No. Когда метод CreateDocument() выполняется, версия создается и getAllVersions() возвращает версию. В следующей строке, когда pwc.checkOut() выполняется, создается новая версия и getAllVersions() возвращает две версии. Однако, когда новая новая версия создается путем вызова pwc.checkIn(), getAllVersions() все еще возвращает только две версии. Первая версия, созданная createDocument(), не потеряна (она все еще существует), однако вторая версия, созданная методом checkout(), заменяется новой версией, созданной методом checkIn(). – felipeek
Не знаю, ясно ли я, если вы не могли понять, пожалуйста, скажите мне – felipeek
Являются ли два документа, возвращенные getAllVersions() правильными после checkIn? Осмотрите contentStream и свойства объектов, возвращаемых getAllVersions. Предыдущие ссылки на объекты Document могут меняться после checkIn. Кроме того, я думаю, что PWC может исчезнуть после успешной проверки. – daves