Quantcast
Channel: aegif Labo Blog
Viewing all 244 articles
Browse latest View live

Alfresco勉強会#16 振り返り

$
0
0
こんにちは。てらしたです。 

6/6(木)に第16回Alfresco勉強会が開催されました。前回はHanare(ハナレ。オフィスからちょっと離れた場所にある個室なのでそう呼んでいます。)という会議室で実施したところ死ぬほど暑かったとのことなので、オフィス内の会議スペースで実施しました。19時以降はエアコンが切れてしまうという条件はどちらも同じなのですが、Hanareは窓がない上にあまり広くないのでプロジェクタを使っていると1時間もするとかなり暑くなってしまうんですよね・・・。前回参加された方には申し訳なかったです。

さて、そんな前回の教訓を生かして比較的快適な環境で実施した今回の勉強会ですが、テーマは以下の2つです。それぞれ簡単に紹介します。

1. Alfrescoのカスタムテーブルの使い方(寺下)

資料はこちら

Alfrescoが標準で用意しているテーブルとは別にカスタムテーブルを用意して、AlfrescoからデータをINSERTしたりSELECTしたりする方法について紹介しました。iBATISでSQLマッピングする方法さえわかってしまえばそれほど難しいことではないと思います。
ちなみに、サーバサイドのJavaScriptをちょっと試したい時に便利なJavaScript Consoleというツールを動作確認のデモの時に使ったのですが、これが本編の内容よりも反応が良かったような気がします。。。WebScriptsを開発する時なんかに非常に便利なツールなのでオススメです。

2. AlfrescoのAuditing(戸谷氏)

資料はこちら

次はAlfrescoが標準で用意しているAuditing(監査証跡)の使い方についての説明でした。AlfrescoのAuditingはけっこう癖があるのでとっつきにくいのですが、仕組みさえわかってしまえばいろいろ応用できるのではないかと思います。使ってみようかなという方はリンク先の資料を見るだけでもかなり参考になると思います。

次回の第17回勉強会は2013年8月1日(木)19時〜を予定しています。場所は引き続き弊社オフィスの予定です。
こういうことやりたいんだけどどうすればできる?とか、こんな機能を実装しようとしてるんだけどうまくいかないから相談したい、といった要望があればPartakeのイベントのコメント欄に書いていただければと思います。なるべくその要望に沿うような内容にしたいと思います(準備が間に合えば・・・)。もちろん発表も大歓迎です。

Activiti BPM Platformことはじめ(インストール方法とか)

$
0
0
こんにちは。最近自動車を買い替えたのですが、買い替え後10日で娘に車内で吐かれて意気消沈気味のおおたにです。

今回は低テンションのままActiviti BPM Platformの事始め的なお話をしようかと思います。


Activitiとは


Activitiワークフロー:チュートリアル(パート1)という記事にもあるとおり、Activiti BPM PlatformとはオープンソースのBPMエンジンです。Alfresco社がスポンサーとなっていますが、プロジェクトとしては独立しています。特徴は以下のとおりです。
  • オープンソース(Apache License, Version 2.0)
  • 無償利用可能
  • BPMN2.0ネイティブ対応
  • 軽量(パッケージではなく、バックエンドで組込み的な形で利用されるもの)

例えば、AlfrescoはBPMエンジンとしてActivitiを利用しています。まさに組込みでコアのライブラリを利用しているだけですので、Alfrescoを利用していてActivitiを意識することはまずありません(ユーザは、です。開発者は意識します)。

とはいえ、まず簡単にActivitiを試してみようと思った場合には、スタンドアロンで実行可能な一式のツールが提供されているので、これらを利用してみるとActivitiの機能について理解を深めることができると思います。
  • Activiti Explorer : ActivitiのWebフロントエンド。Activitiの機能を一通り触ることができる。
  • Activiti Modeler : Webベースのプロセス定義管理ツール。プロセス定義の作成・編集・インポート・エクスポート・デプロイなどを行うことができる。現バージョンではActiviti Explorerに統合されている。
  • Eclipse Designer : プロセス定義を作成するためのEclipseのプラグイン(こちらは実際のプロジェクトでも利用可能な開発ツール)。

そこで、本稿ではActivitiのインストール・アクセス方法について説明しようと思います。重要なことなのでもう一度言いますが、Activiti ExplorerはActivitiのBPMエンジンを利用するための必須アプリケーションではなく、あくまでもBPMエンジンを試用してみるためにActivitiが提供している標準的なUIの1つ、ということになります(Activitiの機能を一通り触れるので便利といえば便利なんですけどね)。


Activitiのセットアップに必要なソフトウェアのダウンロードとインストール


Activitiのセットアップには以下のソフトウェアが必要になります。
  • JDK6以降
  • Web Application Server(Tomcat等)
  • Activiti(現在の最新版は5.13)
  • RDBMS(H2以外を利用する場合。MySQL, PostgreSQL, Oracle, DB2など)

JDK6以降

Java SE DownloadsからJDKをダウンロードし、インストールします。筆者はJDK7を利用しています。

Web Application Server

ここではTomcatを使います。Apache Tomcat - Apache Tomcat 7 DownloadsからTomcat7をダウンロードし、適当なディレクトリに展開します。Tomcatを展開したディレクトリを<tomcat_home>と表記します。

Activiti

ここではTomcatを使ここからダウンロードし、適当なディレクトリに展開しておきます。

RDBMS (optional)

デフォルトではH2 Databaseをインメモリモードで利用しますが、その他のデータベースを利用する場合は別途RDBMSをインストールし、Activitiの設定を変更する必要があります(Activiti database setupを参照のこと)。また、H2 Database以外を利用する場合は、対応するJDBCコネクタを入手してクラスパス上にコピーする必要もありますのでお忘れなく。


Activitiのセットアップ


これでActivitiのセットアップの準備ができました。残るはActivitiアプリケーションをTomcatにデプロイするだけです。Activitiモジュールを展開したディレクトリのactiviti-5.13/wars/activiti-explorer.warを<tomcat_home>/webappsにコピーし、Tomcatを起動するだけです。

Tomcatの起動は<tomcat_home>/bin/startup.bat (or startup.sh)をキックするだけです。正常にTomcatが起動したらセットアップは完了です。ちなみに、停止する場合は先ほどのディレクトリのshutdown.bat (or shutdown.sh)をキックします。


動作確認してみよう


セットアップが完了したら、ブラウザでアクセスして確認してみましょう。URLは http://localhost:8080/activiti-explorer/ になります。ユーザはデフォルトでkermit, gonzo, fozzieの3ユーザがデモ用として登録されています(パスワードはユーザ名と同じです)。


ユーザID、パスワードを入力し、以下の画面が表示されたら動作確認完了です。




今回はここまで、実際の使い方などについてはまたの機会にとさせていただきます。
なお、ActivitiのドキュメントはUser Guideに一通りの情報がまとまっています。例えば、Activiti Explorerの説明はこちらに載っていますので、興味がある方は是非Activitiをセットアップし、触ってみてください。
 

明日Hills Breakfastを司会します

$
0
0
明日6月25日、Hills Breakfastを司会します。
スライド20枚、1スライド20秒、というTEDよりダイナミックな形式の毎月行わるプレゼンテーションイベントです。
私は2010年に発表者として出てから、毎月スライドとPCを操作する役をやってますが、今回は初めての司会。是非観に来てください!

明日も非常に面白そうなプレゼンターが出ます:
  • 中島佳織さんはフェアトレード・ラベル・ジャパンの事務局長としての活動を発表して、
  • トライフ代表取締役手島大輔さんは日本の高齢者の毎日の課題について興味深い話をして、
  • ディジティ・ミニミ代表取締役竹中直純さんはウェブ会社の戦略を明らかにします。
  • 最後に、プロバスケチーム“東京エクセレンス”GM辻秀一さんが皆にスポーツのやる気を入れる予定です!
