CMIS版本控制没有按预期工作



我正在用CMIS API在我的文档服务上创建一个文件,使用以下代码:

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。

任何帮助都是感激的!谢谢你!

工作代码应该如下所示:

Document versionedDocument = openCmisSession.getRootFolder().createDocument(zipMapFile, contentStream, VersioningState.MAJOR);
oldZipFileId = versionedDocument.getId();
newZipFileId = versionedDocument.checkOut();
Document pwc = (Document) cmisSession.getObject(newZipFileId);
pwc.setContentStream(contentStream, true);
newZipFileId = pwc.checkIn(false, null, null, null);
// access last version
cmisSession.getObject(newZipFileId.getId());
// access old version
cmisSession.getObject(oldZipFileId);

虽然我不是HCP文档服务版本控制方面的专家,但您编写的所有内容都是按照AFAIK设计的。当你签入普华永道时,会有一个新的实际版本(历史上最新的版本),普华永道就不见了。因此,标识pwc的oldZipFileId将变得无效。pwc变成的新实际版本得到一个新的对象id。这似乎正是你所观察到的。

查看旧版本是否在document.getAllVersions()中。

相关内容

  • 没有找到相关文章

最新更新