获取Working Copy对象

时间:2013-07-29 13:21:04

标签: alfresco cmis opencmis

有人可以发布必要的代码,以便从先前已检出的对象中获取私有工作副本ID或对象吗?我尝试使用Alfresco web Scripts来获取工作副本,如下所示: /户外/服务/ CMIS /普华永道/ I / d1f91b65-1165-4db5-8521-8fc3abb1074b 但它给了我一个404

任何帮助,请

3 个答案:

答案 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);