ニコラ・ラウル

I will perform as the host for Hills Breakfast tomorrow (June 25).
Hills Breakfast is a monthly presentations event, based on the PechaKucha format, 20 slides x 20 seconds, which is faster and more lively than TED's 18 minutes.
I started as a presenter in 2010 and since then I usually operate the PC/projection, but tomorrow will be my first time as MC. Looking forward to see you there!

Tomorrow promises to be very entertaining with:
  • Kaori Nakajima talking about her work at the head of Fairtrade Japan.
  • Paris-based Swedish artist Per Hüttner will bring us in the universe of the OuUnPo project.
  • Daisuke Teshima will enlighten us about the daily problems of the Japanese senior citizens.
  • Naosumi Takenaka will detail his strategies as the founder of a web agency.
  • Finally,  Shuichi Tsuji is sure to passionate the crowd with his speech as the manager of the pro basketball team Tokyo Excellence.
Nicolas Raoul

Activiti BPM Platformことはじめ2(Activiti Explorerの使い方とか)

$
0
0
こんにちは。つい先日Pentax Qを衝動買いしてしまったおおたにです。ボーナスで買ったつもりだったのですが、数期前からボーナス月が6月から7月に変わっていたことに後から気付き(つまりまだ出てない)、査定に戦々恐々しております。あ、むしろボーナス貰えたとしてそこからどれくらい小遣いが出るかも重要なのか!とか色々悶々としていますが、買ってしまった以上、元を取るべくじゃんじゃん写真撮っていくしかないですね。ひとまず試し撮りしたものを貼っておきます。

というわけで、今回はActivitiというBPMエンジン(ワークフローエンジン)について、標準で付いてくるツールの使い方について説明しようと思います。なお、インストール方法については「Activiti BPM Platformことはじめ(インストール方法とか)」に書いてありますので参照してください。以下の内容はこの記事に従ってActivitiがインストールされていることを前提としています。また、以下の内容は現時点での最新バージョンである5.13に基づく記事となっています。


Activiti Explorer


まずはActivitiが標準で用意しているGUIであるActiviti Explorerを見てみましょう。ローカルPCでアプリケーションサーバが稼働しているとして、http://localhost:8080/activiti-explorer/にアクセスし、ユーザIDとパスワードを入力します。まずはユーザkermitでログインします(パスワードもkermitです)。

タスク画面

ログインすると以下の画面が表示されます。もしくは画面上部の「Tasks」をクリックすると表示されます。この画面では、ユーザに関わるタスクを確認することができます。

 この画面で確認できるタスクは以下のとおりで、これら一覧画面でタスクをクリックすると、そのタスクの詳細が表示されます。
  • Inbox : 自分がアサインされているタスク
  • My Tasks : 自分がオーナーのタスク
  • Queued : 自分が所属するグループがアサイン候補となっているタスク
  • Involved : 自分が関係するタスク
  • Archived : 完了済みのタスク
少し補足すると、タスクには、担当者がアサインされているもの(Inboxに表示)、担当者は未アサインだが特定のグループがアサイン候補となっているもの(Queuedに表示)、担当者は未アサインだが特定のユーザ(複数可)がアサイン候補となっているもの(Involvedに表示)があります。なお、アサイン候補というのは、指定のグループもしくは複数ユーザに対して、そのうちの誰か1人が担当者としてタスクを処理する、というものです。例えば、Managementグループがアサイン候補になっているタスクは、KermitもしくはGonzoが担当者としてこのタスクを引き取り、処理を行う必要があります。この、タスクを引き取る(自分を担当者にアサインする)処理を「クレーム」と呼びます。

タスク詳細画面では、以下のようなことが行えます。
  • 期限、優先度、概要の確認や変更(クリックするとインライン編集できます)
  • オーナーや担当者の変更
  • クレーム処理
  • サブタスクの追加や確認
  • ファイルの添付
  • フォームへの情報の入力や、承認/却下/完了等のアクションの実行
  • アクティビティストリームの表示やコメントの追加(画面右側のEvents欄)

プロセス画面

画面上部の「Processes」をクリックするとプロセス画面が表示されます。

この画面では以下のことが行えます。
  •  My instances : 自分が開始したプロセスの確認とプロセスのキャンセル
  • Deployed process definitions : 利用可能なプロセス定義の確認とプロセスの開始、編集可能なプロセス定義への変換
  • Model workspace : 編集可能なプロセス定義の確認と、プロセス定義の新規作成・インポート・編集など
Model workspaceでは、Activiti Modelerというツール(Activiti 5.11でActiviti Explorerに統合されました)を使い、ブラウザ上でプロセス定義の作成や編集を行うことができます。Activiti Modelerについては別の記事で取り上げる予定です。

レポート画面

画面上部の「Reports」をクリックするとレポート画面が表示されます。

この画面では、レポート定義とそれに従ったレポートの確認、レポート条件の保存とその呼び出しが行えます。レポート定義についてはまた別の機会に説明したいと思います。

管理画面

画面上部の「Manage」をクリックすると管理画面が表示されます。

 この画面は管理者向けの画面で、以下のことが行えます。
  • Database : データベースのテーブルに格納されたデータの閲覧
  • Deployments :プロセス定義のデプロイ、アンデプロイ、確認
  • Active Processes : 現在利用可能なプロセス定義の確認、利用停止
  • Suspended Processes : 利用が一時的に停止されたプロセス定義の確認、利用停止の解除
  • Jobs : 現在実行中のジョブ
  • Users : ユーザ設定
  • Groups : グループ設定
  • Administration : DB設定の確認や現在回っているプロセス・既に完了したプロセスの確認


基本的には、プロセス画面のDeployed process definitionsからプロセスを開始し、各ユーザがタスク画面でタスクを処理するという流れになります。例えば、デフォルトで登録されているVacation requestのワークフローを実行してみましょう。

1. 「Processes」→「Deployed process definitions」をクリックし、「Vacation request」を選択して「Start process」をクリックする

2. プロセス開始フォームに情報を入力し、「Start process」をクリックする

3. Vacation requestプロセスはManagementグループがアサイン候補となっているので、クレーム処理を行います。Managementグループのユーザ(kermitもしくはgonzo)でログインし、「Tasks」→「Queued」→「Management」をクリックし、Handle vacation requestタスクを選択し、「Claim」をクリックします。

4. 自分が担当者になるので、「Inbox」内のHandle vacation requestタスクを選択し、ApproveもしくはRejectを設定して「Complete task」をクリックします。

以上でVacation requestプロセスの処理が完了です。完了したプロセスは管理画面の「Administration」→「Completed process instances」で確認することができます。


今回はActiviti Explorerの簡単な紹介をしてみましたが、是非実際に触ってActiviti BPM Platformを試してみてもらえればと思います。 次回はActiviti Modeler周りについて紹介できればと思います。

Activiti BPM Platformことはじめ3(Activiti Modelerの使い方)

$
0
0
こんにちは。おおたにです。

最近手足口病が流行っていますが、うちの娘も例にもれず手足口病に罹患しました。去年罹患した際はほとんど発疹が出なかったのですが、今年はひどく、お腹/背中を除くほぼ全体に発疹が出ました(手足口以外にも発疹が出るのが今年の特徴らしいです)。大人も感染・発症する可能性があるらしいので、みなさんも気を付けてください。

さて、今回はActiviti Modelerについて紹介しようと思います。Activiti Modelerはブラウザベースのプロセス定義ツールで、Activiti 5.11でActivitiに統合されました。以前はSignavioが提供するActiviti Modelerが利用可能でしたが、現在はKIS BPMのオープンソース版が統合されています。
なお、Activitiのインストール方法、Activiti Explorerの使い方については「Activiti BPM Platformことはじめ(インストール方法とか)」「Activiti BPM Platformことはじめ2(Activiti Explorerの使い方とか)」あたりを参考にしてみてください。


