2013-03-06 53 views
0

如何使用OpenCMIS代碼查找文檔是否可在露天版本中進行版本控制?而在現實中露天使用cm:versionable方面來標記一個節點如何查找文檔是否可版本化?

// 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,:

回答

2

的方式。另一種方法是使用這樣一個事實,即所有對象都知道他們允許的動作是什麼。所以,你可以問一下,像這樣(在OpenCMIS工作臺Groovy的控制檯運行此):

doc = session.getObjectByPath("/cmis-demo/temp.txt") 
allowableActions = doc.getAllowableActions().getAllowableActions() 
if (allowableActions.contains(Action.CAN_CHECK_OUT)) { 
    print "Versionable!" 
} 

如果文檔沒有版本化,不管是什麼原因,它不會有CAN_CHECK_OUT允許的動作。

+0

謝謝傑夫波茨 – 2013-03-07 05:43:14

2

在純CMIS的方式,下面的代碼片段會實現目標被壓縮到版本控制。這與標準CMIS域模型不兼容,其中版本性是從對象類型定義中靜態派生的。

我相信cm:versionable方面是由Alfresco在向錯過它的節點發出版本控制CMIS呼叫時自動添加的,因此上述不兼容性不應導致任何實際問題。

另外一個更具體的Alfresco解決方案將要求您使用Alfresco OpenCMIS Extension:那skuro指出作品

CmisObject object = session.getObjectByPath("/path/to/object"); 
Boolean isVersionable = object instanceof AlfrescoDocument && ((AlfrescoDocument)object).hasAspect("cm:versionable");