Java 如何确定文档是否可版本化?
如何使用OpenCMIS代码在alfresco中查找文档的版本?以纯CMIS的方式,以下代码片段将实现此目标:Java 如何确定文档是否可版本化?,java,alfresco,opencmis,Java,Alfresco,Opencmis,如何使用OpenCMIS代码在alfresco中查找文档的版本?以纯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/obje
// 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
节点总是标记为可版本化,而实际上Alfresco使用cm:versionable
特性将节点标记为可版本化。这与标准CMIS域模型不兼容,在标准CMIS域模型中,版本性是从对象类型定义静态派生的
我认为,当向错过它的节点发出版本控制CMIS调用时,Alfresco会自动添加cm:versionable
方面,因此上述不兼容性不应导致任何实际问题
另一种更为露天的解决方案要求您使用:
以纯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
节点总是标记为可版本化,而实际上Alfresco使用cm:versionable
特性将节点标记为可版本化。这与标准CMIS域模型不兼容,在标准CMIS域模型中,版本性是从对象类型定义静态派生的
我认为,当向错过它的节点发出版本控制CMIS调用时,Alfresco会自动添加cm:versionable
方面,因此上述不兼容性不应导致任何实际问题
另一种更为露天的解决方案要求您使用:
斯库罗指出的方法是有效的。另一种方法是使用所有对象都知道其允许的操作的事实。所以您可以这样问(在OpenCMIS工作台Groovy控制台中运行):
如果文档不可版本化,无论出于何种原因,它都不会有“可以签出”允许的操作。skuro指出的方法是有效的。另一种方法是使用所有对象都知道其允许的操作的事实。所以您可以这样问(在OpenCMIS工作台Groovy控制台中运行): 如果文档不可版本控制,无论出于何种原因,它都不会有允许的CAN_CHECK_OUT操作
doc = session.getObjectByPath("/cmis-demo/temp.txt")
allowableActions = doc.getAllowableActions().getAllowableActions()
if (allowableActions.contains(Action.CAN_CHECK_OUT)) {
print "Versionable!"
}