如何查找文档是否可版本化?

时间:2013-03-06 11:42:56

标签: java alfresco opencmis

如何使用OpenCMIS代码查找文档在露天是否可版本化?

2 个答案:

答案 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允许的操作。