ポータルデザインの手引き

Java ポートレット API (JSR-168) は、ポートレットプログラミングの Java 標準インターフェースを定義しています。Java ポートレット API 仕様により、ポートレットとポータルの間の相互の接続が可能になります。これは Java ポートレットを開発するための標準仕様です。しかし、Java ポートレット API は、レイアウトや、ポートレットの集約や、ページのマークアップについての標準は定義していません。このドキュメントの「ポータルデザイン」以下の部分は以下をカバーします。

テンプレート

ポートレットページ内の 1 つ以上のポートレットをレンダリングするということは、主にテンプレートを使って動的なコンテンツとしてポートレットを集約する処理を行うということです。Jetspeed 2 は、ページレイアウトを Velocity テンプレートを使って作ります。Jetspeed 2 の構造は、デコレータやレイアウト用に JSP テンプレートを使うことが可能な構造をしていますが、これまで開発者は、テンプレートを書くためのツールとして Velocity を選択しています。Jetspeed には、二種類のテンプレートが存在しています。それはレイアウトテンプレートとデコレータテンプレートです。ページをレンダリングする処理は、レイアウトテンプレートと、ページデコレータテンプレートと、PSML の定義と、 1 つ以上のポートレットデコレータのテンプレートを集約して結合します。リリース 2.0 では、テンプレートはファイルシステムに保存することが可能です。将来のリリースでは、テンプレートはバージョン管理のために CMS バックエンドに保存されるでしょう。

レイアウトテンプレート

レイアウトテンプレートは、Jetspeed に特化した配備可能なポートレットアプリケーションとしてまとめられています。レイアウトテンプレートは、ポータルページの全体的な集約をコントロールします。レイアウトテンプレートは、集約のためのコンポーネントモデルを提供し、ポートレットを組み合わせます。Jetspeed 2 は一列、または二列、または三列のレイアウトを含むいくつかのレイアウトコンポーネントを同梱しています。デフォルトの Jetspeed 2 システムで可能な全てのレイアウトについては レイアウトのガイド を参照してください。もちろん、自身でレイアウトを定義することも可能です。

デコレータ

デコレータテンプレートは、Jetspeed に特化した配備可能なアーカイブとしてまとめられています。レイアウトテンプレートは、ポータルページの全体的な集約をコントロールします。レイアウトテンプレートは、集約のためのコンポーネントモデルを提供し、ポートレットを組み合わせます。Jetspeed 2 は一列、または二列、または三列のレイアウトを含むいくつかのレイアウトコンポーネントを同梱しています。デフォルトの Jetspeed 2 システムで可能な全てのレイアウトについては デコレータのガイド を参照してください。もちろん、自身でレイアウトを定義することも可能です。

テンプレートロケータ

テンプレートは、Jetspeed テンプレート (と Jetspeed デコレータ) のロケータコンポーネントにより検索されます。これらのコンポーネントは、正規化された名前と値のペアによる URL スキームを使ってテンプレートを検索します。しかし、Velocity のようなテンプレートエンジンは、ドキュメントルートからの相対パスで表現されるテンプレートへのパスを使って動作する必要があります。Jetspeed パワーツール は、正規化されたパスと相対パスの間の変換を容易にしてくれます。通常、Spring の設定では全てのデコレータのテンプレートルートは次のように定義されます。

${applicationRoot}/WEB-INF/decorations
そして、全ての (ポートレットアプリケーション毎の) レイアウトのルートは次のように定義されます。
${applicationRoot}/WEB-INF/templates
正規化されたパスは名前と値のペアを用いて定義されます。例えば
type/layout/media-type/html/name/tigris/decorator.vm
type/decorator/media-type/html/language/en/country/US/name/metal/decorator.vm
のようにです。
名前説明
typelayout | portlet | genericテンプレートロケータのタイプ。layout, portlet (デコレータ) または generic (デコレータ) のいずれかの値のうちのどれかです。レイアウトはページレイアウトかデコレータのいずれかのためのものになりえます。generic タイプデコレータは、ポートレットデコレーションまたはページデコレーションのいずれかになりえます。
media-typehtml | wml | dhtml | ...検索されるマークアップメディアタイプ。有効なメディアタイプ (html, dhtml, wml...) である必要があります。
name有効なデコレータもしくはレイアウトの名前デコレータもしくはレイアウトの名前。普通はデコレータもしくはレイアウトのテンプレートや画像やスタイルシートが保存されているサブディレクトリと一致します。
languageISO-639 標準として有効な二文字の言語の省略形ISO-639 (http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt) は言語の省略形の標準を定義します。 代表的な省略形として英語に対する en、フランス語に対する fr、ドイツ語に対する de 等があります。
countryISO-3166 標準として有効な二文字の国名の省略形ISO-3166 (http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html) は国コードの省略形の標準を定義します。 代表的な省略形としてアメリカ合衆国に対する US やフランスに対する FR 等があります。

専門用語

用語 定義
レイアウト(Layout) フラグメントのグループが関係するものでまとめられて、最終的にポータルへのリクエストに対する集約されたコンテンツにまとめられる際の形状を定義します。レイアウトはページの集約されたコンテンツを生成するテンプレートにアルゴリズムを適用するためのポートレットにより決められます。標準的なアルゴリズムには二列、三列、入れ子構造があります。
TODO: ここで省かれているもの: フラグメント、デコレーション、ページ、ページデコレータ、ポートレットデコレータ、 アプリケーションの関係、正規化テンプレートパス、絶対 URL