まずはじめに


予め話しておくと、個人的には実際のプロジェクトでActiviti Modelerを使ったことはありません。プロセス定義ツールとしては、Activiti ModelerのほかにActiviti Eclipse BPMN 2.0 Designer(Eclipseのプラグイン)が使えますが、いつも後者を利用しています。理由としては、以下のとおりです。
  • 大体のプロジェクトではJavaでの実装と絡むことが多いので、Eclipseであれば1ツール(1IDEか)で開発が行える
  • 両ツールのcapabilityを比較したことが無い(ただの怠慢です)。が、Designerの方が以前から開発・メンテナンスされていることから考えると、現時点ではこちらの方が有用だろうと考えている(ただの推測ですすいません…)
  • 実際にエンドユーザに利用してもらうものと捉えると有用に思えるが、BPMN2.0でプロセス定義->即利用、という流れが実際の現場では考えにくい(ワークフロー定義の形については定義しうるが、それに付随するビジネスロジックのキック等を考えるとそこまで含めての実装は現場レベルでは難しい)
ただ、てっとり早くプロセス定義を行ってActivitiを試してみたい、というような用途であれば、わざわざEclipseの開発環境を整える必要もないため、Activiti Modelerを利用する意義があるのではないかと思います。


早速使ってみよう


では、早速使ってみましょう。Activiti Explorer上で新しいプロセスを定義し、デプロイして実際に使ってみるところまでを見ていきます。

1. Activiti Explorerにユーザkermitでアクセスし、プロセス画面に移動して「Model workspace」をクリックします。編集可能なモデルが表示されるので、ここで「New model」をクリックします。

2. モデル名を入力し、編集方法として「Activiti Modeler」を選択して、「Create」をクリックします。(「Table-driven definition」を選択すると、Activiti Kickstartというツールを利用した簡易プロセス定義を行えます。5.12でActiviti Explorerに統合されました)。

3. Activiti Modelerが起動するので、画面右側の展開アイコンをクリックし、プロセス名、プロセスIDを入力します(プロセスIDについてはスペースを含めないようにしてください。デプロイに失敗します)。

4. 続いて、画面左側のツールボックスから必要な部品をD&Dして接続します。今回は簡単な1ステップ承認ワークフローを作ってみましょう。Start event、User task、End eventを以下の図のように接続し、User taskのプロパティを以下のように設定します(やはりIdにはスペースが入らないようにしてください)。Assignmentsは、Value欄の右端の「...」をクリックし、ダイアログ上で設定します。今回はmanagementグループがアサイン候補となるように設定しています。

5. 設定が終わったら、画面左上の保存アイコンをクリックします。確認ダイアログが表示されますが、そのまま保存を行います。

6. 保存に成功すると、Model workspaceに先ほど作成したモデルが追加されます。このモデルをデプロイするには、画面右上のModel actionから「Deploy」を選択します。

7. デプロイに成功すると、以下のように管理画面のDeploymentsに遷移し、作成したモデルがデプロイされていることが確認できます(デプロイに失敗すると、その旨が赤枠のポップアップで表示されます)。

8. 続いて、実際にこのプロセス定義を使って動作を確認してみましょう。以下の画面からプロセス定義名(ここでは「test procecss1」)をクリックします。


9. プロセス定義一覧に遷移するので、このプロセス定義を選択して「Start process」をクリックします。正しく開始できると、その旨がポップアップ表示されます(エラーの場合は赤枠のポップアップが表示されます)

10. タスク画面のQueued→Managementにタスクが1件追加されていることを確認します。これをClaimし、Complete taskすると正常にプロセスが完了すると思います。完了したら管理画面のAdministration→Completed process instancesを確認してみてください。

以上がActiviti Modelerを使ったプロセス定義・テストのとても基本的な流れです。
興味のある方は是非このActiviti Modelerを試してみてくださいね!

CmisSync 1.0 released: Dropbox-like sync client, compatible with most ECM file servers

$
0
0
We just released CmisSync 1.0!

CmisSync is a desktop application that synchronizes documents with any company's file server, with the same ease as cloud storage clients. CmisSync is the world's first sync app which is compatible with most ECM (Enterprise Content Management) servers.

ECM servers have very powerful features: versioning, workflows, collaboration, policies, rules, etc.
But they are often seen as inconvenient by users, notably due to every edit requiring the document to be downloaded and then re-uploaded. Many employees, especially when working remotely, circumvent their company's ECM by using individual cloud services like Dropbox/SugarSync/Box, which is a security risk and leads to document duplication.




The CMIS standard, introduced in 2010 by the OASIS consortium and implemented by all major ECM vendors, allows CmisSync to revolutionize this field by syncing directly with the company's existing server.

The advantage for companies is that content is produced on the ECM server, where document reuse is facilitated. Furthermore, documents are not duplicated and stay under control of company policies. Employees can be more productive and have the assurance that they are working with the latest versions of documents.

Aegif has started providing consulting and services for CmisSync. CmisSync is developed as Open Source, and is free to use. Aegif also sells a proprietary extension facilitating large-scale deployment and providing Enterprise features.

Download: http://CmisSync.com

[Liferay] IFrameポーットの紹介 その1

$
0
0
aegifの名倉です。
本日はIFrameポートレットについてご紹介したいと思います。IFrameポートレットというものは、Liferayのページの中に別のWebサイトのページを埋め込むときに利用されるポートレットです。Liferayはポータル製品ですので、いろいろなシステムを集約して情報を表示するビューを提供するというのは良くある要件のうちの一つです。集約するシステム向けのカスタムのポートレットを作成して、ビューを提供することもできますが、そのシステムがWebユーザインタフェースを持っている場合は、IFrameポートレットを使ってお手軽に連携することができます。

外部のWebページの取り込み

では早速IFrameポートレットを使ってみましょう。
IFrameポートレットはポートレットの追加メニューで「サンプル」カテゴリ内にあります。緑色のアイコンが表示されていますのでページに複数配置することも可能です。IFrameポートレットをページ上に配置するとポートレット内に「ユーザが参照できるようにポートレットを設定してください。」というメッセージのリンクが表示されます。

このリンクをクリックするか、または右側のレンチアイコンをクリックし、設定メニューをクリックすると次のような設定画面が表示されます。
取り込み先のURLのテキストボックスに取り込みたいWebサイトのページのURLを入力します。ためしにaegif.jpと入力してみましょう。そうするとIFrameポートレットのフレーム内にaegif.jpのWebページが埋め込まれる形で表示されます。

もともとaegif.jpのWebページはブラウザ全体で表示されるようにできているので、IFrameポートレット内には全部収まりきらないため、上下左右ににスクロールバーが表示されています。
これで、簡単に他のWebサイトのページを取り込むことができました。

Liferayポータル内のページの埋め込み

ページの埋め込み

「コンテキストパスからの相対パス」のチェックボックスをチェックすることでLiferayポータル内部のサイトのページにアクセスすることができるようになります。
取り込みたいページのURLを仮に
http://localhost:8080/web/test/home
だとした場合は、テキストボックスには
/web/test/home
と入力します。Liferay内の別のサイトであっても埋め込むことが可能です。
さらにいえば、埋め込められるものは別にページだけに限りません。特定のページに配置されているポートレットやリポジトリに格納されている画像ファイルなども埋め込むことができます。

ポートレットの埋め込み

