OpenCMIS コードを使用してドキュメントが屋外でバージョン管理可能かどうかを確認するにはどうすればよいですか?
2 に答える
skuroが指摘する方法は機能します。別の方法は、すべてのオブジェクトが許可されているアクションを知っているという事実を利用することです。したがって、次のように尋ねることができます (これを OpenCMIS Workbench Groovy Console で実行します)。
doc = session.getObjectByPath("/cmis-demo/temp.txt")
allowableActions = doc.getAllowableActions().getAllowableActions()
if (allowableActions.contains(Action.CAN_CHECK_OUT)) {
print "Versionable!"
}
ドキュメントが何らかの理由でバージョン管理されていない場合、CAN_CHECK_OUT の許可されたアクションはありません。
純粋な 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();
実際には、Alfrescoではcmis:document
ノードは常にバージョン管理可能としてマークされますが、実際には、Alfresco はアスペクトを使用してノードをバージョン管理に服従させるようにマークします。これは、バージョン管理がオブジェクト タイプの定義から静的に派生する標準の CMIS ドメイン モデルと互換性がありません。cm:versionable
cm:versionable
上記の非互換性によって実際の問題が発生することはないように、バージョン管理 CMIS 呼び出しを欠落しているノードに発行すると、アスペクトは Alfresco によって自動的に追加されると思います。
別のより Alfresco 固有のソリューションでは、 Alfresco OpenCMIS Extensionを使用する必要があります。
CmisObject object = session.getObjectByPath("/path/to/object");
Boolean isVersionable = object instanceof AlfrescoDocument && ((AlfrescoDocument)object).hasAspect("cm:versionable");