Thursday, January 30, 2014

Liferay 動的データリストディスプレイポートレットの紹介

こんにちは、かわべです。
以前このブログで「この冬は風邪を引かずに過ごせるかも」というような事を書きましたが、今のところ順調に過ごしています。とはいえ、昨年は3月にインフルエンザになったので、まだまだ油断はしません!あと、日によっては早くも花粉症の症状が出ているような気がして大変恐ろしいです。早めに対策して心穏やかに過ごしたいところです。

さて、今日もLiferayのポートレットから1つ紹介したいと思います。今回取り上げるのは、「動的データリスト(Dynamic Data List)ディスプレイポートレット」です。

動的データリストディスプレイポートレットについて

動的データリストとは、Liferayポータル上に設置し、権限を与えられたユーザがリアルタイムにレコードを追加・編集・削除することができるリストです。コーディングやHTMLの知識がなくても、GUIで自由に項目を定義したリストを作成できます。作成したリストは、今回紹介する動的データリストディスプレイポートレットを利用し、好きな位置に配置することができます。

この記事では例として、とある開発チームのサイトページにレビュー指摘用の動的データリストを作成してみます。設計書などのドキュメントレビューを実施した際、参加メンバが自由に指摘事項をレコードとして追加し、対応が完了したら更新できるリストにしてみたいと思います。先に載せてしまいますが、完成イメージはこちらです。


この動的データリストを作成するため、以下の手順で進めていきます。
  1. データ定義の作成
  2. 動的データリストの作成
  3. 動的データリストの表示
  4. 動的データリストへのレコード追加
当記事ではLiferay6.2 CE GA1を使用し、特に記述がない場合は管理者として作業しています。EE版でも同様に動作するはずですし、6.1系でも基本は同様です。

1.データ定義の作成

最初に必要となるのは、どのような項目を持つ動的データリストを作成するかに基づき、データ定義を作成することです。データ定義は動的データリストの雛形のようなものです。
動的データリスト管理画面には、上部ドックバーの「サイト管理→システム管理→コンテンツ→動的データリスト」から移動できます。そこで「データ定義の管理」をクリックし、データ定義の管理画面を表示させます。


Liferayをインストールした際のデフォルトサイトにはサンプルとして利用できるデータ定義が存在するのですが、新規作成したサイトにはデータ定義がありません。「追加」からデータ定義を新規作成していきます。


※ちなみに、デフォルトサイトでは以下のようなデータ定義が利用可能となっていますので、中を覗くと参考になると思います。


データ定義では必要な項目をドラッグして追加し、設定を変更して作成していきます。項目は名称とアイコンを見ればどのような属性かわかると思います。まず項目だけを準備した図が以下です。


右側に追加した項目をクリックすると設定のタブへと切り替わります。ラベルの名称などに加え、こんな設定も可能です。
  • 規定値 ー 表示させるデフォルトの値
  • チップ ー 入力時にヒントとしてポップアップさせる文言
  • インデックス可能 ー 検索対象としてインデックスする
  • 繰り返し可能 ー レコード追加時に複数追加可能となる
今回はレビュー指摘に使用するリストなので、指摘者、対応内容、優先度、対応予定日などを設定できるようなデータ定義としました。


「レビュー指摘」という名称で保存して、データ定義は完了です。

2.動的データリストの作成

では、作成したデータ定義を利用し、実際にサイトメンバが利用する動的データリストを作成してみましょう。

引き続き動的データリスト管理画面から作成します。
「追加」をクリックすると、新規リストの追加画面が表示されるので、 データ定義に「レビュー指摘」を選択し、他の項目を下のように埋めていきます。


サイトメンバに各々レコード追加・更新を許可するため、このような権限にしておきます。今回は使用しませんが、レコードの追加にワークフローを関連づけることもできます。

保存をクリックして、「移行計画書レビュー指摘」という動的データリストを作成します。

3.動的データリストの表示

やっと動的データリストディスプレイポートレットの出番です。
まずはリストを表示させるページに「動的データリストディスプレイ」ポートレットを追加します。「+」→「アプリケーション」→「コラボレーション」のカテゴリに存在します。


ポートレット上の「リストの選択」から、いま作成した「移行計画書レビュー指摘」を選択、保存すると、以下の画面になります。


これで動的データリストディスプレイポートレットは準備完了です。設定についての説明は後に回して、まずはレコードを追加し、リストが更新されることを確かめてみましょう。

4.動的データリストへのレコード追加

まずは管理者のままレコードを追加してみます。
「レビュー指摘の追加」をクリックすると、新規レコード登録フォームへと遷移します。何の設定もしていないので、データ定義どおりに項目が表示されます。


必要な情報を入力して保存すると、リストにレコードが1件追加されました。

 
表示方法に関しても、今は設定をしていないので、定義した項目がすべて表示されます。

今度は、ただのサイトメンバであるUser1としてログインし、指摘に対応したという形式でこのレコードを更新してみます。


このように対応内容を更新できました(内容については完全なフィクションとしてお届けしています)。また、左上にレコード追加ボタンが表示されていることから、User1もレコード追加が可能であることがわかりますね。

というわけで、これで「メンバが各自でレコードを追加し、随時更新できるリスト」が作成できました!
動的データリストは1つのデータ定義から複数作成できるので、今後もレビューをする度に同じ項目を持つ指摘リストが作成できます。

動的データリストディスプレイポートレットの設定

先ほどは設定を何も変えずに使用しましたが、動的データリストディスプレイポートレットで可能な設定を見てみましょう。なお、デフォルトの日本語訳では伝わりにくいところがあるので、一部表示をアメリカ英語にした画面で説明します。(※日本語も含む各言語の翻訳はプロパティファイルで上書き可能です)

設定画面(ポートレット右上の「オプション」→「設定」)から、テンプレートの設定を行うことができます。

テンプレートの設定

"Display Template"ではポートレットでのリスト表示テンプレート、"Form Template"ではレコード追加時のフォームテンプレートを設定できます。
前述したように、デフォルトではいずれの場合もデータ定義のすべての項目がそのまま表示されます。表示させたくない項目がある場合や、ラベルを変更したい場合などにテンプレートを設定することができます。
この2つのテンプレートはデータ定義に紐付けて作成・管理します。テンプレートを作成できる権限がある場合、ポートレット下部に"Add Form Template""Add Display Template"が表示されるので、そこからテンプレートの作成ができます。


Display TemplateはFreeMarkerまたはVelocityを使用して表示画面を作成します。6.2から補完機能のある高機能エディタになりました。


とはいえ、Display Templateを使用して意図通りの画面を作成するにはコーディング知識が必要となってきます。

Form Templateはデータ定義と似たGUIで操作します。セパレータの追加、項目削除などが可能です。


その他の設定項目

Editableは編集可能とするかどうか選択します。チェックを外すと、編集権限を持つユーザでもリストは閲覧のみ可能となります。

Spreadsheet Viewをチェックすると、スプレッドシート形式でリストを表示します。スプレッドシート形式では、特定の列の項目をキーとした並び替えができます。


この状態でも権限があればレコードの追加や編集は可能ですが、追加後にうまく保存されない場合や表示が崩れる場合があるようなので、Spreadsheet Viewを使用する場合にはEditableのチェックを外しておいた方がいいかと思います。

CSVデータのエクスポート

ポートレットからではなく管理画面からの操作ですが、集計したデータをCSV形式でエクスポートする事ができます。「システム管理→サイト管理→コンテンツ→動的データリスト」へ移動し、エクスポートしたい動的データリストの「操作→エクスポート」を実行すると、CSV形式のデータをダウンロードすることができます。(※出力形式としてXMLを選択することもできますが、どうもうまく行かないようです…)


まとめ

動的データリストは、レコード追加、更新、参照などの権限と、表示テンプレートを適切に設定することで、幅広い利用方法が考えられます。たとえばイベントやセミナーへの参加者管理や、共有タスクリストなどに使えるでしょう。
まずはぜひデフォルトサイトに存在するデータ定義を利用して、お手元の環境で試してみてください。

No comments:

Post a Comment