スキーマでは、ツリー内に作成できるオブジェクトのタイプ(ユーザ、プリンタ、グループなど)、およびオブジェクトの作成時に指定する必須情報とオプション情報が定義されます。各オブジェクトには、そのオブジェクトタイプのスキーマクラスが定義されています。
製品に元から付属しているスキーマは、ベーススキーマといいます。新しいクラスや属性の追加など、なんらかの形でベーススキーマが変更されると、そのスキーマは拡張スキーマとみなされます。
スキーマは必ずしも拡張する必要はありませんが、拡張も可能です。ConsoleOneのスキーママネージャツールを使用すれば、運用条件に合わせてスキーマを拡張できます。たとえば、従業員に特殊な履き物が必要で、従業員の靴のサイズを記録しなければならない場合などに、スキーマを拡張します。この場合は、「靴のサイズ」という属性を新たに作成し、ユーザクラスに追加します。
詳細については、「スキーマの管理」を参照してください。
スキーママネージャはConsoleOneのツールです。ツリーに対するスーパバイザ権を持つユーザは、スキーママネージャを使用してそのツリーのスキーマをカスタマイズできます。スキーママネージャは、ConsoleOneで対象のツリーを選択した後に[ツール]メニューから呼び出すことができます。
スキーママネージャは、次の目的で使用します。
クラスとは、ディレクトリオブジェクトのテンプレートのようなものです。ディレクトリオブジェクトとは、データを挿入されたクラスです。つまり、次のように表すことができます。
CLASS + DATA = DIRECTORY OBJECT
各クラスは、クラス名、継承クラス(そのクラスがクラス階層の最上位である場合を除く)、クラスフラグ、および属性のグループを持っています。クラスは、ディレクトリオブジェクト(ユーザ、プリンタ、キュー、サーバなど)と同じように命名されますが、単なる構造であり内容ではありません。
継承クラスとは、他のオブジェクトクラスを定義するときの開始点となるクラスです。継承クラスの属性はすべて、クラス階層でそのクラスの下位に位置するクラスへ継承されます。
クラス階層は、あるクラスがどのようにペアレントクラスと関連付けられているかを示します。クラス階層により、類似したクラスが関連付けられ、属性の継承が可能になります。また、クラスを格納できる有効なコンテナのタイプも定義されます。
クラスの作成時には、クラス階層と追加属性を使用して各クラスをカスタマイズできます。継承クラスを指定することによって、階層内の上位のクラスからその属性とフラグのすべてを新しいクラスに継承できます。さらに、継承された属性クラスに追加する属性を1つまたは複数選択することによって、新しいクラスをカスタマイズできます。追加の属性は、必須属性、ネーミング属性、またはオプション属性として選択できます。
オプションの属性を追加して、既存のクラスを変更することもできます。
属性とは、eDirectoryデータベース内のデータフィールドのことです。たとえば、クラスが形式のようなものだとすれば、属性は形式における1つのフィールドです。属性は、作成時に、名前(姓や社員番号など)を付けられ、構文のタイプ(文字列や数字など)が指定されます。その後、その属性はスキーママネージャの属性リストで使用できるようになります。
構文にはいつかのオプションがあり、その中から必要なオプションを選択して使用できます。これらの構文オプションは、各属性で入力するデータのタイプを指定するために使用されます。構文は属性の作成時にのみ指定できます。後から構文を変更することはできません。使用できる構文には、次のものがあります。
オブジェクトを参照する他のサーバの追跡に使用されます。この構文オプションは、eDirectoryの内部管理目的で使用されます。
TRUE(1)またはFALSE(0)の値をとる属性によって使用されます。この構文タイプには、単一の値のフラグが設定されます。
比較演算で大文字/小文字が区別されるUnicode*文字列を値としてとる属性によって使用されます。2つのCase Exact Stringは、長さが等しく、対応する文字(大文字/小文字の区別を含む)が同一の場合に一致とみなされます。
比較演算で大文字/小文字が区別されないUnicode文字列の順序列を値としてとる属性によって使用されます。2つの大文字小文字を無視するリストは、文字列の数が等しく、対応するすべての文字列が同じ場合(つまり、長さと対応する文字が同一の場合)に一致とみなされます。
比較演算で大文字/小文字が区別されないUnicode文字列を値としてとる属性によって使用されます。2つの大文字小文字を無視する文字列は、長さが等しく、対応する文字があらゆる面で(ただし、大文字/小文字の区別を除く)同一の場合に一致とみなされます。
オブジェクトクラスの名前を値としてとる属性によって使用されます。2つのクラス名は、長さが等しく、対応する文字があらゆる面で(ただし、大文字/小文字の区別を除く)同一の場合に一致とみなされます。
増分変更された符号付き整数を値としてとる属性によって使用されます。Counterによって定義された属性は、単一の値の属性です。カウンタは、この構文の属性に追加されたあらゆる値が算術演算で合計に追加され、この構文の属性から削除されたあらゆる値が算術演算で合計から差し引かれるという点で、整数とは異なります。
eDirectoryツリー内のオブジェクト名を値としてとる属性によって使用されます。DN(識別名)では大文字/小文字が区別されませんが、ネーミング属性の1つでは大文字/小文字が区別されます。
バイナリ情報の文字列を値としてとる属性によって使用されます。eDirectoryは、この構文の内容の内部構造については想定しません。
国際電話番号と、推奨T.20に従って形式設定されたオプションのビット文字列の格納を規定するE.123標準に準拠した文字列を指定します。2つのFax番号値は、長さが等しく、対応する文字列が同一(ただし、比較処理で無視されるスペースとハイフンを除く)の場合に、一致とみなされます。
符号付き整数の値を持つアカウント数量の属性によって使用されます。この構文は、アカウント数量(トランザクションが完了するまでの間、サブジェクトのクレジット限度に対して暫定的に保持される金額)を表します。保持量は、Counter構文と同じように扱われ、新しい値がベース合計に加算されるか、ベース合計から減算されます。計算された保持量が0になると、保持レコードは削除されます。
符号付き数値として表される属性によって使用されます。2つの整数値は、値が同一である場合に一致とみなされます。順序付けの比較では、符号付き整数ルールが使用されます。
符号付き整数を値としてとり、時間の間隔を表す属性によって使用されます。間隔構文では、整数構文と同じ表現が使用されます。間隔値は、時間間隔での秒数を表します。
サーバ環境でのネットワークレイヤアドレスを表します。このアドレスは、バイナリ形式です。2つのネットアドレスは、各アドレスのタイプ、長さ、および値が一致する場合に、一致とみなされます。
CCITT X.208定義で数値文字列として定義されている数値整数を値としてとる属性によって使用されます。2つの数値文字列は、長さが等しく、対応する文字が同一の場合に一致とみなされます。数値文字列文字セットにおいて有効な文字は、数字(0〜9)およびスペースのみです。
アクセス制御リスト(ACL)エントリを表す値をとる属性によって使用されます。オブジェクトACL値は、オブジェクトを保護する場合と、属性を保護する場合があります。
バイナリ情報またはオクテット文字列の順序付き文字列シーケンスを表します。オクテットリストは、保存済みリストのサブセットである場合に、保存済みリストと一致するとみなされます。2つのオクテットリストが一致するかどうかの比較には、オクテット文字列と同じメソッドが使用されます。
eDirectoryによって解釈されないバイナリ情報の文字列を値としてとる属性によって使用されます。これらのオクテット文字列は、非Unicode文字列です。2つのオクテット文字列は、長さが等しく、対応するビット列(オクテット)が同一の場合に一致とみなされます。
ファイルシステムパスを表す属性であり、サーバ上でファイルを見つけるために必要なすべての情報が格納されます。2つのパスは、長さが等しく、対応する文字(大文字/小文字の区別を含む)が同一の場合に、一致とみなされます。
住所を表すUnicode文字列を値としてとる属性によって使用されます。通常、住所の属性値は、推奨F.401に従ってMHS Unformatted Postal O/R Address Specificationバージョン1から選択された属性で構成されます。この値は、30文字6行(国名を含む)に制限されます。2つの住所は、文字列の数が等しく、対応するすべての文字列が同じ場合(つまり、長さと対応する文字が同一の場合)に一致とみなされます。
CCITT X.208に定義されている印刷可能文字列を値としてとる属性によって使用されます。印刷可能文字セットは、次のものから構成されます。
2つの印刷可能文字列は長さが等しく、対応する文字が同一の場合に一致とみなされます。大文字/小文字は区別されます。 パーティションレプリカを表す値をとる属性によって使用されます。eDirectoryツリーのパーティションでは、複数のサーバにレプリカを置くことができます。この構文は、次の6つのコンポーネントで構成されます。 任意のバイナリ情報を表します。ストリーム構文を使用すると、ファイルサーバ上のファイルからeDirectory属性を作成できます。この構文は、ログインスクリプトやその他のストリーム属性で使用されます。ストリームファイルに格納されているデータには、構文は一切適用されません。この構文は完全に任意のデータであり、個別のアプリケーションで作成、定義および使用されます。 電話番号を値としてとる属性によって使用されます。電話番号は、1〜32文字の長さの文字列です。2つの電話番号は、長さが等しく、対応する文字列が同一(ただし、比較処理で無視されるスペースとハイフンを除く)の場合に、一致とみなされます。 符号なし整数を値としてとり、秒単位の時間を表す属性によって使用されます。 特定のイベントが発生した時刻を示す値をとる属性によって使用されます。特定のイベントが発生すると、eDirectoryサーバによってタイムスタンプ値が生成され、そのイベントに関連付けられます。各タイムスタンプ値は、eDirectoryパーティション内で固有です。これにより、同一パーティションのレプリカを保持しているすべてのサーバで発生したイベントを1つにまとめて順序付けできます。 オブジェクトに関連付けられたレベルおよび間隔を表す値をとる属性によって使用されます。この構文は、eDirectoryオブジェクトを指定し、次の2つの数値を当該オブジェクトにアタッチします。 スキーマから削除されている属性定義をもつ属性によって使用されます。この構文は、バイナリ情報の文字列を表します。
オブジェクトにはどれも、オブジェクトのタイプに合わせて定義されたスキーマクラスがあります。クラスとは、意味のある方法で組織された属性のグループを指します。これらの属性の一部は必須で、一部はオプションです。
必須属性とは、オブジェクトの作成時に指定する必要がある属性です。たとえば、社員番号が必須属性であるユーザクラスで新しいユーザを作成する場合、社員番号を入力せずに新しいユーザオブジェクトを作成することはできません。
オプション属性とは、必要に応じて指定できる属性を指します。たとえば、ニックネームがオプション属性となっているユーザクラスで新しいユーザオブジェクトを作成するとします。この場合、この属性にデータを入力できるかどうかは、新しいユーザのニックネームを知っているかどうかに左右されますが、いずれの場合でも新しいユーザオブジェクトは作成できます。
オプション属性が命名に使用されるのは例外で、命名に使用される属性は多くの場合必須になります。
「図 14」は、スキーマの一部をサンプルとして示しています。通常、ベーススキーマはこれと似た形になります。
このアイコンは、ベーススキーマの拡張部分であるすべてのクラスに割り当てられます。
図 14
ConsoleOneの[スキーママネージャ]ダイアログボックス
最初にスキーマの設計を行うと、長期的に見た場合、時間と労力を節約できます。ベーススキーマを表示して、それが実際の必要条件に見合うか、あるいは変更が必要かを判断できます。変更が必要な場合は、スキーママネージャを使用してスキーマを拡張します。詳細については、「スキーマの拡張」を参照してください。