有人可以发布从先前已签出的对象中获取私有工作副本 ID 或对象所需的代码吗?我尝试使用 Alfresco web Scripts 来获取工作副本,如下所示:/alfresco/service/cmis/pwc/i/d1f91b65-1165-4db5-8521-8fc3abb1074b 但它给了我一个 404
请有任何帮助
使用 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
希望有帮助,
杰夫
如果文档被签出,属性 cmis:versionSeriesCheckedOutId 应该包含 PWC id。这是一个 OpenCMIS 片段:
String pwcId = doc.getVersionSeriesCheckedOutId();
Document pwc = (Document) session.getObject(pwcId);
我猜你的答案在这个论坛帖子中。
我将很快回顾一下:
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);