ポートレットを埋め込む場合は、ポートレットの配置されているページ(今回は/web/guest/homeとします)にアクセスします。埋め込みたいポートレットの設定メニューをクリックし、共有タブの「任意のWebサイト」タブを開くと
<script src="http://localhost:8080/html/js/liferay/widget.js" type="text/javascript"></script>
<script type="text/javascript">
Liferay.Widget({ url: 'http://localhost:8080/widget/web/guest/test/-/blogs'});
</script>のような記述が表示されます。 ここで記載されているURLの/widget/web/guest/test/-/blogsの部分をIFrameポートレットのテキストボックスに記入します。そうするとIFrameポートレットではこのように表示されます。

画像ファイルの埋め込み

画像ファイルを直接埋め込む場合は、コントロールパネルから埋め込みたい画像ファイルがおかれているサイトを選択し「文書および媒体」メニューを選択します。


画像ファイルをクリックすると次のような画面の詳細情報画面が表示されます。

URLのリンクをクリックするとテキストボックスが表示され、画像ファイルのURLが確認できます。
このリンクのhttp://localhost:8080より後ろをコピーしておいて、IFrameポートレットの取り込み先URLに貼付けます。IFrameポートレットではこのように表示されます。
IFrameポートレットの中に表示されるLiferay内部のページやコンテンツに対するアクセス権限に関しては、それぞれで設定されているアクセス権限が適用されるので、別のサイトのページやコンテンツを無制限に公開するようなことはありません。アクセス権がない場合は次のように表示されます。

以上のような感じで、IFrameポートレットを利用して外部のWebページやLiferayの中のサイトページやポートレット、コンテンツなどを表示することができました。

次回のLiferayの記事では今回取り上げられなかった認証の機能についてお話したいと思います。







Alfresco勉強会#17 振り返り

$
0
0
こんにちは。てらしたです。  

8/1(木)に第17回Alfresco勉強会が開催されました。参加者が少しずつ増えてきているので、この調子で増えていって弊社メンバー以外の方から発表していただけるようになるといいなぁと思っています。

今回のテーマは以下の2つです。それぞれ簡単にご紹介します。

1. LDAP連携 入門(寺下)

資料はこちら

AlfrescoでLDAP連携を行う際の最も簡単な設定例を紹介しました。LDAP連携の目的として認証と同期の2つがあるのですが、認証のみ、同期のみ、認証+同期の3パターンについて設定例を示し、簡単なデモを行いました。

最後におまけとして、ファイルアップロードによるユーザ登録の方法についても紹介しました。この方法についてはこちらのエントリに詳しく載っています。アップロードボタンの名前が「ユーザーCSVファイルのアップロード」なのでCSVファイルしか受け付けないかと思いきや、実はExcelファイル(xlsxまたはxls)にも対応しています。CSVファイルでは日本語が含まれる場合に文字コードをUTF-8にしないと文字化けしてしまう、といったことに注意しなければならないので、ユーザの属性情報として登録する内容に日本語が含まれている場合はExcelファイルを使った方が無難だと思われます。

2. Alfrescoのカスタマイズの全体像(戸谷氏)

資料はこちら

タイトルにもあるとおり、Alfrescoをカスタマイズして実現したい機能がある場合に、どこに手を入れればいいのかという勘所を掴むための全体像についての説明でした。こういうことやりたいんだよなぁという具体的な要望がある方は、一度目を通しておくとどこを触ればよさそうかイメージが掴みやすいと思います。過去の勉強会発表資料へのリンクもまとめられているので、個別のカスタマイズ方法についてより詳しく知りたい場合にも役に立ちそうです。

次回の第18回勉強会は2013年9月25日(水)19時〜を予定しています。
内容の1つとして、もともとは今回の勉強会で発表する予定だった「Alfrescoのバックアップとリストア」が予定されています。発表はもう1枠残っているため、内容のご希望があればイベントのコメント欄に書いていただければと思います。それでは、ご参加をお待ちしております。

AlfrescoをActive Directoryと連携させてみた

$
0
0
こんにちは。おおたにです。

今回はAlfrescoをActive Directory(以下AD)と連携させてみようと思います。一言で連携と言っても、単純な認証の委譲なのか、SSOなのかとかありますが、今回はAlfrescoログイン時の認証をADに行ってもらう&ユーザ・グループ情報を同期するという一番簡単なパターンについて見ていきます。


初めに


この記事の前提条件は以下の通りです。
  • Alfrescoがインストールされている(本記事では現時点での最新版であるAlfresco 4.2.cを使っています)
  • ADがセットアップされている(Windows Server 2008 R2を使ってます)
Alfrescoがインストールされていない場合は「Alfresco4.0をインストールしてみよう(インストーラ編)」や「Alfresco4.0をインストールしてみよう(手動インストール編)」を参考にインストールしてみてください。ADについては…頑張ってください!

なお、ADにはLDAPアクセスする必要があるため、ファイアウォールでは標準的なLDAP用ポートである389番を通すように設定しておいてください。


AlfrescoにAD連携用の設定を行う


基本は以前の記事「AlfrescoのLDAP連携」とほぼ同じで、設定項目がちょろっと違う程度だと思ってください。

まずは、ユーザやグループのBaseDNを調べるべく、適当なLDAPクライアントを使ってADにアクセスしてみます。筆者はよくApache Directory Studio(のEclipseプラグイン)を使っています。インストール方法等はこちらにまとめられています。インストールしたら、早速ADにアクセスしてみます。以下のスナップショットのように新規接続を作成してアクセスし、同期対象のユーザ/グループのBaseDNを調べます。




すると、ユーザのBaseDNはOU=User Accounts,DC=aegif,DC=localで、グループのBaseDNはOU=User Groups,DC=aegif,DC=localであることが分かります。ちなみにこの例ではADサーバのIPが192.168.0.70、ドメイン名がaegif.local、ADアクセス用のユーザアカウントはAdministratorとなっています(実運用上は、ADの情報を取得する権限を委譲した個別のユーザアカウントを用意した方がよいかと思います)。

以上で設定に必要な情報がそろったので、Alfrescoにこれらの設定を反映させます。いじるファイルは<tomcat_dir>/shared/classes/alfresco-global.propertiesです。このファイルが無い場合は、alfresco-global.properties.sampleというファイルがあるはずなのでこれをリネームして利用します。

# How to map the user id entered by the user to taht passed through to LDAP
# In Active Directory, this can either be the user principal name (UPN) or DN.
# UPNs are in the form <samaccountname>@domain and are held in the userPrincipalName attribute of a user
ldap.authentication.userNameFormat=%s@aegif.local

# The URL to connect to the LDAP server
ldap.authentication.java.naming.provider.url=ldap://192.168.0.70:389

# The default principal to bind with (only used for LDAP sync). This should be a UPN or DN
ldap.synchronization.java.naming.security.principal=Administrator@aegif.local

# The password for the default principal (only used for LDAP sync)
ldap.synchronization.java.naming.security.credentials=p@ssw0rd

# The group search base restricts the LDAP group query to a sub section of tree on the LDAP server.
ldap.synchronization.groupSearchBase=ou\=User Groups,dc\=aegif,dc\=local

# The user search base restricts the LDAP user query to a sub section of tree on the LDAP server.
ldap.synchronization.userSearchBase=ou\=User Accounts,dc\=aegif,dc\=local


# authentication chain
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap-ad1:ldap-ad

以上で設定完了です。"ldap"から始まるプロパティがAD連携に関する設定で、"authentication.chain"は、Alfrescoログイン時の認証システムとして何を利用するかを指定するものです。複数指定し、認証処理をチェイニングすることが可能で、この例では通常のAlfrescoの認証とAD認証の両方を利用できるように設定されます。
"ldap-ad1:ldap-ad"はある種のおまじないで、Alfrescoの認証システム等で使われるSubsystemという仕組みにおけるAD連携モジュールのIDだと思ってください(このおまじないによって呼び出されるbeanの定義ファイルは <tomcat_dir>/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap-ad/ldap-ad-authentication-context.xmlですので、興味があったら見てみてください)。


