WebCenter Sitesで配信されるコア・アセット・タイプは、基本的なサイト・デザイン・ロジックを提供します。テンプレート・アセットの作成方法は、「コンテキスト内編集およびプレゼンテーション編集用テンプレートのコーディング」を参照してください。テンプレート・アセットは他のアセットに割り当てるので、サイト・デザイン・アセット・タイプを作成する前にテンプレートを作成するのが一般的です。
どのタイプのアセットを使用する場合の手順も非常に似ており、『Oracle WebCenter Sitesの使用』で詳しく説明しています。この章では、コレクション、問合せ、ページの各アセット・タイプに固有の手順を紹介します。
1つのコレクション・アセットには、1つのタイプのアセットの順序付けリストが格納されます。コレクション・アセットを作成(または設計)するには、そのコレクション・アセットに名前を付け、それに対する問合せアセットを選択します。デフォルトでは、問合せアセットを3つまで選択できます。コレクション・アセットに対する問合せが、サイト・デザインでより多く必要な場合は、追加の問合せに対するアソシエーションをさらに作成できます。アソシエーションの作成の詳細は、「ベーシック・アセット・タイプの作成」の「 (オプション)アソシエーション・フィールドの構成」を参照してください。
コレクションでは、問合せアセットを使用して、そのコレクションに使用できるアセットのリストを取得します。コレクションを作成(または移入)するには、その問合せを実行し、問合せの結果からアセットを選択し、選択したアセットをランキングして順序付けます。このランキングされ、順序付けられたリストがコレクションです。
コレクションの使用は、レンダリングされたページに表示されるコンテンツを最新の状態に維持する方法の1つです。たとえば、複数のコレクションを使用するサイトを設定できます。アセットに表示するコレクションを選択する場合、パブリッシャまたはコンテンツ・コントリビュータは、次のいずれかを実行することで、そのアソシエーションによって識別されたコンテンツを変更できます。
ツリーから別のコレクションを選択します。
割り当てられたコレクションを作成し、その中で別のアセットを選択します。
この項には次のトピックが含まれます:
コレクション・アセットを作成する前に、次の点に注意してください。
コレクションには少なくとも1つの問合せが必要です。そのため、コレクションを作成する前に、必ず問合せを作成してください。
コレクションにテンプレートを割り当てるため、コレクション・アセットを作成する前にテンプレート・アセットも作成してください。
コレクションを作成する前に、それに割り当てられるテンプレート・アセットのコーディング方法を決定する必要があります。たとえば、コレクションに対して100個のアセットを選択しても、そのうちの5つのみを表示するようにテンプレートがコーディングされていると、次のようになります。
それらのアセットを表示するレンダリングされたページには、最初の5つしか表示されません。
ページには最初の5つしか表示されないにもかかわらず、WebCenter Sitesは100個のアセットをすべてソートする必要があるため、必要以上にページのレンダリングに時間がかかります。
コレクションの構築の詳細は、『Oracle WebCenter Sitesの管理』を参照してください。
コレクション・アセットは、Adminインタフェースを介して作成できます。
注意:
この手順を使用するには、作業するサイトに対してコレクション・アセット・タイプを有効にしておく必要があります。有効になっているかどうかは、手順4で確認できます。
コレクション・アセットを共有する前に、次の点を検討してください。
1つのサイトでコレクションを作成することによって、そのコレクションが共有先のすべてのサイトで作成されます。サイトによって異なるアセットが含まれるコレクションを作成することはできません。
共有コレクションで使用される問合せアセットは、そのコレクションの共有先のすべてのサイトに共有されるアセットのみを返すようにコーディングされる必要があります。
他の共有アセットと同様に、コレクションに割り当てられるテンプレートも他のサイトに共有されていることを確認してください。
アセットの共有の基本手順は、『Oracle WebCenter Sitesの管理』のブログ・アセットの共有に関する項を参照してください。
問合せアセットには、データベースから他のアセットのリストを取得するデータベース問合せが格納されます。ただし、問合せがコレクションに対して使用される場合、その問合せは1つのタイプのアセットしか返すことができません。
次の項では、問合せアセットについて説明します。
WebCenter Sitesでは、コレクション・アセットでの問合せの使用方法が、他のアセットの場合とは異なります。
コレクションを作成(移入)する場合は、1つ以上の問合せアセットを実行し、結果のリストから必要なアセットを選択して順序付けます。そのコレクションは、問合せの結果セットから選択したアセットの静的リストになります。
ページ・アセットに対する問合せを選択するには、非公式の関係と名前付きアソシエーションのいずれかを使用します。その他のアセット・タイプ(記事など)に対する問合せを選択するには、名前付きアソシエーションを使用します。
アセットがレンダリングされる際に、そのアセットによって問合せが直接呼び出されることはありません。アセットを書式設定するテンプレート・エレメントか、問合せを書式設定するテンプレート・エレメントのいずれかが、次のようなWebCenter Sitesの標準エレメントを呼び出すようにコーディングされます。
OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery
このエレメントが関連付けられているアセットがレンダリングされると、このエレメントによって問合せアセットが実行されます。つまり、その結果セットは動的になります。
問合せアセットは、次の2つの方法のいずれかでそのデータベース問合せを格納できます。
直接的。「問合せ」フォームの「SQL問合せ」フィールドに問合せを直接記述できます。問合せに対して標準SQLを使用することもできますが、WebCenter Sitesシステムで外部の検索エンジンを使用している場合は、適した検索エンジン問合せを使用することも可能です。
間接的。エレメント内に問合せを記述し、そのエレメントを「問合せ」フォームの「エレメント名」フィールドで指定することによって、問合せアセットにそのエレメントの場所を格納できます。問合せのエレメントには、その他のエレメントと同様に、XML、JSP、JavaScript、HTMLなどを使用できます。
次のコードは、News Wire Feedという名前の問合せの例です。この問合せは直接格納されます。つまり、「問合せ」フォームの「SQL問合せ」フィールドにSQL問合せが直接記述されます。
SELECT DISTINCT Article.id, Article.name, Article.updateddate, Article.subheadline, Article.abstract, Article.description, Category.description AS category, StatusCode.description AS statusdesc FROM Article, Category, AssetPublication, StatusCode WHERE Article.status!='VO' AND Article.category=Category.category AND Article.status=StatusCode.statuscode AND Category.assettype='Article' AND Article.source='WireFeed' AND Article.category='n' AND Article.id = AssetPublication.assetid AND AssetPublication.pubid = 968251170475 ORDER BY Article.updateddate DESC
問合せで使用する可能性のあるいくつかのWebCenter Sitesフィールドを次に示します。このうちの4つは前述のNews Wire Feed問合せの例で使用されています。
この項の残りの部分では、このリストに含まれるフィールドについて説明します。
status
すべてのアセットには、status
が含まれます。WebCenter Sitesでは、アセットを作成すると、そのタイプのアセットを保持する表に行が追加され、そのステータスは、作成済を示すPLに設定されます。
表23-1では、WebCenter Sitesで使用されるステータス・コードを一覧表示して定義しています。
表23-1 ステータス・コード
ステータス・コード | 定義 |
---|---|
PL |
作成済 |
ED |
編集済 |
RF |
受信済(たとえば、XMLPostから) |
UP |
Xcelerate 2.2からアップグレード済 |
VO |
削除済(void) |
これらのコードは、データベースのStatusCode
表に一覧表示されています。
WebCenter Sitesでは、アセットを削除すると、そのステータスがVOに変更され、「名前」フィールド内の文字列がそのオブジェクトIDに変更されます。
ステータスがVOであるアセットを除外するように問合せを記述してください。例: WHERE Article.status!='VO'
updateddate
updateddateフィールドの情報は、statusフィールドの情報が現在の状態に変更された日付を表します。サイトのデザインによっては、この日付に基づいてアセットを返す問合せを使用できます。
source
sourceフィールドは、アセットが最初に作成された場所を特定できる、WebCenter Sitesのデフォルトのフィールドです。これは、必須ではありません。
サイトへのソースの追加は、ツリー内の「管理」タブで行います。「ベーシック・アセット・タイプの作成」の「 (オプション)ソースの構成」を参照してください。
アセットでソースを使用する場合、ソースをパラメータとして使用する問合せを記述できます。前述のNews Wire Feed問合せの例では、AND Article.source='WireFeed'
文によって、「ソース」フィールドの値がWireFeedである記事のみがこの問合せによって選択されるようにしています。
category
categoryは、サイトに適用される規則に従ってアセットを分類できる、WebCenter Sitesのデフォルトのフィールドです。これは、必須ではありません。
たとえば、銀行サイトを使用している場合、Personal Finance、Banking and Loans、Rates and Bonds、Newsなどのカテゴリを使用できます。サイトへのカテゴリの追加は、ツリー内の「管理」タブで行います。「ベーシック・アセット・タイプの作成」の「(オプション)カテゴリの構成」を参照してください。
アセットでカテゴリを使用する場合、カテゴリをパラメータとして使用する問合せを記述できます。前述のNews Wire Feed問合せの例では、Article.category='n'
文によってニュース・カテゴリからの記事アセットが含まれます。
pubid
pubid
は、サイト(以前の用語ではパブリケーション)を識別する一意の値です。WebCenter Sitesでは、アセットを作成すると、そのアセットに関する情報がいくつかのデータベース表に書き込まれます。その1つは、AssetPublication
表です。
AssetPublication
表のアセットの行には、そのアセットが作成された対象サイトのpubid
が含まれます。アセットが共有されている場合、AssetPublication
表には、アセットが共有されているサイトごとに1つの行が含まれます。たとえば、記事アセットが2つのサイトで利用できる場合、AssetPublication
表のその記事に対して2つの行が存在することになります。
システム上に1つのWebCenter Sitesサイトしかない場合や、問合せ結果がサイト固有になる必要がない場合は、pubid
を考慮するように問合せをコーディングする必要はありません。ただし、問合せによって別のサイトからアセットが返されないようにするには、サイトのpubid
に基づいてアセットを制限するよう問合せをコーディングします。
startdateとenddate
いずれのサンプル・サイトでも、startdateフィールドとenddateフィールドは使用されていませんが、WebCenter Sitesデータベースにはその情報を格納するための列があります。これらのフィールドは、アセットに時間制限を割り当てることができるように用意されています。アセット・タイプでstartdateフィールドとenddateフィールドを使用すると、それらのフィールドに格納されている日付に基づいてアセットを選択する問合せを作成できます。
問合せアセットの作成を開始する前に、次の点を検討してください。
コレクション以外のアセットで使用される問合せアセットでは、テンプレートの使用は必須ではありません。識別、実行および結果の表示を行う問合せアセット専用にテンプレート・エレメントを作成することも、その処理を実行するようにページ・アセットのテンプレート・エレメントをコーディングすることもできます。
コレクションに対する問合せを記述する場合、そのアセット・タイプに必要なフィールドを選択するようにコーディングしてください。WebCenter Sitesは、アセット・タイプの必須フィールドからの情報を受け取るようにプログラムされているため、その情報をコレクションの作成フォームに表示できます。
コレクション専用の問合せアセットでは、テンプレートを使用する必要はありません。コレクションに割り当てられるテンプレート・エレメントによって、コレクションのアセット・リスト内のアセットが書式設定されます。
パフォーマンス上の理由から、効率的な問合せを作成してください。次に例を示します。
実行して問合せの結果を表示するエレメントにではなく、問合せにできるだけ多くのロジックを含めてください。たとえば、記事のリストをフィルタまたは制限する場合、リスト全体を返すように問合せをコーディングし、エレメント・コードを使用してそのリストを制限するのではなく、問合せによってフィルタまたは制限ステップが実行されることによって、完成されたリストがエレメントに返されるようにします。
問合せでは、エレメントによって表示される情報のみが返されるようにします。
コレクションに対する問合せアセットは、1つのタイプのアセットしか返すことができません。
問合せアセットを別のサイトと共有する場合は、次のヒントを検討してください。
問合せ結果がサイト固有になるようにする場合は、問合せによってアセットが共有先でないサイトに返されることがないように、pubid
にWHERE
句を含めてください。
たとえば、コレクションに対する問合せと静的サイトに対する問合せのいずれかで、次の文を使用できます。
WHERE AssetPublication.pubid = SessionVariables.pubid
これは、コレクションを作成する場合やディスクへのエクスポート機能を使用する場合には、必ずSessionVariables.pubid
を設定するためです。
問合せが動的サイトで使用される場合も、pubid
のIDをExecuteQuery
エレメントに渡すようにエレメントをコーディングするか、SessionVariables.pubid
変数を設定するようにエレメントをコーディングする場合、同じ文を使用できます。
ページ・アセットは共有できないため、問合せアセットによってページ・アセットが返される場合、それらの問合せアセットを共有しないでください。
他の共有アセットと同様に、問合せでテンプレートを使用する場合、問合せに割り当てられるテンプレートも他のサイトと共有されていることを確認してください。
まず、すべての問合せアセットに独自のテンプレートがあるとはかぎらないことに留意してください。問合せアセットがページ・アセットで使用されるように設計されていて、それが問合せを実際に書式設定するページ・アセットのテンプレートである場合、問合せをプレビューするためにページをプレビューする必要があります。
オンライン・サイトが動的サイトである場合(つまり、サーバーへのミラーリングのパブリッシュ方法を使用する場合)、パブリッシュされたアセットによっては、管理システムで問合せアセットによって返されるアセットが配信システムの場合とは異なる可能性があります。
そのため、問合せをプレビューしてそれを承認するかどうかを決定する場合、(プレビューに使用している)管理システム上でその問合せによって返されるアセットが、配信システムでパブリッシュ後にその問合せによって返されるアセットとは異なる可能性があることに留意してください。
ページ・アセットは、他のアセットに対する参照を格納し、設計者が実装しているデザインに従ってアセットを整理するサイト・デザイン・アセットです。
これらのページ・アセットは、サイトのセクション(基本的に、サイトの構造や構成)を表します。提供される可能性のあるレンダリング対象ページを1つずつすべて表すことはありません。この構造的構成は、主にWebCenter Sitesユーザーのために用意されています。これはサイトを整理するための唯一の方法ではありませんが、完成済のWebサイトに似た構造を編集者が確認する際に便利です。
一般的に、ページ・アセットはサイトの設計時に一度だけ作成します。コレクション、問合せ、記事などをページ・アセットに関連付け、ページ・アセットに関連付けるアセットのタイプを書式設定するテンプレート・エレメントをコーディングします。
ページ・アセットに対して正しいコンテンツを選択するには、サイトが構造化されるしくみと、ページ・アセットのテンプレート・エレメントが何を実行するように設計されているかに精通している必要があります。そのため、サイト開発者(エレメントをコーディングし、テンプレート・アセットを作成する担当者)がサイトのページ・アセットを作成するのが一般的です。
この項には次のトピックが含まれます:
ページ・アセット・モデルは、フレックス・アセット・モデルと似ています。これによって、ページ・アセットのデータ構造を変更できます。ページ・アセット・モデルは、次のアセット・タイプで構成されています。
ページ属性
ページ定義
ページ
ページ・アセット・モデルのいくつかの一般的な特性は次のとおりです。
ページ・アセットは、開発者が選択したページ属性によって表されます。
ページ・アセットの特性を決定するページ属性は、それ自体もアセットです。つまり、属性は、ワークフローを通じて渡す、編集する、リビジョン追跡によって監視するなど、あらゆるコンテンツ管理操作を対象とすることができます。
今後、(製品にはよくあることですが)属性をアセット・タイプに追加する必要が生じた場合は、新しい属性を作成して、それを適切な定義に割り当てるだけで済みます。
このアセット・モデルでは非常に多くの属性を持つアセットがサポートされているため、大量のデータ・セットをサポートできます。
ページ・アセット・モデルには、一般的なフレックス・ファミリのような親定義アセット・タイプも親アセット・タイプもなく、また、データの継承はサポートされていません。
詳細は、次のリンクを参照してください。
属性の設計については、「フレックス属性の設計」を参照してください。
注意: ページ・アセットに対しては、継承は適用されません。
ページ定義の設計については、「親定義とフレックス定義アセットの設計」を参照してください。
注意: ページ・アセットに対しては、「フレックス親定義」はサポートされていません。また、継承も適用されません。
ページ属性の作成については、「フレックス・アセット・ファミリの作成」の「フレックス属性の作成」を参照してください。
ページ・フィルタ・アセットの作成については、「フレックス・アセット・ファミリの作成」の「(条件付き)フレックス・フィルタ・アセットの作成」を参照してください。
ページ定義アセットの作成については、「フレックス・アセット・ファミリの作成」の「フレックス定義アセットの作成」を参照してください。
ページ・アソシエーションの作成については、「フレックス・アセット・ファミリの作成」の「(条件付き)フレックス・アセットのアソシエーションの作成」を参照してください。
ページ・アセットを作成するには:
WebCenter Sitesにログインして、作業するサイトを選択し、Oracle WebCenter Sites: Contributorインタフェースのアイコンを選択します。
ページに含めるアセット(記事、問合せ、イメージ、コレクションなど)を見つけてブックマークを付けます。次の手順を実行します。
「検索」フィールドに、アセットを特定する条件を入力して、虫めがねアイコンをクリックします。検索タブが開き、検索結果が表示されます。
検索結果リストで、ブックマークを付けるアセットを選択([Ctrl]キーを押しながらクリック)します。
検索タブのツールバーで、「ブックマーク」アイコンをクリックします。
この手順を繰り返し、アセットのすべてにブックマークを付け終わったら次の手順に進みます。
タブが開き、次のような検索結果が表示されます。
WebCenter Sitesに確認メッセージが表示されます。また、「ワーク」ツリーの「ブックマーク」ノードの下に、ブックマークを付けたアセットが一覧表示されます。
メニュー・バーで、「コンテンツ」→「新規」→ページ・アセットを選択します。この例では、avisportsサンプル・サイトで「ページ(ホーム)」アセット・タイプを使用します。
注意:
avisportsサンプル・サイトを使用する場合、「ページ」タイプのアセットがWebモードで開くように構成されています。したがって、「ページ(ホーム)」アセットの作成を選択すると、ページ(ホーム)の作成ダイアログ・ボックスが表示されます。
ページ(ホーム)の作成ダイアログ・ボックスで、次の手順を実行します。
「レイアウトの選択」フィールドで、ページに割り当てるレイアウトを選択します。
「名前」フィールドに、ページの名前を入力します。ページの名前付けの詳細は、手順4の4.aを参照してください。次に、「続行」をクリックします。
avisportsサンプル・サイトでは、作成するページ・アセットのタイプを選択すると、ページ定義が選択されます。ただし、作業しているサイトでこれが当てはまらない場合は、「ページ定義」フィールドが表示されます。このフィールドを使用して、作成するページのページ定義を指定し、「続行」をクリックします。フォーム・モードに切り替えます。アセットのツールバーで、「モード」スイッチをクリックします。手順4bに進みます。
アセットの「作成」ビューがフォーム・モードで表示されます。
ページ・アセットを作成します。
「名前」フィールドに、ページの名前を入力します。ページに関する説明的な名前を入力してください。64個までの英数字を入力できますが、先頭は文字にする必要があります。アンダースコア(_)とハイフン(-)は受け入れられますが、タブ文字と空白文字は受け入れられません。
ページ定義フィールド(該当する場合): avisportsサンプル・サイトでは、作成するページ・アセットのタイプを選択すると、ページ定義が選択されます。ただし、作業しているサイトでこれが当てはまらない場合は、「ページ定義」フィールドが表示されます。このフィールドを使用して、作成するページのページ定義を指定し、「続行」をクリックします。
「テンプレート」フィールドで、ドロップダウン・リストからテンプレートを選択します。
アイテムを追加するには、「ワーク」ツリーの「ブックマーク」ノードからアセットを選択し、選択したアイテムをフィールドにドラッグ・アンド・ドロップします。
アセットのツールバーで、「保存」をクリックします。
このページが保存されます。これが「未配置ページ」ページ・ノードの下の「サイト・ツリー」に表示されます。ページを配置するには、「ページ・アセットの配置方法」を参照してください。
未配置ページを配置するほかに、ページの配置フォームを使用して次の操作も実行できます。
同じ親ページ内で子ページの順番を変更します。
親ページ間で子ページを移動します。
親ページ間で子ページを移動するには:
Adminインタフェースを開きます。
「サイト・ツリー」で、「サイト・ナビゲーション」ノードを展開し、別の親ページの下に移動する子ページが含まれるサイト・ナビゲーション・ノードを展開します。
次の手順でページ・アセットをその親ページから除去します。
移動対象である子ページが存在する配置済ページで右クリックして、コンテキスト・メニューからページの配置を選択します。
ページの配置フォームが、右側の作業領域で開きます。
配置済の子ページのリストで、移動対象である子ページの横にある「除去」チェック・ボックスを選択します。
「保存」をクリックします。
子ページがサイト・ツリーの「未配置ページ」リストに移動します。
次の手順でページ・アセットをその新しい親ページの下に配置します。
サイト・ツリー内で、未配置の子ページの挿入先になる配置済ページで右クリックして、コンテキスト・メニューからページの配置を選択します。
ページの配置フォームが、右側の作業領域で開きます。
子ページ・アセットのリスト内での新しいページの位置を指定するために、未配置ページのリストで「ランク」フィールドに数字を入力します。位置指定番号の先頭は、リスト最上部の1になります。
「保存」をクリックします。
それまで未配置だったページ・アセットが、親アセットが含まれるサイト・ナビゲーション・ノードの下の、割り当てられたランクに移動します。
WebCenter Sitesには、アセットが(たとえば、作成者から、編集者、承認者、パブリッシャへと)チーム・メンバー間で引き継がれる際のアセットのフローを制御するワークフロー機能が用意されています。ワークフロー管理者は、サイト・ツリーにページ・アセットを配置できる人物や、どのワークフロー・ステップでその操作を実行できるかを制御するプロセスを作成できます。次の点に注意してください。
「ページの配置」ワークフロー権限によって、すべてのページの配置機能(「ページの配置」、「除去」および「ランク」)を制御します。
「ページの配置」の起動に使用する親ページと、「ランク」または「除去」を実行するあらゆる子ページの両方に対して適切な権限を持つ必要があります。
ワークフロー・プロセスの詳細は、『Oracle WebCenter Sitesの管理』を参照してください。
一般的に、既存のページ・アセットを編集する方法としては、次の2つがあります。
ページに含まれているアセットを変更しても、アセット・タイプは変更しません。たとえば、新しいアセットを「ブックマーク」から「次を含む」リストに移動する、異なるコレクション、問合せ、または記事を名前付きアソシエーション・フィールドから選択する、ページ・アセットに関連付けられているコレクションを異なるアセットが含まれるように再作成するなどです。
新しいアソシエーションを作成する、またはなんらかの方法でページ・アセットの実際の構造を変更します。
一定の間隔でページ上のコレクションまたは問合せ内のコンテンツを頻繁に変更する可能性がありますが、サイトの公開後にはアソシエーション、アセット・タイプ、またはページの構造を変更する可能性は低くなります。これによって、ページを書式設定するテンプレート・エレメント内のコードの編集が必要になることもあります。
サイトの設計フェーズでは、多くのページ・アセットの作成および削除を行う可能性があります。ただし、パブリッシュ済のサイトからページ・アセットを削除する前に、必ずその結果を理解してください。次に例を示します。
他のページ・アセットからそのページへの参照を除去しましたか。
他のページ・テンプレートのいずれかが、そのページ・アセットに関する情報をなんらかの形で抽出または使用するようにコーディングされていますか。
ページ・アセットを削除する前に、他のエレメントやページからそのアセットへのあらゆる参照を除去してください。ページ・アセットは、削除前に未配置にすることをお薦めします。