有人可以发布必要的代码,以便从先前已检出的对象中获取私有工作副本ID或对象吗?我尝试使用Alfresco web Scripts来获取工作副本,如下所示: /户外/服务/ CMIS /普华永道/ I / d1f91b65-1165-4db5-8521-8fc3abb1074b 但它给了我一个404
任何帮助,请
答案 0 :(得分:3)
使用OpenCMIS,getAllVersions()调用返回对象的所有版本,包括签出对象时的私有工作副本(PWC)。 PWC将位于列表的顶部,然后是最新版本。
因此,在您的情况下,如果您想要查询对象,或浏览文件夹树或其他任何内容,您可以这样做。然后询问对象的版本,如果签出则可以从该列表中获取PWC。
这是一个Groovy示例:
document = session.getObjectByPath('/versionableExample.txt')
println("Checked out?" + document.versionSeriesCheckedOut)
versions = document.getAllVersions()
for (version in versions) {
println ("Version:" + version.versionLabel + " PWC?:" + version.privateWorkingCopy)
}
这将输出以下内容,假设一个名为versionableExample.txt的文档存在于Apache Chemistry In-Memory存储库的根目录中,该存储库具有三个版本且当前已签出:
Checked out?true
Version:V 4.0 PWC?:true
Version:V 3.0 PWC?:false
Version:V 2.0 PWC?:false
Version:V 1.0 PWC?:false
希望有所帮助,
杰夫
答案 1 :(得分:2)
如果签出文档,则属性cmis:versionSeriesCheckedOutId应包含PWC ID。这是一个OpenCMIS片段:
String pwcId = doc.getVersionSeriesCheckedOutId();
Document pwc = (Document) session.getObject(pwcId);
答案 2 :(得分:1)
我猜您的答案在this论坛帖子中。
我将很快回顾一下:
RepositoryInfo repositoryInfo = session.getRepositoryInfo();
AclCapabilities aclCapabilities = repositoryInfo.getAclCapabilities();
Map<String, PermissionMapping> permissionMappings = aclCapabilities.getPermissionMapping();
PermissionMapping permissionMapping = permissionMappings.get(PermissionMapping.CAN_CHECKOUT_DOCUMENT);
List<String> permissions = permissionMapping.getPermissions();
Ace addAce = session.getObjectFactory().createAce(principal, permissions);
List<Ace> addAces = new LinkedList<Ace>();
addAces.add(addAce);
document.addAcl(addAces, AclPropagation.REPOSITORYDETERMINED);
ObjectId checkedOutDocumentObjectId = document.checkOut();
Document checkedOutDocument = (Document) session.getObject(checkedOutDocumentObjectId);