Wednesday, May 9, 2012

SDKを使わないAlfrescoモジュールの開発

Alfrescoのプラグインを開発する場合、
ここあそこにあるように次の準備作業が通常必要になります。

  1. SDKのダウンロード
  2. Embeddedプロジェクトのインポート
  3. インポートしたプロジェクトのビルドパスへの追加

しかし、各バージョンに対し一連の作業を行いたくないのが人情、
面倒くさいことこの上なし。そのため今回は

Mavenを使い、xxxServiceを使った開発をできるか?
or
Mavenを使い、xxxWebScriptを使った開発をできるか?

というFAQへの回答に代えて環境構築方法をご紹介します。

[前提]

  • Alfrescoのインストールが済んでいること
  • Mavenの使い方をなんとなくでも掴んでいること

では先に参りましょう。


  1. EclipseでMavenプロジェクトの作成
    適当に作ってください。

  2. pom.xmlの変更
    ポイントは次の箇所です。
    14         <repository>
    15             <id>alfresco-mirror</id>
    16             <name>Alfresco Public Mirror</name>
    17             <url>http://maven.alfresco.com/nexus/content/groups/public</url>
    18         </repository>

    これで、alfresco.comが公開しているMavenリポジトリを参照できます。このリポジトリはCommunity版のホスティングですが、バージョンを揃えていればEnterprise版でも(保証は無いですが)ある程度使える技です。

  3. あとはdependenciesタグ内に必要なクラスを含むjarを参照するための記述を行います。たとえば、SearchServiceはalfresco-datamodelに含まれるので次のように依存関係を追加しておきます。

    68         <dependency>
    69             <groupId>org.alfresco</groupId>
    70             <artifactId>alfresco-datamodel</artifactId>
    71             <version>4.0.br32534-mvn-SNAPSHOT</version>
    72             <classifier>community</classifier>
    73         </dependency>

  4. サンプルWebScriptの作成
    ここを見て適当に作ってください」と書こうと思いましたが同僚から文句が出そうなのでやや丁寧に書きます。具体的には次のものを作成します。
    • WebScript設定 ... custom-webscripts-context.xml
    • WebScript定義 ... hello_maven.get.desc.xml
    • WebScriptレスポンス ... hello_maven.get.html.ftl
    • WebScriptロジック ... HelloMaven.java

      HelloMaven#executeImplにあるように、今回のWebScriptでは/Company Home/Data Dictionaryの下を再帰的に検索してヒットした全コンテンツのNodeRefを返すようにします。

  5. build.xmlの作成
    Maven AntRun Pluginを使います。動作としては、packageフェーズ実行時にWebScript関連ファイルをAlfrescoインストールディレクトリへコピーするように記述します。

  6. Mavenの実行
    $ mvn package
    上記コマンドを実行することで、WebScript関連ファイルやjarファイルがAlfrescoの適切な場所へコピーされます。

  7. 動作確認
    Web Script Browserへアクセスし、
    Browse all Web Scripts -> GET /alfresco/service/tachibanakikaku/hello_mavenをクリックすると、作成したWeb Scriptが実行されます。認証が求められた場合にはadminユーザのものを入力してください。

うまく動きましたか。
今回作成したサンプルプロジェクトをGitHubに置きました。ぜひご利用ください。
次回は検索周りで有用な記事を書こうと考えています。

お楽しみに
---
mryoshio

No comments: