意味深なタイトルですが意味は無いです。
皆さんはApache ChemistryやCMISという言葉をご存じでしょうか。
CMISというのはContent Management Interoperability Servicesの略であり、
コンテンツ管理システム (CMS/ECM)の標準規格です。
これを使うことで、異なるベンダのバックエンドデータへのアクセスが容易になります。
たとえば、弊社で扱っているAlfrescoはCMISインターフェースをもつため、
CMIS準拠のクライアントライブラリを使うことでAlfrescoリポジトリに対する
ドキュメントの作成や削除を簡単に行えます。
次にApache Chemistryについてですが、
これはCMISに準拠したクライアントやサーバを実装するためのJavaライブラリです。
実際にこのライブラリを使い、
JavaコンソールプログラムからAlfrescoリポジトリ内を操作してみましょう。
(Alfresco Community Edition 3.4dに対し動作確認済み)
- リポジトリへの接続
SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); Map parameter = new HashMap(); parameter.put(SessionParameter.USER, "admin"); parameter.put(SessionParameter.PASSWORD, "admin"); parameter.put(SessionParameter.ATOMPUB_URL, ALFRSCO_ATOMPUB_URL); parameter.put(SessionParameter.BINDING_TYPE,BindingType.ATOMPUB.value()); parameter.put(SessionParameter.REPOSITORY_ID, REPOSITORY_ID); session = sessionFactory.createSession(parameter); return session.getRootFolder();
Map props = new HashMap(); props.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder"); props.put(PropertyIds.NAME, newFolderName); Folder newFolder = target.createFolder(props); return newFolder;
Map props = new HashMap(); props.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document"); props.put(PropertyIds.NAME, newDocName); System.out.println("This is a test document: " + newDocName); String content = "aegif Mind Share Leader Generating New Paradigms by aegif corporation."; byte[] buf = null; try { buf = content.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ByteArrayInputStream input = new ByteArrayInputStream(buf); ContentStream contentStream = session.getObjectFactory().createContentStream( newDocName, buf.length, "text/plain; charset=UTF-8", input); target.createDocument(props, contentStream, VersioningState.MAJOR);
try { CmisObject object = session.getObjectByPath(target.getPath() + delDocName); Document delDoc = (Document) object; delDoc.delete(true); } catch (CmisObjectNotFoundException e) { System.err.println("Document is not found: " + delDocName); }
いかがだったでしょうか。
皆さんが想像されていたものと勝手が違ったかもしれません。
しかし、同じクライアントコードを使い
異なるリポジトリ (e.g. Alfresco, SharePoint)を操作できるようになれば
そのメリットは十分にあると言えるでしょう。
今回はApache Chemistryを使いましたが、
たとえばRubyベースであれば、CMISクライアント実装のActiveCMISがあります。
@mryoshio
No comments:
New comments are not allowed.