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 デフォルトの列

説明

nid

ノードのID。これが主キーです。

nparentid

ノードの親ノードのID。

nrank

対等なノードまたは兄弟関係にあるノードをランク付けした数字。たとえば、AssetRelationTree表はこの列を使用して、コレクションの中にあるアセットの順序を決定します。

otype

ノードのオブジェクト・タイプ。たとえば、SitePlanTree表では、otypeは、pageというアセット・タイプ、またはサイトの名前(publication)です。AssetRelationTree表では、otypeはアセット・タイプであり、そのタイプのアセットのオブジェクト表の名前です。

oid

ノードが参照するオブジェクトのID。

oversion

将来の使用のために予約されています。

ncode

表の用途というコンテキストで、意味のある文字列を保持します。たとえば、SitePlanTreeでは、ノードが参照するページ・アセットが配置されているかどうかに基づいて、ncodeplacedunplacedのいずれかに設定されます。AssetRelationTreeでは、ncodeにアソシエーションの名前が保持されます。

コンテンツ表

コンテンツ表には、データが(オブジェクトでなく)水平データとして格納され、その情報は階層に編成できません。コンテンツ表は、簡易参照表として使用します。たとえば、次に示すのは、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 システム表

説明

ElementCatalog

システムで使用されるXMLエレメントまたはJSPエレメントをすべて一覧表示します。エレメントとは、コードのうち名前の付いた断片です。

SiteCatalog

WebCenter Sitesで提供されている各ページまたは各ページレットへのページ参照を一覧表示します。

SystemACL

WebCenter Sitesシステム用に作成されたアクセス制御リスト(ACL)のそれぞれに行があります。ACLはデータベース表に対する権限のセットです。

SystemEvents

WebCenter Sitesで管理されているイベントのそれぞれに行があります。イベントは、あるスケジュールに従って行われるアクションを表しています。

WebCenter Sitesでは、APPEVENTタグとEMAILEVENTタグのいずれかを使用してイベントを設定すると、この表に行が挿入されます。

SystemInfo

WebCenter Sitesデータベースの中にあるすべての表を一覧表示し、さらにWebCenter Sitesで参照する必要のある外部表があればそれも一覧表示します。

SystemSeedAccess

WebCenter Sitesデータベースの外側にあるが、そのWebCenter Sitesからアクセスできる(アクセス制御を含めた)Javaクラスを登録します。

SystemSQL

必要な数のページまたはページレットで再利用できるSQL問合せを保持します。この表にSQL問合せを格納して、ics.CallSQLメソッド、CALLSQL XMLタグ、ics:callsql JSPタグを使用して、それらの問合せを起動できます。次に、SQL問合せを変更する必要がある場合は、一度変更するのみで済みます。

SystemUserAttr

電子メール・アドレスなど、ユーザーに関する属性情報を格納します。この表は、LDAPでは使用されません。

SystemUsers

ページ、機能および表へのアクセスを許可されたすべてのユーザーを一覧表示します。この表は、LDAPでは使用されません。

表のタイプの特定

WebCenter Sitesデータベース内の任意の表の表タイプを判別するには、SystemInfo表を調べます。これは、データベース内のすべての表を一覧表示するシステム表です。

表タイプを判別するには:

  1. Explorerを開き、WebCenter Sitesデータベースにログインします。
  2. SystemInfo表をダブルクリックします。
  3. 表のリストで、systable列を調べます。この列の値によって、表11-3に表される表のタイプが特定されます。

表11-3 表タイプの判別

systable列の値 定義

yes

システム表

no

コンテンツ表

obj

オブジェクト表

tree

ツリー表

fgn

外部表

ノート:

自分のユーザー名に割り当てられた適切な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 フィールド・タイプ

フィールド・タイプ 説明 プロパティ

CHAR(n)

文字数が正確にnであることを示す短縮文字列。

cc.char

VARCHAR(n)

文字数が最大でnであることを示す短縮文字列。たとえば、VARCHAR(32)とすると、この列には最大で32文字を保持ができるという意味になります。

cc.varchar

および

cc.maxvarcharsize

(cc.varcharに設定できる最大値は、cc.maxvarcharsizeプロパティの値によって異なります。)

DATETIME

日付と時刻の組合せ。

