Wednesday, July 10, 2013

CMIS Workbenchの使い方・デバッグ方法

ご無沙汰しています。linzhixingです。
前回からだいぶ間が空いてしまいましたが、その間主に弊社の自社製品である文書管理プラットフォームNemakiWareを開発していました。

私だけではないと思いますが、開発が面白いとついつい外向けにアウトプットするのを忘れがちになってしまいますね。とくに開発中は弊社内でなかなか活発に利用されているコミュニケーションツールco-meetingにバグや学習したことなどをラフに吐き出してアウトプット欲が満たされてしまっていましたが、今日は「ビールでも呑みながらもっとブログを書こう」という会社イベントにつられて、うっかり書きにきました。

NemakiWareは先日Ver1.0GAをリリースしたばかりで、ブログにするには恰好のとてもホットな話題なのですが、その分重たくもあり、今日は次回見送りです。お酒、呑んでるんで。
その代わり、今回のブログはNemakiWareの開発者なら誰でもマストな、CMIS Workbenchの使い方およびWorkbenchを使ったデバッグについてです。

 

CMIS Workbenchって?

NemakiWareは、Alfrescoなど他の主要なECMと同じく、CMISという共通規格によって文書にアクセスしたり編集したりすることができます。

CMIS規格自体はあくまで規格であり、その実装方法は様々に考えられますが、実装用ライブラリとしてはApache Chemistryがほぼデファクトスタンダードといえるでしょう。そのChemistryが提供する、開発用の簡易的なクライアントがCMIS Workbenchです。

Workbenchには
  • 簡便なクライアント機能
  • 個々のECMリポジトリが正しくCMISを実装しているかユニットテスト
の機能が用意されています。

CMIS Workbenchはこのページから取得できますが、起動方法、デバッグの方法など説明された記事が少ないので(特に日本語!)、ご説明いたします。


インストール

  • このページからOpenCMIS Workbenchをダウンロードします。
  • ダウンロードしたzipを解凍し、中にあるworkbench.sh(WIndowsならworkbench.bat)を実行します。
  • ログインウィンドウが開くので、リポジトリのURLと、ユーザID/パスワードを入力します。リポジトリのURLですが、
    • Alfrescoの場合は、少しややこしいです。リポジトリURLの一部であるリポジトリIDが、インストールされているAlfrescoインスタンスごとに違う値になっているのです。リポジトリURLのテンプレートとしてはhttp://<server address>:<port>/alfresco/cmisatom/<repository id>となります。 <repository id>は、http://<server address>:<port>/alfresco/cmisatomにアクセスすると取得できるXMLファイルにたとえばhttp://127.0.0.1:8080/alfresco/cmisatom/42f4c22f-16dd-4ba8-80b4-9a8a7250fb70/typesなどといったREST形式のURIが複数見つかりますので、そこからわかります。  
    • NemakiWareを繋ぐこともできますが、それはまたNemakiWareについて記事を書いたときに……
  • Load Repository ボタンをクリックし、正しく接続されればボタン下にテキストが表示されます。そのままLoginボタンを押してください。


簡易クライアント機能

  • フォルダ構造をドリルダウンして存在するノードを探索できます。
  • 各ノードに関するメタデータ、カレントユーザが実行可能なアクションなどの表示/実行
  • ノードの作成
  • リポジトリ全体の設定情報
  • CMIS SQL(SQLをベースとしたクエリ言語)
  • チェンジログ
etc.


ユニットテスト(TCK)の実行

 メニューバーにTCK(Test Compatibility Kit)という項目があります。これはCMISサーバがCMIS規格を正しく遵守しているかという観点で書かれたユニットテスト群を実行する機能で、Run TCKボタンを押すだけで実行できます。

ドキュメントのCRUDテストにはそれなりに時間がかかるため、全体でおおよそ20分程度かかることがありますが、必要なテスト項目だけ自分で選択することもできます。
 
CMIS準拠サーバの開発者にとってはもちろん、汎用CMISクライアントから特定のCMIS準拠サーバへの接続ができるかどうか検討するためサーバ側のCMIS準拠度を測る指標としても活用することができるでしょう。


Workbench、とくにTCKのデバッグ (開発者向け)

WorkbenchもJavaアプリケーションなので、デバッグ可能です。とくにTCK部分は単純なJUnitで書かれていて、デバッグは難しくありません。一方、TCKを普通に実行して得られるログ情報はエラー原因の特定に不充分だったり、そもそもTCK自体がExceptionを出してログも出さずそれ以降のテストもスキップということがあるので、TCKをデバッグしながらCMIS実装の不具合を調べるのは、開発者的にはとても有益です。

WorkbenchのEclipseによるデバッグ方法は以下の通りです。
  • まずSVNからApache Chemistry OpenCMISのソースコードを一式取得します。
    svn https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/
  • 依存パッケージをDLしインストールします。
    mvn clean install -Dmaven.test.skip=true
  • Eclipseプロジェクトとして使えるようにします。
    mvn eclipse:eclipse
  • Eclipseにインポートします。
  • org.apache.chemistry.opencmis.workbench.Workbenchクラスを実行すればWorkbenchが実行できます。デバッグ実行も、通常のEclipseのやり方と同様です。
  • TCK関係の各Test Group(BasicTest GroupやCRUD Test Groupなど)に属するテストは、org.apache.chemistry.opencmis.tck.tests以下のパッケージに属します。TCKデバッグにはこのあたりを監視しておけばよいでしょう。

なお、まれにTCK自体にもバグ(というか不適切な仕様というか)があったりするので、もし見つけたらChemistryのJIRAに投稿しましょう!
私の場合、TCK絡みではすでに3件投稿して2件、次期バージョンでFIXされることになりました。ちょっとオープンソースっぽいですね。
NemakiWareもオープンソースで、バグ報告・エンハンスメント等、どなたからでも歓迎しております!

No comments: