Tuesday, July 30, 2013

Liferay IFrameポートレットの紹介 その1

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の記事では今回取り上げられなかった認証の機能についてお話したいと思います。







Monday, July 29, 2013

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

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


Thursday, July 25, 2013

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

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

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

さて、今回は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の使い方とか)」あたりを参考にしてみてください。

(2014/06/20追記) 「Activiti BPM Platformことはじめ4(レポートを追加してみよう)」 を公開しました。


まずはじめに


予め話しておくと、個人的には実際のプロジェクトで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を試してみてくださいね!

Tuesday, July 23, 2013

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

こんにちは。つい先日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周りについて紹介できればと思います。

 (2013/07/25追記) 「Activiti BPM Platformことはじめ3(Activiti Modelerの使い方)」を公開しました。
 (2014/06/20追記) 「Activiti BPM Platformことはじめ4(レポートを追加してみよう)」を公開しました。

Tuesday, July 16, 2013

Espionnage: la FSF deconseille le cloud public, recommande les clouds privés basés sur le libre

Le journal The Guardian a révélé que la NSA (Agence de Sécurité Nationale des États-Unis) dispose d'un accès direct aux systèmes de Google, Facebook, Apple et autres géants de l'Internet, pour espionner les communications qui passent par les États-Unis. John Sullivan, directeur de la Free Software Foundation, conseille d'utiliser des logiciels libres (en cloud privé) plutôt que les clouds publics:

Des intrusions de la vie privée de cette ampleur sont à craindre, quand les gens abandonnent leurs données et logiciels locaux et migrent vers le stockage et les applications en ligne. Les géants come Microsoft, Facebook et Google sont vulnérables aux requêtes du gouvernement exigeant les données des utilisateurs. Pour contrer ce problème, il y a de meilleurs moyens, plus sûrs, de partager des informations en ligne. Les logiciels libres comme GNU MediaGoblin, StatusNet, Diaspora, pump.io, Tahoe-LAFS, FreedomBox et SparkleShare travaillent d'arrache-pied pour créer un monde moins centralisé, un monde dans lequel les utilisateurs maintiennent le contrôle sur leurs données et sur les logiciels qui accèdent à ces données, mais un monde qui est tout aussi pratique et social que son équivalent centralisé.

MediaGoblin: Publication de media. Similaire à Flickr, YouTube, SoundCloud.
StatusNet: Micro-blogging. Similaire à Twitter.
Diaspora, pump.io, Freedombox: Réseau social décentralisé. Similaire à Facebook.
Tahoe-LAFS, SparkleShare, CmisSync: Synchronisation de fichiers. Similaire à Dropbox.
Zimbra: Email. Similaire à Gmail/Calendar.

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もオープンソースで、バグ報告・エンハンスメント等、どなたからでも歓迎しております!