できたかな?


あとはAlfrescoを起動し、実際に動作確認してみるだけです。Alfresco起動時にユーザ/グループ情報の同期処理が走るので、起動後にログをチェックしてみてエラーが出力されていないかを確認してみてください。 また、実際にADのユーザでログインしてみて、正常にログインできることも確認してくださいね(当たり前!)。他方、adminユーザでログインし、ユーザ/グループ情報が同期されていることも確認しましょう。

今回はここまでになります。この先にはSSO等がひかえていると思いますが、それはそれで大きなトピックですのでまたの機会にしたいと思います。

Alfrescoのユーザ検索の文字数制限

$
0
0
こんにちは。おおたにです。

今回はAlfrescoのユーザ検索についてお話ししたいと思います。Alfrescoを使っている人であればご存知の方も多いと思いますが、ユーザ検索には最低文字数が設定されています。基本的には1文字なのですが、権限管理画面でのユーザ/グループ検索だけ何故か3文字になっています。ユーザIDだけでなく姓名でも検索できるのですが、残念ながら「鈴木」さんとか「林」さんとかでは検索できません。


せっかくなので、ここも1文字以上で検索できるようにしてみましょう。変更箇所は以下のとおりです。

webapps/share/components/manage-permissions/manage-permissions.js
// Set the correct options for our use
this.modules.authorityFinder.setOptions(
{
dataWebScript: Alfresco.constants.URL_SERVICECONTEXT + "components/people-finder/authority-query",
viewMode: Alfresco.AuthorityFinder.VIEW_MODE_COMPACT,
singleSelectMode: true,
// minSearchTermLength: 3
minSearchTermLength: 1
});

さらに、上記変更ファイルからwebapps/share/components/manage-permissions/manage-permissions-min.jsを再作成する必要があります。この-min.jsは元のJavaScriptファイルを圧縮し、容量を減らしたものなので、YUI Compressor等を使って圧縮してください。

上記2ファイルの修正が終わったら、Alfrescoサーバを再起動して確認してみましょう。以下のように3文字未満でも検索ができるようになっていればOKです。

 

What is the best open source Java decompiler?

$
0
0
A Java decompiler turns a .class file back into a .java file. While decompiled code is not perfect (no comments, sometimes obfuscated names), it can be useful during hacking competitions, or to liberate your data locked by proprietary software, or to satisfy curiosity.

There used to be a time where everyone's decompiler of choice was jad.
But jad is dead, and it was not Open Source anyway, so there must be something better, right?

Current winner

Jdec is the best Open Source decompiler I have found so far.
It is not perfect though: There is no community, and there are bugs, none of which has got fixed since 2007. Also, its website looks very unprofessional.

Challengers

  • JReversePro shows signs of activity but has had no release since 2002
  • JODE has had no release since 2004
  • dcompiler has had no release since 2002

Need work

  • Dava seems to be a thesis project rather than a programming tool.
  • javap only shows assembly-level code
  • Soot is not really a decompiler

Out of Competition

Those ones might be usable but they are not Open Source:
  • Fernflower is not maintained and not open source. Its author Stiver told me "Unfortunately I can't release it under GPL right now, because there are still some legal questions to be solved. However if you are representing a well established company or an R&D institute, an exception would be possible."
  • Java Decompiler (JD) is not open source
  • DJ Java Decompiler is not open source
  • Cavaj is not open source
