CmisJSについて
Alfrescoと連携する際に利用できるAPIの一つに、OASISが開発した文書管理システムのオープン標準であるCMIS APIがあります。このAPIを利用するとAlfrescoだけでなく、Microsoft SharePointやDocumentumといったCMISに準拠した文書管理システムとも連携することが可能になります。CMISのクライアント実装として有名なのはApache Chemistryというプロジェクトのライブラリです。このライブラリではJavaやPython、.Netといった言語で開発することができますが、今回はより簡単にCMISの動作を確認するためにJavaScriptで実装可能なCmisJSというオープンソースのライブラリを利用して実現してみました。以下に今回作成した機能のソースコードを交えて、簡単な利用方法を記載します。
CMIS APIでセッションを作成する
先ほど動作させたソースコードの中から、Alfrescoに対してCMISのセッションを作成する部分を説明します。
var url_cmisbrowser = 'http://demo.atlassian/alfresco/cmisbrowser'; // (1) var url_sharedetails = 'http://demo.atlassian/share/page/document-details?nodeRef='; var username = 'admin'; var password = 'zaq12wsx'; var session = cmis.createSession(url_cmisbrowser); // (2) session.setCredentials(username, password); // (3) session.loadRepositories().ok(function (data) { // (4) console.log(data); }).notOk(function(res) { console.log("レポジトリのロードが失敗しました。"); console.log(res); });
(1) AlfrescoのCMISエンドポイントを指定します。
(2) CMISのエンドポイントからセッションを作成します。
(3) Alfrescoへ接続する際の認証情報をセッションに設定します。ここで指定するアカウントはAlfrescoへログインできるユーザーである必要があります。
(4) CMISのセッションでレポジトリ情報をロードします。このロードが成功して初めてCMIS APIを利用してレポジトリに対してドキュメントやフォルダの操作が可能になります。
CMIS APIでファイルを検索する
次に、生成したセッションを利用して、Alfrescoからドキュメントのコンテンツ内とファイル名をキーワードで検索し、結果を表示する部分を説明します。
$("#demo-dialog-submit-button").on("click", function(e) { e.preventDefault(); $('#demo-table').find('tbody').empty(); var keyword = $("#demo-search").val(); var query = "SELECT * FROM cmis:document WHERE CONTAINS('\"" + keyword + "\" OR cmis:name:\"" + keyword + "\"')"; var searchAllVersions = false; var maxItems = 10; session.query(query, searchAllVersions, { maxItems: maxItems }).ok(function (data) { // (1) $.each(data.results, function(i, doc) { // (2) $('#demo-table').find('tbody').append( // (3) '<tr>'+ '<td headers="name"><a href="' + url_sharedetails + doc.succinctProperties['cmis:versionSeriesId'] + '">' + doc.succinctProperties['cmis:name'] + '</a></td>'+ '<td headers="mimetype">' + doc.succinctProperties['cmis:contentStreamMimeType'] + '</td>'+ '<td headers="length">' + doc.succinctProperties['cmis:contentStreamLength'] + '</td>'+ '</tr>' ); }); }); });
(1) Alfrescoに格納されているドキュメントを検索する場合はqueryというメソッドを利用します。以下の条件で検索しています。
- 第1引数:検索対象はドキュメントのコンテンツ内とファイル名(cmis:name)に指定されたキーワードが含まれるドキュメントとするようにCMIS Statementを指定する。
- 第2引数:検索対象は最新のバージョンのみとする。
- 第3引数:検索結果は最大で10件取得する。
(2) 検索結果からドキュメントが格納されているArray型のresultsを1件ずつループで取得しています。他にも「hasMoreItemsに検索結果が存在するか否か」「numItemsで検索結果の件数」といった情報が返却されます。詳しくは図4を参照してください。

(3) ドキュメントのファイル名(cmis:name)、MimeType(cmis:contentStreamMimeType)、ファイルサイズ(cmis:contentStreamLength)を取得してHTMLテーブルに行として表示しています。ファイル名はHTMLのリンクにして、該当のドキュメントをAlfrescoで表示できるようにしています。
おわりに
このようにJIRAとCMIS準拠のコンテンツ管理ソフトウェアとの連携は簡単に実現できます。
今回はAlfrescoを利用しましたが、それ以外のEMC Documentum、IBM FileNet、Microsoft SharePointなどとの連携も試してみてください。
Atlassian社が開発するJIRAはプロジェクト管理やタスク管理、バグトラッキングツールとして世界中で有名なツールです。最近では業務プロセスを効率化する基盤としても活用されるようになりました。
JIRAは「課題管理」「プロジェクト管理」「プロセス管理」ツールのため、コンテンツ管理機能は十分ではありません。例えば、大きなファイルを添付してしまうとJIRAに負荷がかかり、パフォーマンス低下を引き起こす原因になりかねません。「餅は餅屋」というように、「プロセス管理や課題管理はJIRAへ」「コンテンツ管理はAlfrescoへ」任せる利用方法が、お互いのツールにとって無理のない運用を実現させます。
このように業務プロセス管理とコンテンツ情報を連携させることによって、「『デジタルトランスフォーメーション』にも通ずる変革に至るのでは?」と壮大な妄想をしつつ、最後にAtlassian製品とAlfrescoを連携させるアドオンを紹介したいと思います。
リックソフト株式会社では、「Alfresco connector for JIRA」と「Alfresco connector for Confluence」の二つのアドオン製品を開発しています。
JIRAやConfluence上でさまざまなファイルのPDFプレビューやフォルダ作成などができるだけでなく、動画再生やCADデータ、illustrator、Photoshopなどのファイルもプレビューできます。
Atlassian製品に関するご相談は、リックソフト株式会社にご相談ください。
参考リンク
- API Documentation - CmisJS
- 設定ガイド for クロスドメイン(CORS) - Alfresco connector for Confluence (日本語版) - Documentation
- Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 - Build Insider
- Apache Chemistry - Index
- CmisSession - CmisJS
- Content Management Interoperability Services (CMIS) Version 1.0
リックソフトはアトラシアン製品アジアパシフィック売り上げ第1位(2015~2016年)
リックソフト株式会社は、日本でトップレベルのAtlassian Platinum Solution Partnerです。アトラシアン製品の専任技術者が30人以上在籍しており、手厚いサポートを提供しています。また、豊富なライセンス購入特典もご用意しております。