如何使用OpenCMIS代码查找文档在露天是否可版本化?
答案 0 :(得分:2)
以纯CMIS方式,以下代码片段将实现目标:
// For how to get a Session see:
// http://chemistry.apache.org/java/opencmis-client-api.html#sessions
Session session = getSession();
CmisObject object = session.getObjectByPath("/path/to/object");
ObjectType type = object.getType();
Boolean isVersionable = type instanceOf DocumentType && ((DocumentType)type).isVersionable();
事实上,cmis:document
个节点始终标记为可版本化的in Alfresco,而实际上Alfresco使用cm:versionable
方面来标记要进行版本控制的节点。这与标准CMIS域模型不兼容,其中可版本性是从对象类型定义静态派生的。
我相信Alfresco在向错过它的节点发出版本CMIS调用时会自动添加cm:versionable
方面,因此上述不兼容性不会导致任何实际问题。
另一个更多Alfresco特定解决方案要求您使用Alfresco OpenCMIS Extension:
CmisObject object = session.getObjectByPath("/path/to/object");
Boolean isVersionable = object instanceof AlfrescoDocument && ((AlfrescoDocument)object).hasAspect("cm:versionable");
答案 1 :(得分:2)
skuro指出的方式有效。另一种方法是使用所有对象知道其允许动作是什么的事实。所以你可以这样问一下(在OpenCMIS Workbench Groovy控制台中运行):
doc = session.getObjectByPath("/cmis-demo/temp.txt")
allowableActions = doc.getAllowableActions().getAllowableActions()
if (allowableActions.contains(Action.CAN_CHECK_OUT)) {
print "Versionable!"
}
如果文档不是可版本化的,无论出于何种原因,它都不会有CAN_CHECK_OUT允许的操作。