Please let us know about any other Open Source decompiler your know!
Nicolas Raoul

    How to get the HTTPS headers?

    $
    0
    0
    Long-time sniffers remember tracking HTTP headers down the wire using Ethereal (now Wireshark), but this has become impossible in environments where everything is encrypted (HTTPS).

    In such environments, tracking headers means monitoring either directly within the server process (difficult in clouds), or within the client process (typically a browser).

    Recently I had to reverse-engineer the convoluted authentication to the CMIS endpoint of a Sharepoint server. Below is my tale, and the tools I tried (spoiler: only the last one did the job).

    Contestant 1: Chrome Developer Tools

    In Chrome, I start Incognito mode (CTRL-SHIFT-N) to make sure no saved passwords/cookies interfere, fire up the Developer Tools (CTRL-SHIFT-I), select "Network" to see the requests, and launch the request.

    As seen in the screenshot below, Chrome shows the conversation between client and server. Something sounds fishy: Only 2 requests, and the last one is marked as "canceled" even though download succeded... let's try another tool!



    Contestant 2: Firefox Web Console

    In Firefox, I start Private Browsing mode (CTRL-SHIFT-P), fire up the Web Console (CTRL-SHIFT-K), unselect everything but "Net", and launch the request.

    Firefox wins over Chrome by showing the right number of requests (four):


    Now to the job: Getting the HTTPS headers!
    I click on a request, and something awful happens: a totally unusable window appears, displaying what I need (request headers and response headers), but preventing me from copy-pasting it.

    Mouse selection goes crazy, and copying everything results in an unusable long string containing everything aggregated without spaces [1]. Not to mention the inexact timestamp [2], the content that does not scale with the window [3], and the weird titles font style [4].


    Fine if you just want to see the headers, but real hackers want to script-parse and diff the headers, right? Next!


    Winner: Httpfox

    In Firefox, after having installed the Httpfox extension, I start Private Browsing, fire up Httpfox (SHIFT-F2), press "Start", and launch the request.
    The lower part shows the headers, and copying them is accessible via the context menu... perfect!



    Conclusion: Httpfox is the easiest way to get HTTPS headers.
    If you know any other convenient tool, please let us know in the comments!
    Nicolas Raoul

    Alfrescoでユーザごとの使用容量を制限したい! -クオータの自動設定とか-

    $
    0
    0
    こんにちは。

     4月から娘が転園する関係で慣らし保育だったりとか自身が風邪引いたりとか(会社でも流行ってます)でてんやわんやのおおたにです。
     弊社は幸い業務内容によっては自宅やコワーキングスペースでの作業が認められているため、それらを駆使しつつ何とか仕事をこなしています。まあ慣らし保育だと通常よりも早い時間に迎えに行かなくてはならないのでそこは有休をうまく使ったりして乗り切っています。

     さて、今回はAlfrescoのクオータ設定についてのお話しです。Alfrescoではユーザごとにクオータを設定することができます(現時点での最新版Alfresco 4.2.cにて確認)。ただし、デフォルトのクオータサイズを指定してユーザ作成時に自動設定するようなことはできず、ユーザごとに手動で設定する必要があります(もしくは一括でクオータを設定するようなスクリプトを流すなど)。



     そこで今回は、クオータを自動設定するための方法を紹介したいと思います。前提条件としては、Alfrescoの開発環境が整っていることです。詳しくはここあたりを参照してみてください。

     開発内容自体は大したことは無くて、以下のクラス1個と定義ファイル1個を作るだけです。UserQuotaPolicyクラスはビルド後jarファイル等にしてクラスパス(<alf_dir>/tomcat/webapps/alfresco/WEB-INF/lib/)にコピーします。

    jp.aegif.sample.UserQuotaPolicy
    public class UserQuotaPolicy implements NodeServicePolicies.OnCreateNodePolicy
    {
    private PolicyComponent policyComponent;
    private NodeService nodeService;
    private ContentUsageService contentUsageService;

    public void setPolicyComponent(PolicyComponent policyComponent) {
    this.policyComponent = policyComponent;
    }
    public void setNodeService(NodeService nodeService) {
    this.nodeService = nodeService;
    }
    public void setContentUsageService(ContentUsageService contentUsageService) {
    this.contentUsageService = contentUsageService;
    }

    public void init() {
    policyComponent.bindClassBehaviour(
    NodeServicePolicies.OnCreateNodePolicy.QNAME, ContentModel.TYPE_PERSON,
    new JavaBehaviour(this, "onCreateNode", Behaviour.NotificationFrequency.TRANSACTION_COMMIT));
    }

    @Override
    public void onCreateNode(ChildAssociationRef childAssociationRef) {
    String userName = (String)nodeService.getProperty(childAssociationRef.getChildRef(), ContentModel.PROP_USERNAME);
    long currentUserQuota = contentUsageService.getUserQuota(userName);
    if (currentUserQuota < 0) {
    contentUsageService.setUserQuota(userName, 524288000L);
    }
    }
    }

    <alf_dir>/tomcat/shared/classes/alfresco/extension/user-quota-context.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
    <beans>
    <bean id="defaultUserQuota" class="jp.aegif.sample.UserQuotaPolicy" init-method="init">
    <property name="policyComponent">
    <ref bean="policyComponent" />
    </property>
    <property name="nodeService">
    <ref bean="nodeService" />
    </property>
    <property name="contentUsageService">
    <ref bean="contentUsageImpl" />
    </property>
    </bean>
    </beans>

     UserQuotaPolicyクラスではPolicyという仕組を利用しており、ノード作成時にそのノードタイプがcm:personノード(ユーザの情報を保持するノードタイプ)であった場合に、クオータを設定する処理を自動実行します。Policyは今回利用したOnCreateNodePolicy以外にもたくさん定義されているので、何らかの処理の際に独自の処理を挿入するようなカスタマイズを行う時にはよくお世話になります。とても重宝する拡張ポイントですので、是非覚えておいてください。

     あとは、定義ファイルを指定のディレクトリにコピーし、Alfrescoを再起動するだけです。早速ユーザを追加し、クオータが自動設定されていることを確認してみてください。今回の例ではクオータを決め打ちで500MBとしていますが、この値を定義ファイルから指定できるようにするとより便利になるので、そちらも是非チャレンジしてみてください。

    CMIS: What are Secondary object types?

    $
    0
    0
    The main advantage of ECM servers over file servers is the ability to have metadata about the documents, and the ability to define what metadata should exist, on what kind of document.

    For instance, an ECM administrator might decide that pictures should have a height and a width metadata, while bills should have a price metadata. In CMIS parlance, pictures and bills are called "primary types".

    Most ECM servers also have a "secondary type" concept. Secondary types are more transverse, and can be applied to documents of any primary type. For instance, "Confidentiality" can be applied to images as well as bills. A document can only have one primary type, but can have several secondary types.
    A few examples: Versionability, effectivity, geographic details, audio details, ...

    Forgotten in CMIS 1.0, secondary types are now part of the CMIS 1.1 standard, which should be official soon.

    Example with Alfresco

    In Alfresco, a secondary type is called an "aspect". You can easily add aspects to any document. There are predefined aspects, but you can also define custom aspects.

    For instance, let's say we manage field observation reports, and each observation report has a latitude and longitude. So, let's add the predefined "Geographic" secondary type to a document. In the document's details page, click on "Manage Aspects":


     Then add the "Geographic" aspect:




    The latitude and longitude are now part of the document's metadata properties:


    Looks nice in the Alfresco client, but how is it via CMIS?

    The CMIS 1.1 standard is not official yet, so unfortunately in Alfresco 4.2.0, secondary type properties can not yet be seen in the CMIS properties:


    Instead, you have to get them via the CMIS extensions, which is a mechanism for vendor-specific tricks:


    Actually, there is an open source Java library that makes it easy to retrieve them from there. But I would suggest waiting for CMIS 1.1, you will then be able to use secondary type properties easily, in a way that will work on all ECM servers.

    Nicolas Raoul

    Alfresco4.2をインストールしてみよう(手動インストール編)

    $
    0
    0
    こんにちは。大谷です。

    以前、Alfresco4.0をインストールしてみよう(手動インストール編)という記事を書いたのですが、現在の最新版が4.2.cで、必要なJDKやTomcatの要件も変わってきているので、改めてインストールの方法を紹介しようと思います。相変わらずですが、OSはWindowsを想定しており、構成はTomcat/MySQLとしています。なお、インストーラを利用したインストールは以前と変わっていませんので、Alfresco4.0をインストールしてみよう(インストーラ編)を参照してください。


    JDKをインストールする


    1. Alfresco4.2ではJDK7が必要になります。こちらのサイトからJDK7をダウンロードします。
    2. ダウンロードしたファイルを実行し、JDKをインストールします。


    Tomcatを準備する


    1. Alfresco用のディレクトリを作成します。ここでは、Cドライブ直下にalfresco42cというディレクトリを作成し、以下ではALF_HOMEと表記します(ALF_HOME = c:/alfresco42c)。
    2. cd c:/
      mkdir alfresco42c
    3. Apache TomcatのサイトからTomcatをダウンロードします。本記事では、Alfresco 4.2.cのインストーラに同梱されているTomcatと同じバージョンである7.0.30を利用します。
    4. ダウンロードしたファイルをALF_HOMEに展開します。展開するとALF_HOME以下にapache-tomcat-<バージョン番号>という名前のディレクトリが作成されますので、このディレクトリをTOMCAT_HOMEと表記します(TOMCAT_HOME = c:/alfresco42c/apache-tomcat-7.0.30)。


    MySQLを準備する


    1. MySQL Developer ZoneからMySQL Community Server 5.5をダウンロードし、インストールします。また、後ほど利用するMySQL Connector/J 5.1(JDBCドライバ)をここからダウンロードします。


    AlfrescoをTomcatにデプロイする


    1. Alfresco Community Editionのダウンロードサイトにアクセスし、"Custom Installs & Optional Modules"のリンクからalfresco-community-4.2.c.zipをダウンロードします。
    2. ダウンロードしたファイルを適当なディレクトリに展開します。このうち、bin, licenses, web-serverディレクトリの中身をAlfrescoのディレクトリにコピーします。
    • bin/* -> <ALF_HOME>/bin
    • licenses/* -> <ALF_HOME>/licenses
    • web-server/* -> <TOMCAT_HOME>
    ALF_HOME、TOMCAT_HOME以下は次のようになります。
     c:\alfresco42c のディレクトリ

    [.] [..] [apache-tomcat-7.0.30] [bin] [licenses]
     c:\alfresco42c\apache-tomcat-7.0.30 のディレクトリ

    [.] [..] [bin] [conf] [endorsed] [lib] LICENSE
    [logs] NOTICE RELEASE-NOTES RUNNING.txt [shared] [temp] [webapps]
    [work]
  • JDBCドライバをTomcatのクラスパスに配置します。先ほどダウンロードしたMySQL Connector/Jを展開し、mysql-connector-java-5.1.xx-bin.jarを<TOMCAT_HOME>/libにコピーします。

  • Tomcatの設定を変更します。まず、<TOMCAT_HOME>/conf/catalina.propertiesをテキストエディタで開き、shared.loaderプロパティを以下のように変更します。
  • shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
  • <TOMCAT_HOME>/conf/server.xmlをテキストエディタで開き、8080番ポートの設定を以下のように変更します。
  • <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
    connectionTimeout="20000"
    redirectPort="8443" />
  • JVMのヒープサイズを設定します。<TOMCAT_HOME>/bin/catalina.batに以下の行を追加します。JRE_HOMEや最大/最小ヒープサイズ等はPCの設定・スペックに応じて変更してください。
  • set JRE_HOME=C:\Program Files\Java\jdk1.7.0_0xx\jre
    set JAVA_OPTS=-Xms1024m -Xmx2048m -Xss1024k -XX:MaxPermSize=256m -XX:NewSize=256m -server -Dcom.sun.management.jmxremote


    データベースを設定する


    Alfrescoはコンテンツのメタデータをデータベースで管理し、コンテンツのファイル実体とインデックス情報をファイルシステムで管理します。以下ではそれぞれについての設定を行います。
    1. MySQLにログインします。
    2. mysql -u root -p
    3. 以下のコマンドでMySQLにAlfresco用のデータベースを作成します。この例では、データベース名をalfrescoとし、ユーザ名/パスワードもalfresco/alfrescoとなります。
    4. create database alfresco default character set utf8 collate utf8_bin;
      grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
    5. Alfrescoが上記データベースを使用するように設定ファイルを変更します。<TOMCAT_HOME>/shared/classes/alfresco-global.properties.sampleをalfresco-global.propertiesにリネームし、テキストエディタで開いて以下のように変更します(コメントアウトされている場合はそのコメントアウトを外し、環境に合うように設定を変更してください)。
    6. #
      # Sample database connection properties
      #
      db.username=alfresco
      db.password=alfresco

      #
      # MySQL connection
      #
      db.driver=org.gjt.mm.mysql.Driver
      db.url=jdbc:mysql://localhost/alfresco?useUnicode=yes&characterEncoding=UTF-8

    7. 引き続きalfresco-global.propertiesを編集し、dir.rootプロパティを設定します。dir.rootはコンテンツ実体やインデックス情報を格納するディレクトリを指定するプロパティですが、<ALF_HOME>/alf_dataあたりを設定しておくと無難です。
    8. dir.root=c:/alfresco42c/alf_data


    その他の設定を行う


    最後に、その他のツールとの連携設定を行います。ここではOpenOffice/LibreOffice、ImageMagick、SWFTools(pdf2swf)について説明します。この3つのツールの用途は以下のとおりですので、必要に応じてインストール、設定を行ってください。
    • OpenOffice/LibreOffice : Alfrescoでファイルフォーマット変換を行う際に使います。PDF変換機能などを利用する場合に設定する必要があります。
    • ImageMagick : コンテンツのサムネイルやプレビューを生成する際に使います。
    • SWFTools : コンテンツのプレビューを生成する際に使います。
    1. それぞれのサイト(OpenOffice.orgもしくはLibreOfficeImageMagickSWFTools)からツールをダウンロードし、インストールします。次に、alfresco-global.propertiesをテキストエディタで開き、以下のプロパティを設定します。
    • ooo.exeはOpenOffice実行ファイルのパスを指定します。
    • img.rootはImageMagickのインストール先、img.dynはライブラリディレクトリ、img.exeは実行ファイルパスを指定します。Linuxの場合はimg.rootを設定するだけで動くかもしれません。
    • swf.exeはSWFToolsに入っているpdf2swfの実行ファイルパスを指定します。
    ooo.exe=C:/Program Files (x86)/OpenOffice.org 3/program/soffice
    ooo.enabled=true
    img.root=C:/alfresco/ImageMagick-6.7.3-7
    img.dyn=${img.root}
    img.exe=${img.root}/convert.exe
    swf.exe=C:/alfresco/SWFTools/pdf2swf.exe
    なお、筆者手元の環境は、OpenOffice 3.3.0、ImageMagick 6.7.3-7-Q16、SWFTools 0.9.0となっています(ちょっと古めのリリースを利用しています)。


    Alfrescoを起動して動作確認する


    以上で設定は終わりです。最後にAlfrescoを起動して動作確認を行います。
    1. <TOMCAT_HOME>/bin/startup.batを実行し、コンソールの出力内容(もしくはalfresco.logやcatalina.out)をチェックします。初回起動時はデータベースにテーブルを追加する作業やwarファイルを展開する作業がありますので時間がかかります。
    2. 起動が正常終了すると、コンソールもしくはログに"Server startup in xxxxxx ms"と表示されます。
    3. 正常に起動したら、ブラウザからAlfrescoにアクセスしてみましょう。http://localhost:8080/shareにアクセスします。管理者ユーザのデフォルトユーザ名/パスワードは、admin/adminになりますのでそれを入力します。
    4. 正常にログインし、ダッシュボード画面が表示されたらめでたく動作確認完了です!
    以上がAlfrescoを手動インストールする手順になります。Alfrescoを実際に使ってみるにあたっては、弊社Webサイトからダウンロードできるユーザガイド等が役立つと思いますので是非参考にしてみてください。

    Alfrescoでcron的なスケジュール処理を行う時の注意点

    $
    0
    0
    こんにちは。

    溶連菌(≠人喰いバクテリア)感染症のおおたにです。喉の痛みと下がらない熱で結構苦しいです。
    さて、今日はAlfrescoでスケジュール処理を定義したり、そのスケジュールを変更したりするときに気を付けるポイントを紹介しようと思います。

    まず、Alfrescoにはcronよろしく指定されたタイミングでジョブを実行する仕組みを持っています。Quartzというオープンソースのジョブスケジューラを使っており、例えば、非同期のインデックス生成であるとか、日次のインデックスバックアップ処理であるとか、LDAP連携時のユーザ情報同期処理などがこの仕組みで動いています。これらの処理の実施タイミングについては、やはりcronと同様の表現で指定します。

    index.backup.cronExpression=0 0 3 * * ?

    上の例は、webapps/alfresco/WEB-INF/classes/alfresco/repository.propertiesで定義されているインデックスバックアップの実行スケジュールです。これを毎月3日0時0分と読んだ方は注意が必要です。多分このように読んだ方は、Linuxのcron式のフォーマットに従って読んだのだと思います。
    Linuxでは「<分> <時> <日> <月> <曜日> <年(オプション)>」ですが、Quartzでは以下のとおり、1桁目が秒となってります。

      <秒> <分> <時> <日> <月> <曜日> <年(オプション)>

    なので、先ほどの例は月次処理ではなく、毎日3時0分に開始する日次処理ということになります。詳しくはScheduled Actions - alfrescowikiを参照してください(すいません英語です)。

    今回はcron式のフォーマットについての注意点を紹介しましたが、機会があれば、スケジュールジョブの実装方法についても紹介したいと思います。

    Liferay Social Office事始め~その1~

    $
    0
    0
    aegifの名倉です。
    今日はLiferay Social Officeについて、書かせていただきます。

    Liferay Social Officeって何?

    Liferay社のWebサイトを見ていると、製品のところにLiferay Portalと並んでLiferay Social Officeがあります。パッと見、別の製品のように見えるので、使ってみるのに敷居が高そうなんですが、何のことはなくて、実体はLiferayの追加プラグイン集のようなものなのです。Liferay社がコラボレーションやソーシャルの機能関連のポートレットをいい感じにひとまとまりにして提供しているといったものです。
    Liferay Social OfficeにもLiferay Portal同様、エンタープライズ版とコミュニティ版が存在していて、コミュニティ版は無料で提供されています。

    Liferay Social Officeのインストール

    では早速、Liferay Social Officeをインストールしてみましょう。
    上記のように追加プラグイン集なのでLiferay Portalが必要です。
    LiferayのWebサイトからコミュニティ版のLiferay PortalとLiferay Social Officeをダウンロードしましょう。
    Liferay Portalは以下のURLからダウンロードできます。
    http://www.liferay.com/downloads/liferay-portal/available-releases
    Liferay Portalのインストールについては、過去の記事を参考にしてください。
    Liferay Social OfficeはLiferay Marketplaceからダウンロードすることになります。Liferay Marketplaceからアプリケーションをダウンロードする際はLiferayアカウントが必要になりますので、予めWebサイトでユーザ登録をしておいてください。
    LiferayのWebサイトでMarketplaceタブの仕事効率化のところにLiferay Social Officeはありますので、リンクをクリックしてください。


    以下のような画面が表示されるので、アイコンの下のFreeをクリックしてください。


    そうすると次のような画面が表示されるので、「自アカウント用にこのアプリケーションを購入」を選択し、「私はエンドユーザ使用許諾契約 と 免責条項を読んで合意しました。」 にチェックを入れて
    Freeのボタンをクリックしてください。

     
    購入に成功したメッセージが画面に表示されるので、「購入済みを見る」ボタンをクリックしてください。


    ここで表示される画面には今までに自分が購入したものの一覧が表示されます。
    リストからSocial Officeを探して「ダウンロード数」ボタンをクリックしてください。


    次のような画面が表示されますので、Liferay Social Office のCEの方の「アプリケーション」ボタンをクリックしてください。拡張子が.lpkg形式のファイルがダウンロードされてきます。


    これで必要なファイルは用意できましたので、Liferay Portalを起動しましょう。
    起動完了後に先ほどダウンロードしてきた.lpkgファイルをLiferay Portalのホームディレクトリにある
    deployフォルダに格納します。自動的にファイルが展開され、順々にwarファイルがホットデプロイされていきます。
    これにてLiferay Social Officeのインストールは完了です。

    Liferay Social Officeの機能

    Liferay Social Officeを触ってみる前に、何が追加されたのかを確認しておきましょう。
    さきほどの.lpkgファイルの中には、
    ・チャット
    ・知人リスト
    ・イベント表示
    ・マイクロブログ
    ・プライベートメッセージ
    ・タスク管理
    ・WYSIWYGエディタ
    ・Social Office全般機能
    の8つのポートレット
    ・Social Officeテーマ
    ・Welcome Social Officeテーマ
    の2つのテーマ
    などが含まれています。
    これらを組み合わせることでLiferay Social Officeはソーシャルやコラボレーションの機能を実現しています。

    Liferay Social Officeを始めよう!

    さて、Liferay Social OfficeをデプロイしたLiferayに管理者権限でログインしましょう。
    さほど何も変わっていないように見えます。確かに、ポートレットの追加画面にはいくつか新しくポートレットが追加されていますし、コントロールパネルにも、Contacts Centerのメニューが追加されています。これらを使って、ページを構築していくのもSocial Officeの利用方法の1つではありますが、
    もっと簡単に使えるようにできます。
    まず、コントロールパネルのロールメニューを開いてください。実はここで新しく「Social Office User」というロールが追加されています。


    このユーザのメンバに管理者を追加してみましょう。
    すると、画面上部のドックバーの右側が
    このようになりました。今まではなかった「ダッシュボード」のメニューと、黒地に白文字の数字が表示されています。
    では、ダッシュボードのメニューをクリックしてみましょう。このようなLiferay Social Office専用の個人ダッシュボード画面が表示されます。


    ここでは予め決められたテンプレートに従って、Liferay Social Officeで追加したポートレットが配置されており、そのままLiferay Social Officeの利用を始めることができます。

    これまででLiferay Social Officeを使うための準備はできました。
    Liferay Social Officeを使い方については、また別の機会に書かせていただきたいと思います。


    Alfrescoの検索対象属性を追加する

    $
    0
    0
     こんにちは。GWは館林のこいのぼりを見に行った大谷です。世界一を標ぼうするだけあってさすがの規模でしたが、若干食傷気味でもあります。

     さて、今回はAlfrescoの検索機能についての話をしようと思います。Alfrescoには簡易検索とアドバンスド検索の2種類があります。前者はキーワードを入力して検索するだけのもの、後者はコンテンツの型や属性値を指定して検索することができるものです。
     ここで一つ気になるのは、簡易検索の場合、コンテンツのどの情報を対象に検索が行われるのかということです。
     以下では、簡易検索の検索対象が何なのか、検索対象を増やす(または減らす)場合はどうすればよいのか、ということについて説明します(説明には、現時点での最新版であるAlfresco 4.2.cを利用します)

    簡易検索とアドバンスド検索


     まずは簡易検索とアドバンスド検索の違いを確認してみましょう。以下に簡易検索とアドバンスド検索の検索画面のスナップショットを並べてみました。
     違いは一目瞭然で、簡易検索の場合はキーワードを入力するだけですが、アドバンスド検索はコンテンツタイプの指定や属性値ごとの検索条件指定ができます。アドバンスド検索には、簡易検索BOXの左にある検索アイコンからアクセスすることができます。




    簡易検索の検索対象


     では、簡易検索の検索対象を調べてみましょう。簡易検索の設定は以下のファイルで行われており、default-query-template内に列挙されている内容が簡易検索の検索対象になります。デフォルトでは名前やタイトル、説明、ファイル全文検索(TEXTと書かれているもの)、タグ(TAGと書かれているもの)などが対象になっています。

    <alf_dir>/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.get.config.xml
    <search>
    <default-query-template>%(cm:name cm:title cm:description ia:whatEvent ia:descriptionEvent lnk:title lnk:description TEXT TAG cm:creator cm:modifier)</default-query-template>
    </search>

     例えば、作成者や変更者についても簡易検索の検索対象にしたい場合は、上記の設定にcm:creatorやcm:modifierなどを追加します。また、独自のカスタムモデルを定義している場合は、そこで定義した属性を追加することもあるでしょう。
     設定変更はAlfrescoを再起動すると反映されますので、実際に検索対象を追加して動作を確認してみてください。

    第15回Alfresco勉強会が開催されました

    $
    0
    0
    こんにちは。大谷です。

    先日第15回Alfresco勉強会が開催されました。今回は弊社オフィスにて開催したため、会場にたどり着くまでが結構複雑だったと思います。すいませんすいません…

    さて、今回は2つの発表がありましたが、それぞれ簡単に紹介したいと思います。

    1. Alfresco4をインストールしてみよう (@_tasky)


    資料はこちら

    はい。自分の発表です。Alfresco初心者向けの発表として、インストーラを使ったインストール方法とその注意点(最低限設定しておいた方がよい内容)を紹介しました。Windowsでインストーラを使ってインストールした場合は、tomcatの設定ツールを使ってJAVA_OPTSの設定を変更するなどした方がよいです。デフォルトの設定だと最低限度のメモリしか使わない設定になっています。


    2. Alfrescoの権限管理について (@to2y氏)


    資料はこちら

    次は、中~上級者向けの発表で、Alfrescoの権限管理の仕組みとANDでの権限解決のカスタマイズ例などが紹介されました。ロールとパーミッション、Share上で利用できるロールなどの比較的高レイヤの概念の説明から、Acegi Security(現Spring Security)ベースの権限コントロールについての低レイヤな話まで、日ごろあまり意識しないけどとても重要な内容について理解することができました。


    今回の勉強会については以上になりますが、引き続き第16回Alfresco勉強会が2013年6月6日(木)に予定されております。興味のある方は是非ご参加いただければと思います。

    How to synchronize SharePoint to a Mac? (alternative to SkyDrive Pro client)

    $
    0
    0
    SharePoint users can synchronize their documents with the SkyDrive Pro client (not to be confused with SkyDrive).

    Unfortunately, the SkyDrive Pro client is not available on Mac (and Linux), and even if you are on Windows, in addition you must pay for Office 2013 Professional Plus before using it.
    Microsoft shows no sign of clemence towards Mac users on this matter.
    Using Parallels does not help: My Documents is then seen as a network location, which means that Skydrive Pro fails to save documents there.

    But here is new hope!
    CmisSync allows you to sync SharePoint to your desktop, no license fees, and Mac/Linux versions are planned.

    CmisSync is currently Windows-only, but it is Open Source and looking for volunteers to port the code. CmisSync is built with Mono, which means it should be easy to port it to Mac/Linux/Android/iOS. So please developers plunge forward and don't hesitate to ask us questions :-)

    Viewing all 244 articles
    Browse latest View live