Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発 11gリリース1 (11.1.1.8.3) E49666-03 |
|
前 |
次 |
この章では、即時利用可能なコンテンツ・プレゼンタ表示テンプレート、新しい表示テンプレートの作成方法および表示テンプレートをユーザーが使用できるようにする方法について説明します。
注意: コンテンツ・プレゼンタでは、コンテンツ・サーバーベースのコンテンツのみを使用できます。他のコンテンツ・リポジトリ接続タイプはサポートされません。 |
この章の内容は、次のとおりです。
コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがポータルまたはFrameworkアプリケーション・ページ上でコンテンツ・アイテム(イメージとテキストを含む)をレンダリングする方法を定義するJSFFファイル(JSFページ・フラグメント)です。WebCenter Portalには即時利用可能な表示テンプレートがいくつか装備されており、これらを使用してすぐに作業を開始できますが、特定の表示要件を満たすために独自のテンプレートを作成することもできます。
コンテンツ・プレゼンタ表示テンプレートが値を提供する標準的な状況を次に示します。
ページの異なる部分に対して異なるレイアウトを提供します。たとえば、同じページ上に異なるソースからの記事があり、各記事用に独自のレイアウトが必要な場合が考えられます(詳細は、第27.3.3項「複数アイテムの表示テンプレートの定義」参照)。
表示デバイスの機能に基づいてコンテンツを表示します。表示デバイスが標準モニター、タブレット、スマートフォンのどれかに応じて、表示テンプレートを提供できます(詳細は、第27.3.4項「レスポンシブ・テンプレートの使用」参照)。
コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツを使用可能にすることによって、手動で個々のレイアウトを作成することなく、標準化されたテンプレートで複雑な表示問題を解決できます。ユーザーが表示テンプレートを使用できるようにすると、開発者を介さずに、事前定義済の部署または会社の標準に基づいてレイアウトの要件を解決できます。
ヒント: サンプル表示テンプレートは |
表示テンプレートでは充実したADFコンポーネントをすべて使用できるので、コンテンツを表示するために堅牢で人目を引くテンプレートをすばやく簡単に作成できます。ただし、テンプレートでこれらのコンポーネントを使用する必要はありません。
コンテンツ・プレゼンタ表示テンプレートでは、単一コンテンツ・アイテム、複数コンテンツ・アイテムまたは双方の組合せを処理できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。
各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・アイテムのプロパティを定義します。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。
ヒント: コンテンツ・プレゼンタADFテンプレートを使用して、Site Studioリージョン・テンプレートではなくSite StudioとWebCenter Portalを統合することをお薦めします。推奨フローは次のとおりです。
|
コンテンツ・タイプはコンテンツ・リポジトリ(WebCenter Portalコンテンツ・サーバー)で作成されます。コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。
ヒント: コンテンツ・サーバーで定義されている既存コンテンツ・タイプのプロパティを判断する1つの方法は、ポータルの「コンテンツ・プレゼンタ構成」ダイアログを使用する方法です。この方法の詳細は、第27.3.7項「コンテンツ・タイプのプロパティ名の発見」を参照してください。 |
実行時に権限のあるエンド・ユーザーは、「コンテンツ・プレゼンタ構成」ダイアログで表示テンプレートを選択できます。コンテンツ・プレゼンタ・テンプレートの使用時期と使用方法の決定、およびベスト・プラクティスの詳細は、次のブログ・エントリを参照してください。
http://www.ateam-oracle.com/portal-and-content-content-integration-best-practices
WebCenter Portalには、デフォルトのコンテンツ・プレゼンタ表示テンプレートがいくつか装備されています。こうした事前に構築されているテンプレートは、単一コンテンツ・アイテムと複数コンテンツ・アイテムを表示するためのオプションを提供します。
たとえば、デフォルトのドキュメント詳細ビュー・テンプレートには、作成日付、変更日付、作成者のユーザー名、変更者のユーザー名およびパスを含む単一のコンテンツ・アイテムの詳細情報が表示されます。図27-5は、実行時にこのテンプレートで表示されるコンテンツ・アイテムを示しています。
複数コンテンツ・アイテムの表示には、複数のコンテンツ・アイテムをアコーディオン形式で表示するアコーディオン・ビューを始め、いくつかのオプションが提供されています。この形式では、図27-2に示されているように、各アイテムを開いてその詳細を表示できます。(アコーディオン・ビューでは、常に1つのアイテムが開きます。つまり、すべてのアイテムを閉じることはできません。いつでも、どの単一アイテムを開くかのみを変更できます。)
デフォルトの表示テンプレートの全リストは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。
デフォルトの表示テンプレート(第27.2項「デフォルト表示テンプレートの使用」を参照)がニーズを満たさない場合、カスタムのコンテンツ・プレゼンタ・テンプレートを定義できます。
ヒント: 新しいコンテンツ・プレゼンタ表示テンプレートを作成するだけでなく、デフォルトのテンプレートの1つをコピーして変更することもできます。 |
この項の内容は、次のとおりです。
コンテンツ・プレゼンタ表示テンプレートの定義方法は、ニーズに応じて異なります。一般的には、コンテンツの特定単一アイテムについて表示テンプレートを定義してから、単一アイテムの表示テンプレートへのコールを含む複数コンテンツ・アイテムの表示テンプレートを定義します。
テンプレート定義には、次のように他の表示テンプレートへのコールを含めることができます。
単一コンテンツ・アイテムの表示テンプレートは、別の単一コンテンツ・アイテムの表示テンプレートをコールできます。
複数コンテンツ・アイテムの表示テンプレートは、単一コンテンツ・アイテムの表示テンプレートをコールできます(次の例を参照)。
複数コンテンツ・アイテムの表示テンプレートは、別の複数コンテンツ・アイテムの表示テンプレートをコールできます。
コンテンツ・プレゼンタ表示テンプレートを作成する際の基本的なタスクは、次のとおりです。
単一アイテムと複数アイテムのいずれの表示テンプレートを作成するかを決定します。第27.3.2項「単一アイテムの表示テンプレートの作成」と第27.3.3項「複数アイテムの表示テンプレートの定義」を参照してください。
コンテンツ・アイテムによってどのような情報を表示するかを決定します。また、この情報を取得して表示するために、たとえば、WebCenter PortalのEL式をテンプレートで使用することも検討してください。EL式の使用方法の詳細は、第27.3.6項「EL式を使用したコンテンツ・アイテム情報の取得」と付録F「式言語式」を参照してください。
テンプレートのルック・アンド・フィールをデザインします。表示テンプレートでは、標準JSFF構造に加え、ADFコンポーネントを使用できます。『Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド』を参照してください。
ポータル・リソースとしてテンプレートをエクスポートします。第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」を参照してください。
第27.7項「キャッシュ・メカニズムとしてのCoherenceの構成」の説明に従って、本番環境(オプションですがお薦めします)およびHA環境(必須です)用のキャッシュ・メカニズムとしてCoherenceを使用するようにコンテンツ・プレゼンタを構成します。
コンテンツ・プレゼンタ表示テンプレートを作成する単一コンテンツ・アイテムの例を次に示します。
ページ上で特定ルック・アンド・フィールで表示する個々のアイテム。
特定タイプのアイテムの異なるビュー(例: 記事の短いビューと詳細ビュー)。
類似アイテムの異なるバージョン(例: グループ別に異なるプロパティ・セットを使用して異なる方法でフォーマットされるプレス・リリース)。
単一コンテンツ・アイテムの表示テンプレートの定義では、表27-1にリストされているJSPタグを使用します。
表27-1 単一コンテンツ・アイテムのコンテンツ表示テンプレートのタグ
JSPタグ | 説明 | 例 |
---|---|---|
|
必須。単一コンテンツ・アイテムのテンプレートを定義します。 属性:
|
<dt:contentTemplateDef var="node"> <af:outputText value="#{node.name}" /> </dt:contentTemplateDef> |
|
オプション。指定ノード・プロパティの文字列値をインラインで取得およびレンダリングします。 属性:
|
<!--
Handling of text-based primary
properties (HTML, text, etc.).
-->
<dt:contentTemplateDef var="node">
<cmf:renderProperty id="rp1"
name="#{node.primaryProperty.name}"
node="#{node}"/>
</dt:contentTemplateDef>
|
|
オプション。 別の単一アイテム・テンプレートをコールします。 属性:
|
<dt:contentTemplateDef var="node">
<af:outputText value="#{node.name}" >
<dt:contentTemplate node="#{node}"
view="templates.pressrelease.item"
/>
</af:outputText>
</dt:contentTemplateDef>
|
単一コンテンツ・アイテムの表示テンプレートを作成するには:
JDeveloperでJSFFファイルを作成します。
「ファイル」メニューから「新規」を選択します。
「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「JSFページ・フラグメント」の順に選択します。
「OK」をクリックします。
「新規JSFページ・フラグメントの作成」ダイアログで、表示テンプレート・ファイルの名前を入力します。
ポータルWebプロジェクトの oracle/webcenter/portalapp/pages
フォルダを指すように「ディレクトリ」フィールドを設定します。このディレクトリは正しいルート・パスから設定する必要があります。JDeveloperでは、ルート・パスはPROJECT_NAME > Webコンテンツになります。ファイル・システムの場合、ルート・パスはPROJECT_ROOT/public_html
です。たとえば、PROJECT_ROOT/public_html/oracle/webcenter/portalapp/pages
になります。最初にpages
にサブフォルダを作成し、そのサブフォルダにJSFFを格納する方法をお薦めします。
「表示」、「コンポーネント・パレット」の順に選択して、コンポーネント・パレットを開きます。
コンポーネント・パレット最上部のドロップダウン・リスト(図27-3)で、次の手順に従います。
表示テンプレート・タグのリストは、「WebCenterコンテンツ表示テンプレート」を選択します。
renderProperty
タグは、「WebCenterコンテンツ管理フェース」を選択します。
「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップして、テンプレートを定義します。各タグおよび必要なパラメータ値の情報は、表27-1を参照してください。
例27-1および例27-2に、単一コンテンツ・アイテム表示テンプレートの定義のサンプルを示します。これらの例のユース・ケースでは、特定のス類のドキュメント(プレス・リリース)が、会社内の2つの異なる部門によって作成され、それぞれの部門で独自のコンテンツ・タイプとプロパティを定義しています。これらのサンプル・コンテンツ・プレゼンタ表示テンプレートでは、これらの2つの異なるコンテンツ・タイプを一貫した方法で表示できます。
例27-1に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すxHeading
という名前のプロパティと、そのドキュメントの場所を表すxDestinationUrl
というプロパティを使用するプレス・リリースを処理します。所定のコンテンツ・タイプに対するこうしたプロパティ名の取得方法を学ぶには、第27.3.7項「コンテンツ・タイプのプロパティ名の発見」を参照してください。
例27-1 プレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ表示テンプレート
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"> <dt:contentTemplateDef var="node"> <af:goImageLink text="#{node.propertyMap['xHeading'].value}" id="gil1" icon="#{node.icon.smallIcon}" destination="#{node.propertyMap['xDestinationUrl'].value}" targetFrame="_blank"> </af:goImageLink> </dt:contentTemplateDef> </jsp:root>
例27-2に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すdDocTitle
という名前のプロパティと、そのドキュメントの場所を表すxLinkUrl
というプロパティを使用するプレス・リリースを処理します。
例27-2 別のプレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ・テンプレート
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"> <dt:contentTemplateDef var="node"> <af:goImageLink text="#{node.propertyMap['dDocTitle'].value}" id="gil1" icon="#{node.icon.smallIcon}" destination="#{node.propertyMap['xLinkUrl'].value}" targetFrame="_blank"> </af:goImageLink> </dt:contentTemplateDef> </jsp:root>
コンテンツ・プレゼンタ表示テンプレートを作成する複数コンテンツ・アイテムの例を次に示します。
1つのページに表示する一群の類似アイテム(例: 本のリストや写真による従業員名簿)。
問合せ結果(例: 先週変更された全ドキュメント)。
Content Serverフォルダの全ドキュメントのリスト。
コンテンツ・プレゼンタ表示テンプレートでは、単一アイテムと複数アイテムを組み合せることもできます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。この手順の例は、A-Teamのブログ・エントリ「Enable Content Editing of Iterative Components」を参照してください。
複数コンテンツ・アイテムの表示テンプレートの定義では、表27-2にリストされているJSPタグを使用します。
表27-2 複数コンテンツ・アイテムのコンテンツ表示テンプレートのタグ
JSPタグ | 説明 | 例 |
---|---|---|
|
必須。複数コンテンツ・アイテムのテンプレートを定義します。 属性:
|
<dt:contentListTemplateDef var="nodes"> <af:iterator value="#{nodes}" var="node"> <af:outputText value="#{node.name}" /> </af:iterator> </dt:contentListTemplateDef> |
|
オプション。 別の複数アイテム・テンプレートをコールします。 属性:
|
<dt:contentListTemplateDef var="nodes">
<!--
Reuse the default bulleted list view, but
indent it with a <blockquote>
-->
<f:verbatim>
<blockquote>
</f:verbatim>
<dt:contentListTemplate nodes="#{nodes}"
category="oracle.webcenter.content.
templates.default.category"
view="oracle.webcenter.content.
templates.default.list.bulleted"/>
<f:verbatim>
</blockquote>
</f:verbatim>
</dt:contentListTemplateDef>
|
|
オプション。 単一アイテム・テンプレートをコールします。 属性:
|
<dt:contentListTemplateDef var="nodes">
<af:iterator rows="0" var="node"
varStatus="iterator" value="#{nodes}">
<dt:contentTemplate node="#{node}"
view="templates.pressrelease.listitem"
nodesHint="#{nodes}"/>
</af:iterator>
</dt:contentListTemplateDef>
|
複数コンテンツ・アイテムの表示テンプレートを定義するには:
第27.3.2項「単一アイテムの表示テンプレートの作成」の手順1から3の説明に従って、JDeveloperでJSFFファイルを作成し、コンポーネント・パレットを開きます。
「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップします。各タグと必要なパラメータ値の情報は、表27-2を参照してください。
例27-3は、複数コンテンツ・アイテムの表示テンプレートのサンプル定義を示しています。
例27-3 複数プレス・リリース表示用のサンプル表示テンプレート定義(press-release-list-view.jsff)
このテンプレート定義では、参照されるビュー(view="mycorp.content.templates.pressrelease.listitem"
)に従って、表示するように選択されたデータ・アイテムを順に処理します。
<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
<dt:contentListTemplateDef var="nodes">
<af:panelGroupLayout layout="scroll" id="nodeListPanel" valign="middle">
<af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}">
<dt:contentTemplate node="#{node}"
view="mycorp.content.templates.pressrelease.listitem"
nodesHint="#{nodes}"/>
</af:iterator>
</af:panelGroupLayout>
</dt:contentListTemplateDef>
</jsp:root>
CSS3 Media Queriesを使用すると、コンテンツをレンダリングして、画面解像度などの条件に適応できます。デフォルトのコンテンツ・プレゼンタ・テンプレートである記事ビューと全記事ビューは、レスポンシブ・レイアウト用に、コンテンツ・プレゼンタ・テンプレートでCSS3 Media Queriesをどう使用するかを示す例です。これらのレスポンシブ・テンプレートの拡張方法は、第27.3.5項「レスポンシブ・テンプレートの拡張」を参照してください。コンテンツ・プレゼンタのデフォルトの表示テンプレートのパラメータは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。また、スマートフォン、タブレットなどのモバイル・デバイスのためのビューポート設定の最適化は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のモバイル・デバイスのポータルの最適化に関する項を参照してください。
第27.3.4.2項「複数記事の表示」で説明されている記事ビューおよび全記事ビュー・テンプレートは、Site Studio RD_ARTICLE
リージョン定義に依存します。そのため、記事ビューおよび全記事ビュー・コンテンツ・プレゼンタ・テンプレートを使用可能にするには、Site Studioをコンテンツ・サーバーで有効にする必要があります。
Site Studioの有効化、およびコンテンツ・サーバーにRD_ARTICLE
リージョン定義をシードする手順は次のとおりです。
Site Studioを有効にします(Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のSite Studio統合の理解に関する項を参照)。
Site Studioが有効になったら、WebCenter Portalを起動(または再起動)します(これで、RD_ARTICLE
リージョン定義がシードされます)。
例27-4のテンプレート定義では、表示するように選択されたデータ・アイテムを順に処理し、3つのスタイル・クラスを使用します。
article
: 各コンテンツ・アイテムに適用
article-3
: ページが3列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用
article-2
: ページが2列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用
スタイル・クラスは、articles.css
スタイル・シートに定義されています。
例27-4 複数記事表示用のサンプル表示テンプレート定義(articles.jsff)
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler" xmlns:tr="http://myfaces.apache.org/trinidad"> <dt:contentListTemplateDef var="nodes"> <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/> <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}" id="it0"> <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article" id="pg1"> <af:commandLink immediate="true" partialSubmit="true" id="cl2"> <rah:resourceActionBehavior id="rah1" serviceId="oracle.webcenter.content.presenter" resourceId="#{node.id}" resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}" useResourcePopup="never"/> <f:attribute name="taskFlowInstId" value="a5fafea8-90e6-4972-997d-314401b6c98b"/> <f:attribute name="datasourceType" value="dsTypeSingleNode"/> <f:attribute name="datasource" value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/> <f:attribute name="templateView" value="oracle.webcenter.content.templates.sitestudio.fullarticle"/> <f:attribute name="regionTemplate" value="#{false}"/> <af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}" escape="false" id="ot4"/> <tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}" id="ph1"> <af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}" escape="false" id="ot3"/> </tr:panelHeader> </af:commandLink> </h:panelGroup> </af:iterator> </dt:contentListTemplateDef> </jsp:root>
例27-5のスタイル・シートは、ブラウザの幅に応じて異なる方法でコンテンツをレンダリングするために、Media Queriesを使用します。
例27-5 CSS3 Media Queriesを使用するスタイル・シート(articles.css)
/* Default styles */ .article { display: block; float: left; width: 31.623931623931625%; margin-left: 2.564102564102564%; margin-bottom: 1em; } .article-3 { margin-left: 0; clear: both; } .article img { width: 100%; margin: 0 0 .25em; float: none; padding-top: 0; display: block; border: 0; } .article h1 { font-size: 1.5em; } @media only screen and (max-width : 480px) { /* up to width of iPhone (excluding iPhone 5 in landscape) */ .article { margin-top: .5em; float: left; display: inline; width: 100%; margin-left: 0; } .article-3 { width: 100%; clear: none; } .article img { margin-right: 4%; width: 48%; float: left; } .article { font-size: 1em; } .article h1 { font-size: 1.25em; } } @media only screen and (min-width : 481px) and (max-width : 780px) { /* up to the width of iPad in portrait and iPhone 5 in landscape */ .article { display: block; float: left; width: 48.71794871794871%; margin-left: 2.564102564102564%; clear: none; } .article-3 { margin-left: 2.564102564102564%; clear: none; } .article-2 { margin-left: 0; clear: both; } .article h1 { font-size: 1.25em; } } @media only screen and (min-width : 769px) and (max-width : 1024px) { /* up to the width of iPad in landscape */ } @media only screen and (min-width : 1025px) { /* desktop */ }
次の項では、デフォルトのテンプレートがローカル要件を満たさない場合に、それらの編集に必要な手順について説明します。スマートフォン、タブレットなどのモバイル・デバイス用のビューポート設定の最適化は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築のモバイル・デバイスのポータルの最適化に関する項を参照してください。
この項には次のサブセクションが含まれます:
記事ビュー・テンプレートを拡張するには次の手順を実行します。
複数アイテムを表示するために空のテンプレートを作成し(第27.3.3項「複数アイテムの表示テンプレートの定義」参照)、JDEVELOPER/webcenter/samples/contentpresenter/
ディレクトリにあるarticles.jsff
のコンテンツを空のテンプレートにコピーします。
次のように変更して、artices.jsff
によって使用されるCSSを新しいテンプレートに埋め込みます。
<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
変更後:
<af:resource type="css"> /* Default styles */ .article { display: block; float: left; width: 31.623931623931625%; margin-left: 2.564102564102564%; margin-bottom: 1em; } .article-3 { margin-left: 0; clear: both; } .article img { width: 100%; margin: 0 0 .25em; float: none; padding-top: 0; display: block; border: 0; } .article h1 { font-size: 1.5em; } @media only screen and (max-width : 480px) { /* up to width of iPhone */ .article { margin-top: .5em; float: left; display: inline; width: 100%; margin-left: 0; } .article-3 { width: 100%; clear: none; } .article img { margin-right: 4%; width: 48%; float: left; } .article { font-size: 1em; } .article h1 { font-size: 1.25em; } } @media only screen and (min-width : 481px) and (max-width : 780px) { /* up to the width of iPad in portrait */ .article { display: block; float: left; width: 48.71794871794871%; margin-left: 2.564102564102564%; clear: none; } .article-3 { margin-left: 2.564102564102564%; clear: none; } .article-2 { margin-left: 0; clear: both; } .article h1 { font-size: 1.25em; } } @media only screen and (min-width : 769px) and (max-width : 1024px) { /* up to the width of iPad in landscape */ } @media only screen and (min-width : 1025px) { /* desktop */ } </af:resource>
要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。
新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。
WebCenter PortalまたはFrameworkアプリケーションに新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。
全記事ビュー・テンプレートを拡張するには、次を実行します。
単一アイテムを表示するために空のテンプレートを作成し(第27.3.2項「単一アイテムの表示テンプレートの作成」参照)、JDEVELOPER/webcenter/samples/contentpresenter/
ディレクトリにあるfull-article.jsff
のコンテンツを空のテンプレートにコピーします。
次のように変更して、full-artice.jsff
によって使用されるCSSを新しいテンプレートに埋め込みます。
<af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
変更後:
<af:resource type="css"> /* Default styles */ .full-article h1 { font-size: 1.5em; } .full-article-image img { margin-left: 4%; width: 48%; float: right; } @media only screen and (max-width : 480px) { /* up to width of iPhone */ .full-article-image img { margin-left: 0; width: 100%; float: none; } } @media only screen and (min-width : 481px) and (max-width : 780px) { /* up to the width of iPad in portrait */ } @media only screen and (min-width : 769px) and (max-width : 1024px) { /* up to the width of iPad in landscape */ } @media only screen and (min-width : 1025px) { /* desktop */ } </af:resource>
要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。
新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。
新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。
この項では、記事ビューおよび全記事ビュー・テンプレートに対して行う変更、およびその変更方法の概要について説明します。例:
Internet Explorer 8などの古いブラウザでレスポンシブ・レイアウトをサポートするようにテンプレートを更新する場合。
異なるリージョン定義を操作するするようにテンプレートを更新する場合。
これらの拡張については、次の項で説明します。
現在のレスポンシブ・テンプレートはCSS3 Media Queriesに依存しますが、古いブラウザではサポートされていません。そのため、レスポンシブ・デザインを有効にするには、Media Queriesを受理してJavaScriptを使用できる、サード・パーティのJavaScriptライブラリを使用する必要があります。
これを行うには:
サード・パーティのJavaScriptライブラリを含むWebCenter Portal用カスタム共有ライブラリを作成してデプロイします(第55.2項「WebCenter Portalのタスク・フロー、データ・コントロールおよびマネージドBeanの開発」参照)。
サード・パーティのJavaScriptライブラリへの参照をテンプレートに追加します(path/to/3rd/party/library.js
がカスタム共有ライブラリ内のJavaScriptファイルへのパスです)。
<af:resource type="javascript" source="path/to/3rd/party/library.js"/>
この項では、レスポンシブ・テンプレート内のリージョン定義の変更方法について説明します。たとえば、TITLE
、LEAD
、IMAGE
およびBODY
という4つの要素を含む、RD_NEWS
という名前のリージョン定義があるとします(第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」参照)。この場合、この新しいリージョン定義を参照するようにテンプレートを更新します。それには、RD_ARTICLES
の参照をRD_NEWS
に変更し、SUMMARY
の参照をLEAD
に変更します。
ニュース・ビュー
このテンプレートは、記事ビュー・テンプレートに基づいて新しいアイテム(RD_NEWS
タイプ)のリストを表示します。
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler" xmlns:tr="http://myfaces.apache.org/trinidad"> <dt:contentListTemplateDef var="nodes"> <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/> <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}" id="it0"> <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article" id="pg1"> <af:commandLink immediate="true" partialSubmit="true" id="cl2"> <rah:resourceActionBehavior id="rah1" serviceId="oracle.webcenter.content.presenter" resourceId="#{node.id}" resourceTitle="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" useResourcePopup="never"/> <f:attribute name="taskFlowInstId" value="a5fafea8-90e6-4972-997d-314401b6c98b"/> <f:attribute name="datasourceType" value="dsTypeSingleNode"/> <f:attribute name="datasource" value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/> <f:attribute name="templateView" value="oracle.webcenter.content.templates.newsitem"/> <f:attribute name="regionTemplate" value="#{false}"/> <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}" escape="false" id="ot4"/> <tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" id="ph1"> <af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}" escape="false" id="ot3"/> </tr:panelHeader> </af:commandLink> </h:panelGroup> </af:iterator> </dt:contentListTemplateDef> </jsp:root>
ニュース・アイテム・ビュー
このテンプレートは、全記事ビュー・テンプレートに基づいてニュース・アイテム全体(View ID: oracle.webcenter.content.templates.newsitem
)を表示します。
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:tr="http://myfaces.apache.org/trinidad"> <dt:contentTemplateDef var="node"> <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/> <af:panelGroupLayout id="psl1" layout="vertical"> <tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" styleClass="full-article" id="ph1"> <tr:panelGroupLayout id="pgl1" styleClass="full-article-image"> <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}" escape="false" id="ot4"/> </tr:panelGroupLayout> <af:outputText value="#{node.propertyMap['RD_NEWS:BODY'].asTextHtml}" escape="false" id="ot3"/> </tr:panelHeader> </af:panelGroupLayout> </dt:contentTemplateDef> </jsp:root>
コンテンツにより適合するようにテンプレートのレイアウトを変更するとします。たとえば、1列のレイアウトでは、記事の要約のテキストが長い場合、記事ビュー・テンプレートはそのテキストをイメージの下にも表示します。
これを変更して、イメージの下にテキストが表示されないようにできます。
これを行うには、記事ビュー・テンプレートに基づいて新しいテンプレートを作成し、テキストのブロックにスタイル・クラス(article-text
)を追加して、このスタイル・クラスの表示CSSプロパティを、狭いレイアウト用のtable-cell
に設定します。
<?xml version = '1.0'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler" xmlns:tr="http://myfaces.apache.org/trinidad"> <dt:contentListTemplateDef var="nodes"> <af:resource type="css"> /* Default styles */ .article { display: block; float: left; width: 31.623931623931625%; margin-left: 2.564102564102564%; margin-bottom: 1em; } .article-3 { margin-left: 0; clear: both; } .article img { width: 100%; margin: 0 0 .25em; float: none; padding-top: 0; display: block; border: 0; } .article h1 { font-size: 1.5em; } @media only screen and (max-width : 480px) { /* up to width of iPhone */ .article { margin-top: .5em; float: left; display: inline; width: 100%; margin-left: 0; } .article-3 { width: 100%; clear: none; } .article img { margin-right: 4%; width: 48%; float: left; } .article { font-size: 1em; } .article h1 { font-size: 1.25em; } /* Set the display CSS property to table-cell for the article-text style class in the narrow layout */ .article-text { display: table-cell; } } @media only screen and (min-width : 481px) and (max-width : 780px) { /* up to the width of iPad in portrait */ .article { display: block; float: left; width: 48.71794871794871%; margin-left: 2.564102564102564%; clear: none; } .article-3 { margin-left: 2.564102564102564%; clear: none; } .article-2 { margin-left: 0; clear: both; } .article h1 { font-size: 1.25em; } } @media only screen and (min-width : 769px) and (max-width : 1024px) { /* up to the width of iPad in landscape */ } @media only screen and (min-width : 1025px) { /* desktop */ } </af:resource> <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}" id="it0"> <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article" id="pg1"> <af:commandLink immediate="true" partialSubmit="true" id="cl2"> <rah:resourceActionBehavior id="rah1" serviceId="oracle.webcenter.content.presenter" resourceId="#{node.id}" resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}" useResourcePopup="never"/> <f:attribute name="taskFlowInstId" value="a5fafea8-90e6-4972-997d-314401b6c98b"/> <f:attribute name="datasourceType" value="dsTypeSingleNode"/> <f:attribute name="datasource" value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/> <f:attribute name="templateView" value="oracle.webcenter.content.templates.sitestudio.fullarticle"/> <f:attribute name="regionTemplate" value="#{false}"/> <af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}" escape="false" id="ot4"/> <tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}" id="ph1" styleClass="article-text"> <af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}" escape="false" id="ot3"/> </tr:panelHeader> </af:commandLink> </h:panelGroup> </af:iterator> </dt:contentListTemplateDef> </jsp:root>
この項では、コンテンツ・アイテムに関する特定情報を取得および表示するためにコンテンツ・プレゼンタ表示テンプレートの定義で使用できるEL式について説明します。
第27.3.2項「単一アイテムの表示テンプレートの作成」および第27.3.3項「複数アイテムの表示テンプレートの定義」で説明したコンテンツ・プレゼンタ表示テンプレートを定義するときに、次の表で説明するEL式を使用します。これらの式は、表27-1および表27-2で説明したJSPタグとともに使用されます。
この項には次のサブセクションが含まれます:
表27-3にリストされているEL式を使用すると、表示テンプレートでコンテンツ・アイテムの基本情報を表示できます。
表27-3 基本コンテンツ情報を取得するためのEL式
EL式 | 説明 |
---|---|
|
ノードの作成者のユーザー名を返します。 |
|
ノードの作成日を返します。 |
|
現在のノードが有効な親ノードIDを持っている場合または親がないノードの場合、 |
|
現在のWebアプリケーションで定義されたアイコン・サービスを返します。 |
|
ノードの識別子を返します。 |
|
このノードがフォルダまたはコンテナと関連付けられている場合、 |
|
このノードが別のオブジェクト・クラス定義によって継承された場合、 |
|
ノードの最終更新者のユーザー名を返します。 |
|
ノードの最終更新日を返します。 |
|
ノードの名前を返します。 |
|
親ノードの識別子を返します。 |
|
ノードのパスを返します。 |
|
ノードの主要プロパティがある場合、それを返します。 |
|
プロパティ名をキーとする、ラップされたプロパティ・オブジェクトのマップを作成して返します。プロパティには |
|
このノードの主要プロパティがある場合、そのノード・プロパティURLサービスのインスタンスを返します。デフォルトでは、 |
表27-4と表27-5で説明されているEL式を使用して、コンテンツ・アイテムのノード・プロパティとプロパティ値に対するアクションを実行します。
表27-4 コンテンツ・アイテムのノード・プロパティのEL式
EL式 | 説明 |
---|---|
|
タイプがテキストまたはHTMLの場合、テキストまたはHTMLとしてこのプロパティを返します。 |
|
このプロパティに値が関連付けられている場合、 |
|
現在のWebアプリケーションで定義されたアイコン・サービスを返します。 |
|
複数値を持つプロパティのインデックス付き名前を返します。たとえば、 |
|
プロパティのMIMEタイプが |
|
現在のプロパティのタイプが |
|
現在のプロパティのタイプが |
|
現在のプロパティのタイプが |
|
現在のプロパティのタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
現在のプロパティのタイプが |
|
現在のプロパティのタイプが |
|
プロパティのMIMEタイプが |
|
このプロパティが複数値を持つ場合、 |
|
現在のプロパティのタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
このプロパティが主要プロパティの場合、 |
|
このプロパティが必須の場合、 |
|
このプロパティが制限付きの場合、 |
|
プロパティのMIMEタイプが |
|
現在のプロパティのタイプが |
|
このプロパティがテキスト・ベース( |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
プロパティのMIMEタイプが |
|
例: |
|
プロパティの名前を返します。 |
|
この単一値プロパティのネストされたプロパティを取得して、プロパティのリストを返します。 |
|
このプロパティ値のデータ型を返します。たとえば、 |
|
このプロパティのURLサービスを返します。 |
|
このプロパティの値サービスを返します。 |
|
静的リストの要素を返します。例: <af:iterator var="listItem" value="#{node.propertyMap['ARTICLE_RGD:Paragraphs'].nestedProperties}" varStatus="vs"> <af:outputText id="ot1" value='#{listItem[0].value}'/> <af:outputText id="ot3" value="#{listItem[1].value}"/> </af:iterator> |
|
Site StudioデータをHTMLテキストとして返します。例:
要素名( |
表27-5 コンテンツ・アイテムのノード・プロパティ値のEL式
EL式 | 説明 |
---|---|
|
バイナリ・プロパティ・タイプまたは添付ファイルのカスタム属性を返します。
|
|
このプロパティの値を |
|
このプロパティの値を |
|
このプロパティの値を |
|
このプロパティの値を |
|
プロパティが複数値を持つ場合、プロパティのインデックスを返します。 例: |
|
このプロパティの値を 例: |
表27-6と表27-7で、コンテンツ・アイテムとプロパティに関連付けられたアイコンとURLを操作するためのEL式について説明します。
表27-6 コンテンツ・アイテムのノードまたはプロパティ・アイコンのEL式
EL式 | 説明 |
---|---|
|
大きいアイコンのイメージ・リソースのURLを返します。 例: |
|
小さいアイコンのイメージ・リソースのURLを返します。 例: |
表27-7 コンテンツ・アイテムのノードURLのEL式
EL式 | 説明 |
---|---|
|
バイナリ・コンテンツへのURLを作成します。ダウンロードを強制し、オペレーティング・システムはコンテンツ・タイプに基づいてコンテンツをレンダリングします。 例: |
|
バイナリ・コンテンツへのURLを作成します。コンテンツ・タイプに基づいてブラウザがコンテンツをレンダリングできるようにします。 デフォルトでは、 例: |
表27-8および表27-9に、コンテンツ・プレゼンタ・テンプレートでのグループ・ポータル情報の操作に使用できるEL式を示します。
表27-8 基本グループ・ポータル情報のEL式
EL式 | 説明 |
---|---|
|
現在のグループ・ポータルまたは指定したグループ・ポータルを作成したユーザーを返します。 |
|
現在のポータルまたは指定したポータルが作成された日時を表す |
|
|
|
現在のポータルまたは指定したポータルのデフォルト言語を返します。 |
|
現在のポータルに関連付けられた説明と表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、翻訳された名前は表示されません。 例: 財務活動に従事するすべての複合チームを評価します。 |
|
現在のポータルまたは指定したポータルに関連付けられた表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、ポータルが作成された名前が表示されます。 例: Web20Portalという名前のグループ・ポータルの表示名がWeb 2.0 Portalの場合、
これは、Web 2.0 Portalと評価されます。 |
|
現在のポータルまたは指定したポータルに関連付けられた一意のIDを返します。 |
|
現在のポータルまたは指定したポータルに関連付けられたアイコンへのURLを返します。 |
|
現在のポータルまたは指定したポータルに関連付けられた検索可能なキーワードのカンマ区切りリストを返します。 |
|
現在のグループ・ポータルまたは指定したグループ・ポータルが最後に更新された日時を表す |
|
現在のポータルまたは指定したポータルのロゴに関連付けられたイメージへのパスを返します。 |
|
通常、ポータルのバックエンドでプリティURLで使用される、現在のポータルまたは指定したポータルの名前を返します。 |
|
現在のポータルまたは指定したポータルのプリティURLを返します。 |
|
ポータルが閉じられているかどうかを示すブール値を返します。 |
|
ユーザーがポータルの存在を検索または「マイ・ポータル」のリストからの取得によって検出できるかどうかを示すブール値を返します。 |
|
ポータルが遮断されているかどうかを示すブール値を返します。 |
|
ポータルがRSSフィードを公開しているかどうかを示すブール値を返します。 |
|
ユーザーによるポータルのサブスクライブが許可されているかどうかを示すブール値を返します。 |
|
現在のポータルまたは指定したポータルからのサブスクライブ解除に承認が必要かどうかを表すブール値を返します。 |
表27-9 ポータルUI情報のEL式
EL式 | 説明 |
---|---|
|
現在のポータルまたは指定したポータルに関連付けられたページ・テンプレートのIDを返します。 |
|
現在のポータルまたは指定したポータルに関連付けられたリソース・カタログのIDを返します。 |
|
現在のポータルのページ・テンプレートに関連付けられたリソース・カタログのIDを返します。 |
|
現在のポータルに関連付けられたナビゲーション・モデルのIDを返します。 |
|
現在のポータルに関連付けられたADF Facesスキン・ファミリを返します。 |
|
ポータルのフッターが非表示かどうかを表すブール値を返します。 |
|
ポータルで使用する著作権メッセージを返します。 |
|
従っているプライバシ・ポリシー・ドキュメントのURLを返します。 |
コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。
各コンテンツ・アイテムは、コンテンツ・サーバーのリポジトリで定義された特定コンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・サーバーのプロファイル定義とSite Studioのリージョン定義にマップできます。タイプは、コンテンツ・サーバーで作成され、コンテンツ・アイテムのプロパティを定義します。コンテンツ・アイテムのコンテンツ・タイプのプロパティ名は、表示名とは異なり、コンテンツ・サーバーから取得する必要があります。詳細は、Oracle WebCenter Content Content Serverアプリケーション管理者ガイドのコンテンツ・タイプの管理に関する項を参照してください。
注意: RESTサービスを使用しても、コンテンツ・タイプのプロパティ名を取得できます。詳細は『Oracle Fusion Middleware Content Management REST Service開発者ガイド』を参照してください。 |
場合によっては、CSSファイルのような外部ファイルを表示テンプレートで参照する必要があります。このようなすべての参照では、Webアプリケーションのルートへの相対パスか絶対パスを指定します。例:
絶対パス – http://host:port/mypath/file.css
相対パス – /webcenter/mypath/file.css
外部ファイルに対するローカル参照は使用しないでください。第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」で説明されているように、外部ファイルへのローカル参照は、コンテンツ・プレゼンタ表示テンプレートのWebCenter Portalアプリケーションへのアップロードに含まれないため、動作しません。
カスタム表示テンプレートを使用してSite Studioリージョン定義要素を表示できます。たとえば、TITLE
、LEAD
、IMAGE
およびBODY
という4つの要素を持つRD_NEWS
というSite Studioリージョン定義があると仮定します。コンテンツ・プレゼンタ表示テンプレートでは、次のようなノード・プロパティEL式を使用して、これらの要素を参照できます。
#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}
例27-6は、こうしたSite Studioリージョン要素をcontentTemplateDef
定義に含める方法を示します。
例27-6 テンプレートにおけるSite Studioリージョン要素の参照
<dt:contentTemplateDef var="node"> <af:panelGroupLayout layout="vertical" id="pgl3"> <af:panelGroupLayout layout="horizontal" valign="top" inlineStyle="background-color:#FFF; padding:10px;" id="pgl4"> <af:panelGroupLayout layout="vertical" id="pgl2" valign="top"> <af:outputText value="#{node.propertyMap['dInDate'].value.calendarValue}" id="ot3" styleClass="bodytext" converter="javax.faces.DateTime"/> </af:panelGroupLayout> <af:spacer width="10px;" id="s1" inlineStyle="background-color:#DDD; color:white;"/> <af:panelGroupLayout layout="vertical" id="pgl1" valign="top"> <af:outputText value="#{node.propertyMap['xTargetGroup'].value}" id="ot12" inlineStyle="background-color:#0A9FC0; color:white; text-align:left; padding:5px;"/> <af:goLink text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" id="gil1" destination="#{'/faces/home/news-viewer?news_id='}#{node.propertyMap['dDocName'].value}" styleClass="newstitle"/> <af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}" id="ot2" styleClass="bodytext"/> </af:panelGroupLayout> <af:panelGroupLayout layout="vertical" id="pgl32" valign="top" styleClass="newsimage"> <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}" escape="false" id="ot1" inlineStyle="max-width:100px;"/> </af:panelGroupLayout> </af:panelGroupLayout> <af:panelGroupLayout layout="horizontal" id="aaaa"> </af:panelGroupLayout> </af:panelGroupLayout> </dt:contentTemplateDef>
複数のテンプレートでSite Studioリージョン要素を参照する方法を示す完全なエンドツーエンドの例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete
)を参照してください。
コンテンツ・タスク・フローでの表示テンプレートの使用の詳細は、第29.5項「コンテンツ・タスク・フローのページへの追加」および第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。Portal Frameworkアプリケーションへの表示テンプレートの統合の詳細は、第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」を参照してください。
注意: コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをPortal Frameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、 |
設計時または実行時にコンテンツ・プレゼンタ・タスク・フローを追加できます。設計時のJDeveloperを使用したコンテンツ・プレゼンタの追加の詳細は、第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」を参照してください。実行時のコンテンツ・プレゼンタの追加の詳細は、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章を参照してください。
この項では、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタでコンテンツ・プレゼンタ表示テンプレートを使用する方法を説明します。
注意: ローカルで構成されたJDev環境を使用してPortal Frameworkアプリケーションを開発する場合、アプリケーションでコンテンツ・プレゼンタ表示テンプレートを使用するには、第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」の説明に従ってポータル・リソースとしてエクスポートします。第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」で説明されているアップロード・タスクの実行は不要です。 |
この項では、ポータル・リソースとしてコンテンツ・プレゼンタ表示テンプレートをエクスポートする方法を説明します。この手順は、実行時にポータルおよびコンテンツ・プレゼンタにコンテンツ・プレゼンタ表示テンプレートを追加する際に必要です。
前述の第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」の説明に従ってコンテンツ・プレゼンタ表示テンプレートを作成します。
アプリケーション・ナビゲータで、コンテンツ・プレゼンタ表示テンプレート・ファイル(JSFFファイル)を右クリックし、「ポータル・リソースの作成」を選択します。
「ポータル・リソースの作成」ダイアログに入力します。このダイアログは、単一アイテムと複数アイテムのどちらのテンプレートを作成するかによって異なります。単一アイテムのテンプレートのダイアログは図27-6に示されています。複数アイテムのテンプレートのダイアログは図27-7に示されています。
通常は「ポータル・リソースの作成」ダイアログのデフォルト設定で十分ですが、「ビューID」フィールドに一意の値を入力する必要があります。「表示名」は、実行時に表示テンプレートのドロップダウン・メニューに表示される名前です。
ビューIDパラメータは人間が判読可能な形式を意図しているので、自動的には生成されません。たとえば、ビューIDを使用して、あるテンプレートを別のテンプレートからプログラムによって参照できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングし、選択されたタブの下で使用される単一アイテムのテンプレートをコールして、選択されたアイテムの詳細をレンダリングできます。また、たとえば、コンテンツ・プレゼンタ・タスク・フローのパラメータとしてビューIDを渡すことで、あるテンプレートを別のテンプレートに含めることができます。これを示す詳細な例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete
)を参照してください。第27.3.9項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。
単一アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。
テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。
コンテンツ・リポジトリ名 – デフォルトでは、ポータル・リソースは、アプリケーションのデフォルト・コンテンツ接続に関連付けられたリポジトリを使用します。ポータル内で使用するためにポータル・リソースをエクスポートする場合、ポータルの接続名で使用されるものと一致するリポジトリを選択する必要があります。
コンテンツ・タイプ – テンプレートが有効なコンテンツ・タイプを選択できます。メニューに表示されるコンテンツ・タイプのリストは、選択されたコンテンツ・リポジトリに応じて異なります。
コンテンツ・タイプのデフォルト・ビュー – 「True」に設定すると、表示テンプレートが、リポジトリとコンテンツ・タイプの所定の組合せに使用するデフォルト・テンプレートであることを指定します。
ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。
複数アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。
テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。
カテゴリ名 – 表示テンプレートのカテゴリに指定する名前。カテゴリを説明する名前を指定するか、「デフォルトのテンプレート」のカテゴリ名を使用できます。
カテゴリID – カテゴリのID。カテゴリ名として「デフォルトのテンプレート」を選択すると、このフィールドは読取り専用となり、oracle.webcenter.content.templates.default.categoryが設定されます。新しいカテゴリを作成する場合、この値には一意の文字列を指定できます。たとえば、oracle.webcenter.content.templates.pressrelease.categoryを指定できます。2つのリソースが同じIDを持つ場合、それらはユーザー・インタフェースで同じグループにまとめられます。
ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。
終了したら、ダイアログで「OK」をクリックします。
コンテンツ・プレゼンタ表示テンプレート(JSFF)ファイルを再度右クリックして、今回は「ポータル・リソースのエクスポート」を選択します。
「ポータル・リソースのエクスポート」ダイアログで、エクスポートしたポータル・リソース(JSPX)・ファイルを配置するディレクトリを入力するか参照します。このファイルはファイル・システムの任意の場所に配置できます。
「ポータル・リソースのエクスポート」ダイアログで「OK」をクリックします。
これで、コンテンツ・プレゼンタ表示テンプレートがポータル・リソースとしてエクスポートされたので、次の手順でそれをポータルにアップロードします。表示テンプレートのポータル・リソースをアップロードすると、ポータル・ページにコンテンツ・プレゼンタを追加するときに、表示テンプレートのリストから使用可能になります。
新しい表示テンプレートは、リソース・マネージャを含むデプロイ済のポータルまたはFrameworkアプリケーションにアップロードできます。アプリケーション管理者がコンテンツ・プレゼンタ表示テンプレートをポータルまたはFrameworkアプリケーションにアップロードするには:
注意: コンテンツ・プレゼンタ表示テンプレートおよびターゲット・アプリケーションを開発した設計時のFrameworkアプリケーションとポータルで、同じリポジトリ接続名と詳細にする必要があります。また、表示テンプレートの外部ファイルへの参照は、絶対パスまたは相対パス参照で指定する必要があります。第27.3.8項「表示テンプレートにおける外部ファイルの参照」を参照してください。 |
注意: WebCenter Portalインスタンス内の特定のポータルのスコープからのアップロードは、ポータルの管理ツールのアプリケーション・スコープからのアップロードとは異なります。詳細は、第55.1.5項「JDeveloperでのWebCenter Portalアセットの編集」の、アプリケーションレベル・リソースとポータルレベル・リソースの項を参照してください。 |
ポータルまたはFrameworkアプリケーションを開きます。
「管理」をクリックします。
管理者権限を持っている必要があります。
「共有アセット」を選択します。
「外観とレイアウト」の「コンテンツ・プレゼンタ」をクリックします。
図27-8に示された「アップロード」を選択します。
「新しいコンテンツ・プレゼンタのアップロード」ダイアログで、ファイル・システム上に保存したポータル・リソース・ファイルに移動します。
テンプレート・ファイルを選択したら、「OK」をクリックします。操作に成功した場合、「情報」ダイアログが「リソースは正常にアップロードされました。」というメッセージとともに表示されます。
図27-9に示すように、コンテンツ・プレゼンタ・テンプレートのリストから該当するコンテンツ・プレゼンタ表示テンプレートを見つけてそれを選択します。
テンプレートをユーザーに表示し、コンテンツ・プレゼンタで使用できるようにするには、「使用可能」チェック・ボックスを選択します。
これで、新しいコンテンツ・プレゼンタ表示テンプレートを、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタで使用する準備が整いました。
この項では、コンテンツ・プレゼンタを使用してコンテンツ・プレゼンタ表示テンプレートをテストする方法を説明します。
コンテンツ・プレゼンタ表示テンプレートを追加したポータルまたはFrameworkアプリケーションを現在実行中でない場合、これを起動します。このアプリケーションには、コンテンツ・プレゼンタが使用できるContent Server接続が必要です。ポータルでは、前の項で説明されている設定手順を完了したばかりの場合、「管理」ページの右上隅のポータルに戻るリンクをクリックします。
新しいコンテンツ・プレゼンタ表示テンプレートを使用するポータルまたはFrameworkアプリケーションに移動します。それを編集できる必要があることに注意してください。
オプションとして、表示テンプレートをテストするために新しいページを作成します。「ページ・アクション」メニューから「新規ページの作成」を選択します。次に、「保存」と「閉じる」を選択します。
新規ページまたは既存のページで、「ページ・アクション」メニューから「ページの編集」を選択します。
コンテンツ・プレゼンタを追加するページの部分で「コンテンツの追加」ボタンを選択します。
図27-10に示すように、「コンテンツの追加」ダイアログで「コンテンツ管理」フォルダを開きます。
「コンテンツの追加」ダイアログで、コンテンツ・プレゼンタの隣の「追加」ボタンをクリックします。
「コンテンツの追加」ダイアログを閉じます。
コンテンツ・プレゼンタ・ツール・バーでタスク・フローの「編集」アイコンを選択します(図27-11を参照)。
これが新しいページの場合、「コンテンツ」タブで1つ以上のコンテンツ・アイテムを選択します。
「コンテンツ・プレゼンタ構成」ウィンドウで、「テンプレート」タブを選択します。
図27-12に示されているように、「テンプレート」メニューからコンテンツ・プレゼンタ表示テンプレートを選択します。
このコンテンツ・プレゼンタ・テンプレートが、コンテンツ・プレゼンタ・インスタンスに適用されます。コンテンツ・プレゼンタと表示テンプレートの使用の詳細は、第29.2項「ドキュメント・タスク・フローの理解」と第27.2項「デフォルト表示テンプレートの使用」を参照してください。
この項の内容は、次のとおりです。
コンテンツ・プレゼンタ表示テンプレートを定義したら、コンテンツ・プレゼンタ・タスク・フロー・パラメータでコンテンツと表示テンプレートを指定して、アプリケーションのページにコンテンツ・プレゼンタ・タスク・フローを追加できます(第29.6項「コンテンツ・タスク・フローのパラメータの変更」と第27.2項「デフォルト表示テンプレートの使用」を参照)。
アプリケーションにドキュメント・サービスを統合する場合(第28章「ドキュメントの統合」を参照)、Oracle Fusion Middleware Oracle WebCenter Portalでのポータルの構築の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章で説明されているように、アプリケーションのエンド・ユーザーは「コンテンツ・プレゼンタ構成」ダイアログでコンテンツとコンテンツ・プレゼンタ表示テンプレートを選択して、アプリケーションの編集可能なページにコンテンツを含めることができます。「コンテンツ・プレゼンタ構成」ダイアログで公開する表示テンプレートをコンテンツ・プレゼンタが識別する方法については、第27.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」を参照してください。
実行時にユーザーが「コンテンツ・プレゼンタ構成」ダイアログでコンテンツを選択すると、コンテンツ・プレゼンタはリソース・マネージャをチェックして、選択されたコンテンツ・アイテムに適した表示テンプレートを識別し、ユーザーが選択できるように「コンテンツ・プレゼンタ構成」ダイアログの「テンプレート」ページに有効なテンプレートのリストを公開します。第9章「ポータル・リソース管理の概要」も参照してください。アップロードしたテンプレートも、選択可能になるように、リソースのリストで使用可能にする必要があります。詳細は、第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」を参照してください。
単一コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。
リソース・マネージャで、コンテンツ・アイテムのコンテンツ・リポジトリとコンテンツ・タイプに一致するテンプレート定義をチェックします。
デフォルトのコンテンツ・リポジトリ(*
)と指定のコンテンツ・タイプに一致するテンプレート定義を追加します。
継承されたコンテンツ・タイプに一致するテンプレート定義を追加します。
デフォルトのコンテンツ・リポジトリ(*
)とデフォルトのコンテンツ・タイプ(*
)に一致するテンプレート定義を追加します。
複数コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。
リソース・マネージャで、選択されたテンプレート・カテゴリに関連付けられたテンプレート定義をチェックします。
デフォルト・カテゴリ(*
)に関連付けられたテンプレート定義を追加します。
たとえば、ユーザーが複数コンテンツ・アイテム(フォルダの複数の子、検索の複数の結果など)を選択した場合、「コンテンツ・プレゼンタ構成」ダイアログには、コンテンツ・アイテムのリポジトリに基づいて、カテゴリのリストとそのカテゴリおよびデフォルト・カテゴリに関連付けられたテンプレートのリストが表示されます。
注意: 「コンテンツ・プレゼンタ構成」ダイアログでユーザーがテンプレートを選択すると、そのテンプレートを使用して実行中のアプリケーションで選択されたコンテンツ・アイテムが表示されます。後でなんらかの理由でそのテンプレートがリソース・マネージャから削除された場合、コンテンツ・プレゼンタは前述の優先順位に従ってコンテンツ・アイテムを表示するために最も一致度の高いテンプレートを自動的に選択します。 |
デフォルトでは、コンテンツ・プレゼンタはCMIS REST APIを使用して、ローカル(メモリー内)・キャッシュ用のコンテンツ・サーバーのコンテンツを表面化します。そのため、キャッシュ用にCoherenceを使用するには、まずそれを有効にする必要があります。本番環境ではCoherenceを使用することをお薦めします。これは、高可用性環境での要件です。
注意: ご使用のCoherenceのライセンスは、購入したライセンス・オプションによっては複数ノードの環境をサポートしない可能性があります。ライセンス契約の内容を確認するには、Oracle Fusion Middlewareライセンス情報のOracle Coherenceに関する項を確認してください。 |
Coherenceの構成ファイルを変更することで、WebCenterポータルおよびFrameworkアプリケーションの両方に対してCoherenceでのコンテンツ・キャッシュを有効にできます。WebCenter Portalでは、第27.7.1項「Coherenceの構成ファイルの変更」に記載されている手順に従うのみで実現します。Frameworkアプリケーションでは、追加の手順で構成ファイルをアプリケーション(EAR)のクラスパスまたはサーバーのシステム・クラスパスに追加する必要があります(詳細は、第27.7.2項「EARクラスパスへのCoherence構成ファイルの追加」参照)。
この項には次のサブセクションが含まれます:
Coherence構成ファイルのサンプル(例27-7)は、content-app-lib.ear
ファイル内に用意されています。このEARファイルは、ORACLE_HOME
/webcenter/modules/oracle.webcenter.content.integration_11.1.1/content-app-lib.ear
にあります。サンプル・ファイルの場所は、/content-app-lib.ear/
APP-INF/classes/sample-content-coherence-cache-config.xml
です。このファイルをコピーして名前をcontent-coherence-cache-config.xml
に変更し、ファイル(jar xvf content-app-lib.ear
)を開いて値をローカル・デプロイメントのニーズに合わせて設定できます。表27-10にこのファイル内のキャッシュ・エントリを示します。content-coherence-cache-config.xml
ファイルを変更したら、content-coherence-cache-config.xml
ファイルのみを含む.jarファイル(jar cvf portal-coherence.jar content-coherence-cache-config.xml
)を作成し、それを$DOMAIN_HOME/lib
にコピーしてシステム・クラスパスに設定します。
例27-7 Coherence構成ファイルのサンプル
<!DOCTYPE cache-config SYSTEM "cache-config.dtd"> <cache-config> <caching-scheme-mapping> <cache-mapping> <cache-name>repo.ucm.nodeUidCache.*</cache-name> <scheme-name>ContentNodeCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.nodePathToUidCache.*</cache-name> <scheme-name>ContentNodeCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.securityInfoCache.*</cache-name> <scheme-name>ContentNodeCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.typeNameCache.*</cache-name> <scheme-name>ContentTypeCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.typeNamesCache.*</cache-name> <scheme-name>ContentTypeCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>binaryCache.*</cache-name> <scheme-name>ContentBinaryCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.searchCriteriaCache.*</cache-name> <scheme-name>ContentSearchCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name> repo.ucm.indexedFieldsCache.*</cache-name> <scheme-name>ContentSearchCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.securityUserCache.*</cache-name> <scheme-name>ContentSecurityCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>repo.ucm.profileTriggerValueCache.*</cache-name> <scheme-name>ContentProfileCaches</scheme-name> </cache-mapping> <cache-mapping> <cache-name>binaryContentTypeCache.*</cache-name> <scheme-name>ContentBinaryCaches</scheme-name> </cache-mapping> </caching-scheme-mapping> <caching-schemes> <!-- The following schemes are all local. For a clustered deployment, a distributed, replicated, or other clustered scheme is recommended. See Coherence documentation for more information. --> <local-scheme> <scheme-name>ContentNodeCaches</scheme-name> <expiry-delay>1m</expiry-delay> <high-units>100</high-units> </local-scheme> <local-scheme> <scheme-name>ContentTypeCaches</scheme-name> <expiry-delay>30m</expiry-delay> <high-units>50</high-units> </local-scheme> <local-scheme> <scheme-name>ContentBinaryCaches</scheme-name> <expiry-delay>1m</expiry-delay> <high-units>100000</high-units> <unit-calculator> <class-scheme> <class-name>com.tangosol.net.cache.SimpleMemoryCalculator</class-name> </class-scheme> </unit-calculator> </local-scheme> <local-scheme> <scheme-name>ContentSearchCaches</scheme-name> <expiry-delay>5m</expiry-delay> <high-units>50</high-units> </local-scheme> <local-scheme> <scheme-name>ContentSecurityCaches</scheme-name> <expiry-delay>10m</expiry-delay> <high-units>50</high-units> </local-scheme> <local-scheme> <scheme-name>ContentProfileCaches</scheme-name> <expiry-delay>1h</expiry-delay> <high-units>100</high-units> </local-scheme> <!-- <class-scheme> <scheme-name>ContentDisabledCaches</scheme-name> <class-name>com.tangosol.util.NullImplementation$NullMap</class-name> </class-scheme> --> </caching-schemes> </cache-config>
表27-10 content-coherence-cache-config.xml内のキャッシュ・エントリ
キャッシュ・エントリ名 | 説明 |
---|---|
|
IDに基づいてリポジトリのノードのリストを格納します。このキャッシュ・エントリのサイズは、アクティブなリポジトリ内のノードの数に依存します。 このキャッシュは、ノード・データのリフレッシュ時期およびこのデータが他のアプリケーションから変更された回数に基づいて有効期限が切れます。 キー - ノードUID - 文字列 値 - コンテンツ・サーバー・ノード・オブジェクト |
|
パスに基づいてリポジトリのノードのリストを格納します。このキャッシュのサイズは、アクティブなリポジトリ内のノードの数に依存します。このキャッシュ・エントリは、ノード・データのリフレッシュ時期およびデータが他のアプリケーションから変更された回数に応じて有効期限が切れます。サイズおよび有効期限は、 キー - ノード・パス - 文字列 値 - ノードUID - 文字列 |
|
ノードのキャッシュ済セキュリティ情報を格納します。このキャッシュのサイズは、リポジトリ内のノードの数に依存します。このキャッシュは、ノード・セキュリティ・データの更新頻度に基づいて有効期限が切れます。 キー - ノードUID - 文字列 値 - ノードのセキュリティ情報 |
|
コンテンツ・タイプ情報をキャッシュします。このキャッシュのサイズは、リポジトリ内のタイプの数に依存します。このキャッシュは、タイプ情報のリフレッシュ時期およびタイプが他のアプリケーションから変更された回数に基づいて有効期限が切れます。 キー - コンテンツ・タイプUID - 文字列 値 - ContentTypeオブジェクト |
|
コンテンツ・サーバーが認識しているすべてのタイプ名をキャッシュします。すべてのタイプ名は同時に(単一キー)キャッシュされるため、同時に有効期限が切れます。 このキャッシュは、新しいタイプの作成または削除の頻度に基づいて有効期限が切れます。 キー - このキャッシュには1つのキー 値 - タイプ名の |
|
バイナリ・プロパティ・データをキャッシュします。リポジトリ構成プロパティ このキャッシュのサイズは、 このキャッシュは、バイナリ・データのリフレッシュ時期およびこのデータが他のアプリケーションから変更された回数に基づいて有効期限が切れます。 キー - ノードUIDおよびバイナリ・プロパティUID ( 値 - バイナリ・ストリーム・データ - |
|
コンテンツ・サーバーの検索文法に基づいて、パラメータへの検索問合せセットをキャッシュします。このキャッシュのサイズは、繰り返し実行されることが予想される一意の検索の数に依存します。 最終的に未使用の検索の有効期限が切れて、キャッシュ・メモリーを抑えるように、有効期限を設定する必要があります。 キー - 検索問合せパラメータのセット。 値 - コンテンツ・サーバー用語での検索問合せパラメータのセット。 |
|
リポジトリの索引付き(検索可能)システム・プロパティを保持します。このキャッシュには、次の3つのキーがあります。
このキャッシュは、索引付きフィールドの変更頻度に基づいて有効期限が切れます。 キー - 文字列 値 - |
|
ローカル・ユーザー名(現在のアプリケーション)とコンテンツ・サーバー内の同じユーザーの名前との間のマッピングをキャッシュします。このキャッシュのサイズは、同時ユーザーまたはよくアクセスするユーザー、あるいはその両方の数に依存します。 このキャッシュは、ユーザー・アイデンティティ・マッピングの更新頻度に基づいて有効期限が切れます。 キー - ローカル・ユーザーID - 文字列 値 - コンテンツ・サーバーのユーザーID - 文字列 |
|
ドキュメントが作成されたときに使用可能になるように、特定のプロファイルのプロファイル・トリガー値をキャッシュします。このキャッシュ内の最大エントリ数は、暗黙的にコンテンツ・サーバー・サーバー上のプロファイルの最大数に制限されます。キャッシュ・エントリは小さいサイズです。プライマリ・エントリで異なるのは有効期限です。これは、プロファイル・トリガー・フィールドの値がコンテンツ・サーバー内で変更される頻度に依存します。これらの値は、プロファイルがコンテンツ・サーバー・システム上で一旦構成されると変更されることはほとんどありません。そのため、有効期限を適切に設定する必要があります。 キー - コンテンツ・サーバー・プロファイル名 - 文字列 値 - コンテンツ・サーバーのプロファイル・トリガー値 - 文字列 |
次の手順は、Coherence構成ファイルを含むJARファイルをEARクラスパスに追加する方法を示しています。
注意: 次の手順は、Portal Frameworkアプリケーションにのみ必要です。 |
アプリケーションのsrc
ディレクトリの下に(例: WebCenterPortalCoherence/src
)、APP-INF/lib
という名前のディレクトリを作成し、そこに、content-coherence-cache-config.xm
のコンテンツを含むportal-coherence.jar
ファイルを配置します。
アプリケーションのアプリケーション・プロパティを開き、「デプロイ」を選択します。
EARファイルに含まれているプロファイルを編集します(図27-13を参照)。
Packaging
という名前の新しいファイル・グループを追加します。「型」はPackaging
のままにします。
アプリケーションをデプロイし、デプロイされた管理対象サーバーを再起動します。アプリケーションをデプロイしたら、Coherenceを有効にする必要があります。
Coherenceが実行中であることを確認するには、次をsetDomainEnv.sh
ファイルに追加します。
JAVA_OPTIONS="${JAVA_OPTIONS} -Dtangosol.coherence.management=all" export JAVA_OPTIONS
アプリケーションがデプロイされた管理対象サーバーを再起動した後、コマンドラインからjconsole
と入力し、WC_Spaces
に対応するプロセスを選択してJConsoleを開き、サーバーに接続します。JConsoleの「MBean」タブでCoherenceを確認します。
また、ログ・ファイルには次のような出力があります。
2013-06-26 14:45:47.321/1278.178 Oracle Coherence GE 3.6.0.4 <Info>
(thread=[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default
(self-tuning)', member=n/a): Loaded cache configuration from
"zip:/oracle/app/admin/domains/webcenter/servers/WC_CustomPortal/tmp/_WL_
user/WebCenterPortalCoherence_application1_
V2.0/i092wg/APP-INF/lib/portal-coherence.jar!/content-coherence-cache-config.xml"
コンテンツ・プレゼンタ表示テンプレートで表示するためにコンテンツ・ノードを取得すると、ほとんどのコンテンツ・アイテム・ノード・プロパティ値はノードとともに即座に取得されますが、一部の値は後で必要な場合のみロードされます。ノード・プロパティ値の選別的なロードは、パフォーマンスの違いをもたらすほか、ユーザーや開発者に透過的です。
コンテンツ・プレゼンタ表示テンプレートの開発者は、異なるプロパティ値がロードされたことに気付いた場合、テンプレートのパフォーマンスを最適化できます。たとえば、一般的なリストの表示テンプレートの場合、ノードを最初に取得したときに即座にロードされるプロパティのみを参照して、後で必要なときにロードされるプロパティを避けると、より高速にレンダリングされます。
2番目の考慮点は、ノードの取得方法(検索による方法と親IDによるフェッチする方法)によって決まります。検索(「問合せの結果」など)のためのノード取得時には即座にロードされるプロパティが、他の取得方法(「フォルダの下のコンテンツ」など)では後でロードされる可能性があります。表27-11は、取得メカニズム別に、ノード取得時にノード・プロパティが即座にロードされるかどうかを示しています。
表27-11に示されているノード・プロパティに関する情報は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』を参照してください。
表27-11 ノード取得メカニズム別のノード・プロパティのロード
OCSグローバル・プロファイル・プロパティ | ノードの初回取得時にロードするか | ||
---|---|---|---|
親IDによる取得(「フォルダの下のコンテンツ」) | 検索(「問合せの結果」) | UUIDによる取得(「単一のコンテンツ・アイテム」と「アイテムのリスト」) | |
|
N |
Y |
Y |
|
Y |
N |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
N |
Y |
|
Y |
Y |
Y |
|
Y |
N |
Y |
|
Y |
N |
Y |
|
Y |
N |
Y |
|
Y |
Y |
Y |
|
Y |
N |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
N |
Y |
|
Y |
Y |
Y |
|
N |
N |
Y |
|
Y |
Y |
Y |
|
N |
N |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
|
Y |
Y |
Y |
次の補足チュートリアルと例は、コンテンツ・プレゼンタの使用方法を示します。
「Using Content Presenter Templates」: Site Builderでリージョン定義を構築し、(Site Studioのリージョン・テンプレートではなく)コンテンツ・プレゼンタ・テンプレートの基礎としてそのリージョン定義を使用して、そのテンプレートをPortal Frameworkアプリケーション・ページに追加する方法について説明します。
http://yonaweb.be/webcenter_tutorial/using_content_presenter_templates
「UCM, Site Studio and Templates」: WebCenter Portal内のコンテンツのやり取りを行うコンポーネント(コンテンツ・サーバー、Site Studioおよびコンテンツ・プレゼンタ)について説明します。
「Content Presenter-CMIS-Complete」: コンテンツ・プレゼンタ・ベースのページや複雑なCMISおよびカスタム・テンプレートを使用して、フィルタリング可能なコンテンツ・リスト・ビューアを作成する手順を説明します。