0

有人可以发布从先前已签出的对象中获取私有工作副本 ID 或对象所需的代码吗?我尝试使用 Alfresco web Scripts 来获取工作副本,如下所示:/alfresco/service/cmis/pwc/i/d1f91b65-1165-4db5-8521-8fc3abb1074b 但它给了我一个 404

请有任何帮助

4

3 回答 3

4

使用 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

希望有帮助,

杰夫

于 2013-08-01T22:05:59.280 回答
2

如果文档被签出,属性 cmis:versionSeriesCheckedOutId 应该包含 PWC id。这是一个 OpenCMIS 片段:

String pwcId = doc.getVersionSeriesCheckedOutId();
Document pwc = (Document) session.getObject(pwcId);
于 2013-08-02T17:09:10.867 回答
1

我猜你的答案在这个论坛帖子中。

我将很快回顾一下:

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);
于 2013-07-30T12:22:47.893 回答