11 WebCenter Sitesデータベースでの作業
WebCenter Sitesのほぼすべてのものが、データベース表に行で表されます。WebCenter Sitesのモジュールおよび製品(たとえばOracle WebCenter Sites: Engage)には、必要な表のほとんどが用意されています。WebCenter Sitesデータベースでは、多種多様な表および列を操作します。
アセットを保持しない表におけるデータの管理については、「アセットを保持しない表内のデータ管理」を参照してください。
ノート:
WebCenter Sitesのデータベース表は、以前はカタログと呼ばれており、アプリケーション全体を通じて、表の名前、サーブレットの名前(CatalogManager)、データベース内のデータを操作する際に使用するJavaインタフェースにこの用語がまだ残っています。
独自のアプリケーションを開発する場合やアセットを保持しない表(たとえば、参照表)を開発する場合には、次のトピックが役立ちます。
データベース表のタイプ
WebCenter Sitesデータベースでは、オブジェクト、ツリー、コンテンツ、外部、システムの各表を使用します。
-
オブジェクト表: データをオブジェクトとして保持し、表の各行に一意のIDを自動的に提供します。
-
ツリー表: オブジェクト表の中のオブジェクト間の関係についての階層情報を保持します
-
コンテンツ表: 水平データを保持しますが、各行に一意のIDを提供することはありません
-
外部表: 次のいずれかとなります。
-
WebCenter Sitesデータベースの外側にあるが、そのWebCenter Sitesからアクセスできる表。
-
WebCenter Sitesデータベースの中にあるが、そのWebCenter Sitesが作成したのではない表。
-
-
システム表: WebCenter Sitesのコア・アプリケーションの表で、そのスキーマを変更できないもの。
WebCenter Sitesは、外部表を含めたWebCenter Sitesデータベースの任意の表に対する問合せから、結果セットをキャッシュできます。
この項には次のトピックが含まれます:
オブジェクト表
オブジェクト表は、データをオブジェクトとして格納するもので、階層で表すことができます。これらのオブジェクトのロード、保存および管理には、CatalogManager APIを使用できます。アセット・タイプの表はオブジェクト表です。
オブジェクト表の主キーは常にID (id
)列で変更できません。オブジェクト表を追加するようにWebCenter Sitesに指示すると、その表にID列が作成されます。IDは、表に行が追加されるにつれて、デフォルトで各行に割り当てられる一意の識別子です。たとえば、だれかが新しいアセットを作成すると、WebCenter SitesではIDが決定され、そのアセットのIDとしてその値が割り当てられます。
(アセットなどの)オブジェクトに割り当てられたIDは変更できません。
ノート:
AssetMakerまたはフレックス・ファミリ・メーカーで新しいアセット・タイプのオブジェクト表を作成するときには、デフォルトで追加の列がいくつか作成されます。ベーシック・アセット表内のデフォルトの列については、「ベーシック・アセット・タイプのデータベース表のデフォルトの列」を参照してください。
IDの生成はWebCenter Sitesによって処理されるため、オブジェクト表を使用して、格納するデータの各行が一意に識別されることを確認してください。
オブジェクト表(カタログ):の例
-
アセットを保持するすべての表
-
パブリッシュ表の多く
-
訪問者のデータを保持するEngageの表
ツリー表
ツリー表には、オブジェクト表間の階層関係についての情報が格納されます。言い換えれば、オブジェクト表は階層で表すことができますが、その階層自体はツリー表に格納されます。つまり、階層がツリーであるということです。
たとえば、WebCenter Sitesでは、WebCenter Sitesデータベースに次の表が追加されます。
-
AssetRelationTree
: アセット間のアソシエーションについての情報を格納します。これらのアソシエーションによって親子関係が作成されます。アセットのアソシエーションの詳細は、「フレックス・アセット・モデル」を参照してください。 -
SitePlanTree
: ページ・アセットとそれらのアセットから参照されるアセットの間の親子関係についての情報を格納します。この情報は、WebCenter Sitesのインタフェースに提示される「サイト・ナビゲーション」タブにグラフィカルに提示されます。
ツリー表の各行は、そのツリーのノードです。ツリー表の各ノードは、次の2つの場所を指しています。
-
オブジェクト表内のオブジェクト、つまりオブジェクト表が表すオブジェクト
-
そのツリー表の中の親ノード、ただし最上位のノードで親がない場合は除く
言い換えれば、オブジェクト自体はオブジェクト表に格納されます。データベース内の他のオブジェクトとの関係(ツリーで記述)は、ツリー上のノードとしてツリー表に格納されます。子ノードは親ノードを指しますが、親は子を指しません。
ツリー表を作成すると、表11-1に示す列がデフォルトで設定されます。これらの列を変更したり、新しい列を作成したりすることはできません。
表11-1 デフォルトの列
列 | 説明 |
---|---|
|
ノードのID。これが主キーです。 |
|
ノードの親ノードのID。 |
|
対等なノードまたは兄弟関係にあるノードをランク付けした数字。たとえば、 |
|
ノードのオブジェクト・タイプ。たとえば、 |
|
ノードが参照するオブジェクトのID。 |
|
将来の使用のために予約されています。 |
|
表の用途というコンテキストで、意味のある文字列を保持します。たとえば、 |
コンテンツ表
コンテンツ表には、データが(オブジェクトでなく)水平データとして格納され、その情報は階層に編成できません。コンテンツ表は、簡易参照表として使用します。たとえば、次に示すのは、WebCenter Sitesデータベースに追加するコンテンツ表のほんの一部です。
-
Source
: 記事またはイメージのアセットのソースを特定するために使用される文字列を格納します。 -
Category
: 様々な方法でアセットを編成するために使用されるコードを保持します。 -
StatusCode
: アセットのステータスを表すコードを保持します。
これら3つの表はすべて、アセット・タイプ表(オブジェクト表)の様々な列の値を参照するために製品で使用される参照表です。
別の例では、WebCenter Sitesは、MimeType
というコンテンツ表も追加します。この表には、スタイルシート・アセット・タイプおよびイメージファイル・アセット・タイプの「Mimetype」フィールドに表示されるMIMEタイプ・コードが保持されます。これらのアセット・タイプの「Mimetype」フィールドは、MimeType
表に対し、その表のkeyword
列に基づいて、MIMEタイプ・コードを問い合せます。
コンテンツ表の主キーの設定
コンテンツ表を作成したときには、ID列は作成されず、主キーがIDである必要もありません。これも、コンテンツ表とオブジェクト表の大きな違いです。
wcs_properties.json
ファイルのcc.contentkey
プロパティは、すべてのコンテンツ表のデフォルトの主キーの名前を指定しています。コンテンツ表を新規作成するときには、cc.contentkey
プロパティで指定された名前の列を定義する責任があります。ただし、特定のコンテンツ表の主キーのIDは、wcs_properties.json
ファイル内にカスタム・プロパティを追加および設定することによってオーバーライドできます。このプロパティは、次のフォーマットを使用する必要があります。
cc.tablenameKey
たとえば、Books
というコンテンツ表を作成し、デフォルトの主キーをオーバーライドして、かわりにISBN
列を使用するようにする場合は、cc.BooksKey
というプロパティを追加してISBN
に設定します。
外部表
外部表とは、WebCenter Sitesで全面的に管理しているわけではない表です。たとえば、サイト・ページでは、ERPシステムで移入される表に対して問合せが実行され、WebCenter Sitesでは、その情報がサイトの訪問者に表示されます。
WebCenter Sitesは、独自のオブジェクト表やコンテンツ表の場合とまったく同じように、外部表に問い合せて結果セットをキャッシュできます。ただし、まずWebCenter Sitesに対してその外部表を特定することが必要で、そのためには、SystemInfo
表にその外部表の行を追加します。これは、SystemInfo
表で情報を変更する唯一の機会です。また、問合せ先の表が外部システムによって更新された場合は必ず、CatalogManagerのflushcatalog
タグを使用して、WebCenter Sites結果セットのキャッシュをフラッシュしてください。そうしないと、それらの表に対してキャッシュされた結果セットが、最新のものでなくなる可能性があります。
結果セットのキャッシングの詳細は、「結果セットのキャッシングと問合せでの作業」を参照してください。
システム表
システム表はコアで、スキーマが固定されたWebCenter Sitesの表です。それらは独自のクラスによってWebCenter Sitesに実装され、他の表が従う(キャッシングなどの)ルールに従いません。
Explorerツールを使用して一部のシステム表に行を追加できますが、これらの表内の行はどのような方法でも追加または変更できません。データベースにシステム表を追加することもできません。
この表は、WebCenter Sitesのシステム表を一覧表示および定義しています。
表11-2 システム表
表 | 説明 |
---|---|
|
システムで使用されるXMLエレメントまたはJSPエレメントをすべて一覧表示します。エレメントとは、コードのうち名前の付いた断片です。 |
|
WebCenter Sitesで提供されている各ページまたは各ページレットへのページ参照を一覧表示します。 |
|
WebCenter Sitesシステム用に作成されたアクセス制御リスト(ACL)のそれぞれに行があります。ACLはデータベース表に対する権限のセットです。 |
|
WebCenter Sitesで管理されているイベントのそれぞれに行があります。イベントは、あるスケジュールに従って行われるアクションを表しています。 WebCenter Sitesでは、 |
|
WebCenter Sitesデータベースの中にあるすべての表を一覧表示し、さらにWebCenter Sitesで参照する必要のある外部表があればそれも一覧表示します。 |
|
WebCenter Sitesデータベースの外側にあるが、そのWebCenter Sitesからアクセスできる(アクセス制御を含めた)Javaクラスを登録します。 |
|
必要な数のページまたはページレットで再利用できるSQL問合せを保持します。この表にSQL問合せを格納して、 |
|
電子メール・アドレスなど、ユーザーに関する属性情報を格納します。この表は、LDAPでは使用されません。 |
|
ページ、機能および表へのアクセスを許可されたすべてのユーザーを一覧表示します。この表は、LDAPでは使用されません。 |
表のタイプの特定
WebCenter Sitesデータベース内の任意の表の表タイプを判別するには、SystemInfo
表を調べます。これは、データベース内のすべての表を一覧表示するシステム表です。
表タイプを判別するには:
- Explorerを開き、WebCenter Sitesデータベースにログインします。
SystemInfo
表をダブルクリックします。- 表のリストで、
systable
列を調べます。この列の値によって、表11-3に表される表のタイプが特定されます。
表11-3 表タイプの判別
systable列の値 | 定義 |
---|---|
|
システム表 |
|
コンテンツ表 |
|
オブジェクト表 |
|
ツリー表 |
|
外部表 |
ノート:
自分のユーザー名に割り当てられた適切なACLがない場合、SystemInfo
表を開いて調査することはできません。
列(フィールド)のタイプ
WebCenter Sitesデータベース用に作成する表では、列のフィールド(列)タイプとして汎用、データベース固有およびWebCenter SitesのURLを指定できます。
次のトピックを参照してください。
汎用的なフィールド・タイプ
汎用的なフィールド・タイプとは、WebCenter SitesでサポートされているいずれのDBMSでも機能するフィールド・タイプのことです。これらは、JDBC規格に準拠するようにマップされます。したがって、WebCenter Sitesシステムが別のDBMSに変わっても、現在使用しているデータベースは引き続き有効となります。
汎用的でJDBCに準拠したフィールド・タイプを使用している場合は、表の中のデータを変更および保持するために、CatalogManager API (CATALOGMANAGER
というXMLタグまたはJSPタグ、あるいはics.CatalogManager
というJavaメソッド)を使用します。
次の表には、WebCenter Sitesの汎用的なフィールド・タイプ、およびそのデータ型を定義する(wcs_properties.json
ファイル内の)データベース・プロパティの詳細なリストが含まれています。ExplorerツールまたはCatalogManager APIを使用して新しい表を作成する場合は常に、このリストを参照します。
表11-4 フィールド・タイプ
フィールド・タイプ | 説明 | プロパティ |
---|---|---|
|
文字数が正確にnであることを示す短縮文字列。 |
|
|
文字数が最大でnであることを示す短縮文字列。たとえば、 |
および
( |
|
日付と時刻の組合せ。 |
|
|
|
|
|
1つのバイナリ・ラージ・オブジェクト( |
|
|
16ビットの整数、つまり、-32,768から+32,767までの整数。 |
|
|
32ビットの整数、つまり、-2,147,483,648から+2,147,483,647までの整数。 |
|
|
64ビットの整数、つまり、最大で19桁の整数。 |
|
|
浮動小数点式の数(実数)で、有効桁の合計数がL、そのうちP桁が小数。たとえば、 |
|
|
倍精度タイプ。 |
|
列タイプを定義することに加えて、表11-5に示すように、列に対する制約のうち、該当する列に当てはまるものがどれであるかを指定する必要があります。
表11-5 列の制約
制約 | 説明 |
---|---|
|
NULL値を保持できます。つまり、空にしておくことができます。 |
|
NULL値を保持できません。つまり、空にしておくことができません。 |
|
この表で間違いなく一意となる値を保持する必要があります。 |
|
コンテンツ表の主キー列にマークを付けます。オブジェクト表では、列に対してこの制約を設定しないでください。 |
AssetMakerを使用して新規のアセット・タイプのオブジェクト表を作成する場合、またはフレックス属性を作成する場合は、それらのアイテムのデータ型は、ここに一覧表示されているものとは異なります。
「列の記憶域のタイプ」および「属性のデータ型」を参照してください。
データベース固有のフィールド・タイプ
表ではデータベース固有のフィールド(列)タイプを使用できます。ただし、ある種類のDBMSに固有のフィールド・タイプ(つまり、JDBC規格にマップされていないタイプ)を使用する場合は、次の点に注意してください。
-
これらの表に対しては、CatalogManager APIを使用できない場合があります。
-
DBMSを変更することがあれば、表も変更する必要があります。
使用しているDBMSに固有のフィールド・タイプの詳細なリストについては、そのDBMSのドキュメントを参照してください。
WebCenter SitesのURLフィールドを使用した間接的なデータ格納
WebCenter Sitesデータベース内のオブジェクトおよびコンテンツ表には、列にデータを間接的に格納できるという独特の特性があります。大規模なデータをDBMSに外部的に格納できますが、これはデータ・リポジトリ内です。
そのような列を作成するには、先頭の文字をurl
にした列名を使用する必要があります。列名の最初の3文字にurl
を使用すると、WebCenter Sitesでは、その列が間接的なデータ列として扱われます。
次の理由に該当する場合は、URLフィールドを使用してください。
-
使用しているDBMSが、そこに格納しようとしているデータのサイズに対応できるほど大きなフィールドをサポートしていないとき
-
使用しているDBMSが、格納しようとしているデータを含めるための個々の表で十分なフィールドをサポートしていない場合
-
フィールドのサイズが大きいと、データ選択のパフォーマンスが低下するため
ノート:
URL列に格納しようとしているデータのサイズが、
wcs_properties.json
ファイルのcc.maxvarcharsize
プロパティに設定された値を超過している場合は、そのデータは、データベース内のポインタによって参照されるファイルとして間接的に格納されるのではなく、データベースに格納されます。
デフォルトのストレージ・ディレクトリ(defdir)
URL列のある表では、デフォルトのストレージ・ディレクトリがその列に指定されている必要があります。このディレクトリは、その列に入力された値が実際に格納される場所です。
デフォルトのストレージ・ディレクトリという言い回しは、製品のいくつかの箇所ではdefdirという言葉に短縮されています。たとえば、SystemInfo
表のdefdir
列には、URL列のある表のデフォルトのストレージ・ディレクトリの名前が保持されます。AssetMakerユーティリティのフォームのいずれかには、defdirフィールドなどが提示されます。
URLフィールドに入力された値は、表のdefdir
設定の値に付加されるため、実質的にはファイルの相対パスです。作成する表のdefdir
値をどのように設定するかは、使用しているアプリケーションや作業内容によって異なります。
-
CatalogManager APIを使用してWebCenter Sitesの表を新規作成する場合は、
uploadDir
引数を使用してdefdir
の値を設定します。 -
ベーシック・アセット・タイプを新規作成する場合は、「AssetMaker」フォームの「defdir」フィールドで
defdir
の値を指定します。ベーシック・アセットを保持しているすべての表にはURL列があり、defdir
の値が設定されている必要があります。 -
フレックス・アセット・タイプを新規作成する場合は、フレックス・アセットの
_Mungo
表で、URL列のdefdir
の値を指定しないでください。この値は、WebCenter Sitesのアプリケーションがインストールされたときに設定されたプロパティから取得されます。そのプロパティの値は変更しないでください。ノート:
URL列のある表が作成された後は、いかなる方法によっても、表の
defdir
設定を変更しようとしないでください。変更した場合、ストレージ・ディレクトリとURL列の間のリンクが断たれ、データを取得できなくなります。
URLフィールドの作成については、次の手順と例を参照してください。
-
「フレックス・アセット・ファミリの作成」の例5-3からの、ベーシック・アセット・タイプのアップロード・フィールド例。
-
「フレックス・アセット・ファミリの作成」の(「タイプBlobのフレックス属性(アップロード・フィールド)の作成」)に記述されている、
blob
型のフレックス属性を作成するためのアップロード・フィールドの例。
システム表への追加について
システム表を作成することはできませんが、Explorerツールを使用して一部のシステム表に行を追加することはできます。これらの各表に情報を追加する方法は様々です。
表11-6 情報をシステム表に追加する方法
表 | 情報を追加する方法 |
---|---|
|
この表にページ・エントリを追加する方法はいくつかあります。
ページ・エントリのページ・キャッシュ設定を設定または変更する場合は、Explorerを使用するよりも、WebCenter Sitesインタフェースでフォームを使用する方が簡単です。 |
|
この表にエレメントを追加する方法はいくつかあります。
エレメントおよびページのコーディングについては、「テンプレートおよびCSElementのエレメントのコーディング」を参照してください。 |
|
User Access Managementノード内のACLフォーム。 |
|
WebCenter Sitesでは、 |
|
この表に情報を追加することも、この表の情報を変更することもしないでください。 このルールに対する唯一の例外は、WebCenter Sitesに外部表を認識させる場合です。 |
|
Explorerツール。 用意されている様々な種類の問合せについては、「結果セットのキャッシングと問合せでの作業」を参照してください。 |
|
User Access Managementノード内のユーザー・フォーム。 |
|
User Access Managementノード内のユーザー・フォーム。 |
プロパティ・ファイルおよびデータベースについて
wcs_properties.json
ファイルのデータベース・プロパティは、WebCenter Sitesデータベース接続を構成する場合に役立ちます。これらのプロパティを使用して、データベースとアプリケーション・サーバーとの間に権限付きおよび権限なしのユーザー接続を確立します。
データベース・プロパティは、WebCenter Sitesをインストールしたときに、自分のシステム用に構成されたものです。デフォルトでは、wcs_properties.json
ファイルで特定されているすべてのコマンドが、WebCenter Sitesデータベース上で動作します。wcs_properties.json
ファイル内のプロパティにアクセスするには、WebCenter Sites Adminインタフェース内のプロパティ管理ツールを使用します。