cc.datetime

TEXT

LONGVARCHAR: 最大2,147,483,647文字の可変長文字列

cc.bigtext

IMAGE

1つのバイナリ・ラージ・オブジェクト(blob)。

cc.blob

SMALLINT

16ビットの整数、つまり、-32,768から+32,767までの整数。

cc.smallint

INTEGER

32ビットの整数、つまり、-2,147,483,648から+2,147,483,647までの整数。

cc.integer

BIGINT

64ビットの整数、つまり、最大で19桁の整数。

cc.bigint

NUMERIC(L,P)

浮動小数点式の数(実数)で、有効桁の合計数がL、そのうちP桁が小数。たとえば、NUMERIC(5,2)は、806.35のような数値を表すことはあっても、25693.2283のような数値は厳密に表せません。

cc.numeric

DOUBLE

倍精度タイプ。

cc.double

列タイプを定義することに加えて、表11-5に示すように、列に対する制約のうち、該当する列に当てはまるものがどれであるかを指定する必要があります。

表11-5 列の制約

制約 説明

NULL

NULL値を保持できます。つまり、空にしておくことができます。

NOT NULL

NULL値を保持できません。つまり、空にしておくことができません。

UNIQUE NOT NULL

この表で間違いなく一意となる値を保持する必要があります。

PRIMARY KEY NOT 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フィールドの作成については、次の手順と例を参照してください。

システム表への追加について

システム表を作成することはできませんが、Explorerツールを使用して一部のシステム表に行を追加することはできます。これらの各表に情報を追加する方法は様々です。

表11-6 情報をシステム表に追加する方法

情報を追加する方法

SiteCatalog

この表にページ・エントリを追加する方法はいくつかあります。

  • Templateアセットを作成すると、WebCenter Sitesでは、SiteCatalog表で、そのアセットに対するページ・エントリが自動的に作成されます。

  • SiteEntryアセットを作成すると、WebCenter Sitesでは、SiteCatalog表で、そのアセットに対するページ・エントリが自動的に作成されます。

ページ・エントリのページ・キャッシュ設定を設定または変更する場合は、Explorerを使用するよりも、WebCenter Sitesインタフェースでフォームを使用する方が簡単です。

ElementCatalog

この表にエレメントを追加する方法はいくつかあります。

  • Templateアセットを作成すると、WebCenter Sitesでは、ElementCatalog表で、そのアセットに対するエントリが自動的に作成されます。

  • CSElementアセットを作成すると、WebCenter Sitesでは、ElementCatalog表で、そのアセットに対するエントリが自動的に作成されます。

  • Explorerツールを使用して、アセット以外のエレメントを追加できます。

エレメントおよびページのコーディングについては、「テンプレートおよびCSElementのエレメントのコーディング」を参照してください。

SystemACL

User Access Managementノード内のACLフォーム。

SystemEvents

WebCenter Sitesでは、APPEVENTタグ、EMAILEVENTタグ、またはそれらと同等のJava APIがエレメントから起動されたときに指定されたイベントごとに、この表に行が追加されます。

SystemInfo

この表に情報を追加することも、この表の情報を変更することもしないでください。

このルールに対する唯一の例外は、WebCenter Sitesに外部表を認識させる場合です。

SystemSQL

Explorerツール。

用意されている様々な種類の問合せについては、「結果セットのキャッシングと問合せでの作業」を参照してください。

SystemUsers

User Access Managementノード内のユーザー・フォーム。

SystemUserAttr

User Access Managementノード内のユーザー・フォーム。

プロパティ・ファイルおよびデータベースについて

wcs_properties.jsonファイルのデータベース・プロパティは、WebCenter Sitesデータベース接続を構成する場合に役立ちます。これらのプロパティを使用して、データベースとアプリケーション・サーバーとの間に権限付きおよび権限なしのユーザー接続を確立します。

データベース・プロパティは、WebCenter Sitesをインストールしたときに、自分のシステム用に構成されたものです。デフォルトでは、wcs_properties.jsonファイルで特定されているすべてのコマンドが、WebCenter Sitesデータベース上で動作します。wcs_properties.jsonファイル内のプロパティにアクセスするには、WebCenter Sites Adminインタフェース内のプロパティ管理ツールを使用します。