有人能发布从以前签出的对象中获取私有工作副本ID或对象所需的代码吗?我尝试使用Alfresco网络脚本来获得工作副本,如下所示:/露天/服务/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 repo的根目录中,该repo有三个版本,并且当前已签出,则会输出以下内容:
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
希望能有所帮助,
Jeff
如果签出文档,则属性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);