2013-03-06 3 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으로 표시됩니다 :

순수한 CMIS의 방법으로

답변

2

방법 :

또 다른, 더 프레스코 특정 솔루션은 Alfresco OpenCMIS Extension을 사용하도록 요구한다. 대안은 모든 객체가 허용 가능한 동작이 무엇인지를 알 수 있다는 사실을 사용하는 것입니다. 이합니다 (OpenCMIS 워크 벤치 그루비 콘솔이 실행)처럼 그래서 당신은 그냥 요청할 수 있습니다 :

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

을 문서가 어떤 이유로, 버전 지정이없는 경우는 CAN_CHECK_OUT 허용 조치를하지 않아도됩니다.

+0

감사합니다. jeff Potts –

2

, 다음 코드는 목표를 달성하는 것 버전 관리를 정복해야합니다. 이것은 버전 유형성이 오브젝트 유형 정의에서 정적으로 파생 된 표준 CMIS 도메인 모델과 호환되지 않습니다.

위의 비 호환성으로 인해 실제 문제가 발생하지 않도록 CMIS를 놓친 노드에 대한 버전 관리 CMIS 호출을 발행 할 때 cm:versionable 특성이 Alfresco에 의해 자동으로 추가됩니다. skuro이 작품을 지적

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