CodeZine(コードジン)

特集ページ一覧

JIRA SoftwareをCMIS準拠のコンテンツ管理ソフトウェア「Alfresco」と連携させて情報共有をさらに活性化!

JIRAやConfluenceをもっと使いこなそう! エキスパートが教える、外部ツール連携術 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 昨今、開発現場での情報共有は必須ともいえるほどに重要視されています。情報共有ツールとしてJIRAやConfluenceといったアトラシアン製品は多くの開発現場で使用されていますが、チームの仕組みに存在するからなんとなく使っている……そのような方も多いのではないでしょうか。しかしせっかくのツール、多種多様な機能をもっと活用したいと思いませんか? 本連載では使い慣れた環境と組み合わせてツールをさらに使いこなす方法を、アトラシアン製品の国内販売代理店であるリックソフトがお伝えします。前回は、JIRAのサマリーを外部エディタで編集する方法について解説しました。今回はCMIS APIを利用して、JIRA SoftwareをCMIS準拠のコンテンツ管理ソフトウェアである「Alfresco」と連携させる一例を紹介します。

はじめに

 CMISとはContent Management Interoperability Serviceの略称で、コンテンツ管理の標準規格です。CMIS準拠のコンテンツ管理ソフトウェアは、「Alfresco」だけでなく「EMC Documentum」「IBM FileNet」「Microsoft SharePoint」など、多くのソフトウェアが存在します。

 今回利用したAlfrescoは、世界中で多くの実績があるオープンソースのエンタープライズ・コンテンツマネジメント(ECM)です。

 JIRAでダイアログを表示し、Alfrescoのドキュメントをファイル名またはドキュメント内のコンテンツからキーワード検索して、一致したドキュメントを一覧で表示する簡単な機能(図1および図2)を、JavaScriptライブラリであるjQueryとCmisJSを利用することで実現します。

図1 ドキュメント検索機能
図1 ドキュメント検索機能
図2 ドキュメント表示機能
図2 ドキュメント表示機能

開発環境

 今回はJIRA 7.2とAlfresco 5.1を利用していますが、セットアップの手順については記載しません。

  • CentOS 6.4(今回はこのバージョンで確認しました)
  • JIRA 7.2
  • Alfresco 5.1

JIRAからAlfrescoのドキュメントを検索する機能を動作させてみる

 はじめに、jQueryとCmisJSで実装されたJavaScriptをChrome DevToolsで簡単に確認します。

 まず、JIRAとAlfrescoへのアクセス確認をします。Chromeからアクセスしてログインできることを確認してください。今回、私の手元で用意したJIRAとAlfrescoのURLは以下の通りです。

 ソースコードの以下の変数を先ほど確認したAlfrescoのURLとユーザー名、パスワードに合わせて編集します。変数のurl_cmisbrowserで定義されたURL末尾の「/cmisbrowser」はCMIS APIのエンドポイントとなります。

var url_cmisbrowser = 'http://demo.atlassian/alfresco/cmisbrowser';
var url_sharedetails = 'http://demo.atlassian/share/page/document-details?nodeRef=';
var username = 'admin';
var password = 'zaq12wsx';

 JIRAとAlfrescoのURLが異なる生成元(プロトコル、ドメイン、ポート番号の三つを合わせたもの)の場合、ブラウザの同一生成元ポリシー(Same Origin Policy)によってJIRAからAlfrescoへの接続がうまくいきません。その場合は、Alfrescoの設定ガイド for クロスドメイン(CORS)を参照してください。

 JIRAのダッシュボードを表示して、Chromeの[Console]パネルを表示してください。ダッシュボード以外では正しく動作しない場合があります。

 [Console]パネルが表示できたら、ソースコードをそのまま貼り付けてEnterを押してください。JIRAからAlfrescoへの接続が問題なければ図1のように検索アイコンがプロファイルの右側に表示されます。問題がある場合は、[Console]パネルに「レポジトリのロードが失敗しました。」というメッセージが表示されます。その場合はAlfrescoのURLとユーザー名、パスワードが正しいかどうかもう一度確認してください。

 問題なければ、検索アイコンをクリックしてダイアログを表示してください。表示されたらダイアログの検索ボックスにキーワードを入力して、Enterキーを押下するか[Search]ボタンをクリックします。キーワードに一致したAlfrescoのドキュメント一覧がダイアログに表示されるはずです。

 ここまでChromeでの動作確認が取れたら、JIRAのお知らせバナーにソースコードを埋め込んでみましょう。

 まず、JIRA管理者でログインして[システム]→[ユーザーインターフェース]→[お知らせバナー]を表示します。[お知らせ]の入力欄にソースコードを貼り付けて、先頭に<script type="text/javascript">、最後に</script>を追加します。終わったら[バナーの設定]ボタンをクリックして保存してください。

 最後にJIRAのダッシュボードを表示して、検索アイコンからAlfrescoドキュメントを検索できるか確認します。

図3 お知らせバナーの編集画面
図3 お知らせバナーの編集画面

 今回の紹介は、あくまでもJavaScriptによるCMIS APIの確認に焦点を絞っているため、ユーザー認証で利用するユーザー名とパスワードはソースコードに直接埋め込む形で実現しています。この認証情報はユーザーが参照することができてしまうため、プロダクション環境でのご利用はお控えください。

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のセッションを作成する部分を説明します。

CMIS Sessionの使用例
    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からドキュメントのコンテンツ内とファイル名をキーワードで検索し、結果を表示する部分を説明します。

CMIS Sessionの使用例
    $("#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を参照してください。

図4 取得内容
図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製品に関するご相談は、リックソフト株式会社にご相談ください。

参考リンク

リックソフトはアトラシアン製品アジアパシフィック売り上げ第1位(2015~2016年)

 リックソフト株式会社は、日本でトップレベルのAtlassian Platinum Solution Partnerです。アトラシアン製品の専任技術者が30人以上在籍しており、手厚いサポートを提供しています。また、豊富なライセンス購入特典もご用意しております。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5