4.15.3 文書クラス定義ファイルの記述形式

ここでは,文書クラス定義ファイルの記述形式について説明します。

<この項の構成>
(1) 記述規則
(2) 記述形式
(3) エントリ
(4) ClassTypeエントリのクラスごとに指定するエントリの一覧
(5) DataTypeエントリのデータ型ごとに指定するエントリの一覧

(1) 記述規則

文書クラス定義ファイルの記述規則を次に示します。

(2) 記述形式

文書クラス定義ファイルは,ヘッダ,ボディ,およびコメントによって構成されます。ヘッダ,ボディ,およびコメントの詳細について説明します。

ヘッダ
ヘッダは,エントリの名称を列記する行です。エントリ名称は省略できません。それぞれのエントリの詳細は,「(3) エントリ」を参照してください。
ObjTypeエントリは先頭(1列目)に指定してください。ObjTypeエントリ以外のエントリは,順序を変えることができます。
ヘッダは,ボディより前の行に1行だけ指定します。
ボディ
ボディは,クラス,プロパティおよびインデクスの定義を記述する行です。
ボディは,ヘッダのエントリに対応して指定します。例えば,1番目(1列目)にObjTypeエントリの値を指定し,2番目(2列目)にAclibClassNameエントリの値を指定します。
一つのクラスを定義する場合,クラス,プロパティ,インデクスの順で定義(行を記述)します。
コメント
コメントは,注釈を記述できる行です。次の場合,コメントとなります。
  • #(シャープ)で始まる行
  • (セミコロン)で始まる行

(3) エントリ

各エントリの詳細について説明します。

ObjTypeエントリ
オブジェクトタイプに次のどれかを指定します。
  • Class
    クラスを定義するとき,ObjTypeエントリにClassを指定します。
    バージョンなしクラスの定義は,1行で指定します。
    バージョン付きクラスの定義は,TargetTypeエントリの値にCHとVRをそれぞれの行に指定します。一つのバージョンだけで使用するクラスで,DmaClassNameエントリで指定するデータベースの表識別子となるサブクラス名およびGUIDエントリで指定するGUIDを省略する場合は,VRを指定する行を省略できます。
  • Prop
    プロパティを定義するとき,ObjTypeエントリにPropを指定します。
    プロパティの定義は,プロパティを指定するクラスの定義よりあとの行に指定します。
    プロパティの定義は,1行で指定します。
  • Index
    インデクスを定義するとき,ObjTypeエントリにIndexを指定します。
    インデクスの定義は,インデクスがキーとするプロパティの定義よりあとの行に指定します。
    インデクスが一つのプロパティをキーとする設定は,1行で指定します。
    インデクスが複数のプロパティをキーとする設定は,プロパティの数分の行を指定します。インデクスが二つのプロパティをキーとするときの例を,次に示します。

#インデクスが二つのプロパティをキーとするときの例
Index,usrClass_DesignDoc,,,,uP_DocName,,ix_DesignDoc,,,,,,,,,
  ,,,,,,,,,,,,,,,TRUE,
Index,usrClass_DesignDoc,,,,uP_DocWriter,,ix_DesignDoc,,,,,,,,,
  ,,,,,,,,,,,,,,,TRUE,

ObjTypeエントリがIndexの行を2行指定します。
それぞれのIndexNameエントリに同じ値を指定します。例では,ix_DesignDocを指定しています。
優先順位の高い順にプロパティを指定します。例では,第1キーuP_DocName,第2キーuP_DocWriterと指定しています。
注※
複数のプロパティをキーとするインデクスのインデクス名を指定するときは,それぞれのIndexNameエントリに同じインデクス名を指定します。
一方,複数のプロパティをキーとするインデクスのインデクス名を自動で作成したいときは,それぞれのIndexNameエントリに同じ記号を指定します。記号は,「001AUTO」のように数字(10けた以内)と文字列AUTOをつなげた形式で指定します。自動で作成されるインデクス名の詳細については,IndexNameエントリを参照してください。
ClassTypeエントリ
クラスを定義する場合,クラスの種類を指定します。
  • Struct
    可変長配列のクラスです。
  • IndP
    独立データのクラスです。
  • RCntr
    バージョンなしコンテナのクラスです。
  • VTCntr
    バージョンなし構成管理コンテナのクラスです。
  • CRCntr
    バージョン付き構成管理コンテナのクラスです。
  • Doc
    バージョンなし文書のクラスです。
  • VDoc
    バージョン付き文書のクラスです。
AclibClassNameエントリ
文書クラス定義ファイル中でのクラスを識別するためのクラス名(ACLibクラス名)を指定します。
  • ACLibクラス名は,重複しないようにしてください。
  • 「dmaClass」,「edmClass」,「aclClass」で始まる文字列は,システムの予約文字列であるため使用できません。
  • 指定できる文字列は,英数字,「_」(下線文字),「-」(ハイフン)です。
  • 先頭1バイトは,英小文字または英大文字で指定します。
  • クラスの定義でDmaClassNameエントリの指定を省略する場合,自動で作成するサブクラス名(DmaClassName)がDocumentBrokerのサブクラス名に対応する表識別子の規則を満たすように,ACLibクラス名を指定してください。サブクラス名に対応する表識別子の規則については,「4.7.2 サブクラス名およびプロパティ名をデータベース定義の名称に使用する場合の規則」を参照してください。
    ACLibクラス名をusrClassとすると,次のとおりにデータベースの表識別子となるサブクラス名を作成します。
    ・usrClass
     バージョンなしクラスの場合
    ・usrClass_CH
     バージョン付きクラスの場合の全バージョン共通で使用するデータベースの表識別子となるサブクラス名
    ・usrClass_VR
     バージョン付きクラスの場合の一つのバージョンで使用するデータベースの表識別子となるサブクラス名
  • 指定できる長さは,1~28バイトです。ただし,クラスの定義でDmaClassNameエントリの指定を省略する場合は,データベースの表識別子となるサブクラス名の作成規則に従って,文書空間定義コマンド(EDMCDefDocSpace)でAclibClassNameエントリの指定からサブクラス名(DmaClassName)を決定するので,バージョン付きクラスの場合,指定できる長さは1~25バイトとなります。指定する名称は,DocumentBrokerのサブクラス名に対応する表識別子の規則に従ってください。サブクラス名に対応する表識別子の規則については,「4.7.2 サブクラス名およびプロパティ名をデータベース定義の名称に使用する場合の規則」を参照してください。
DmaClassNameエントリ
クラスを定義する場合,データベースの表識別子となるサブクラス名を指定します。指定する名称は,DocumentBrokerのサブクラス名に対応する表識別子の規則に従ってください。サブクラス名に対応する表識別子の規則については,「4.7.2 サブクラス名およびプロパティ名をデータベース定義の名称に使用する場合の規則」を参照してください。
TargetTypeエントリ
バージョン付きクラスを定義する場合,またはバージョン付きクラスにプロパティやインデクスを定義する場合,次のどちらかで対象のデータベースの表識別子となるサブクラス名を指定します。
  • CH
    全バージョンで共通に使用するクラス,またはプロパティやインデクスです。
  • VR
    一つのバージョンだけで使用するクラス,またはプロパティやインデクスです。
MaxVersionCountエントリ
このエントリにはエントリの値は指定しないで,ヘッダでエントリ列だけ指定してください。
AvVersionCountエントリ
バージョン付きクラスを定義する場合,文書のバージョンの平均数を指定します。値は1~2,147,483,647の範囲で指定してください。
InstanceCountエントリ
コンテナのクラス以外のクラスを定義する場合,オブジェクト数を指定します。値は1~2,147,483,647の範囲で指定してください。
RootCntrCountエントリAvCntrCountPerCntrエントリAvCntrTreeHeightエントリAvRefCountPerCntrエントリ
コンテナのクラスを定義する場合,次の値を設定します。値は1~2,147,483,647の範囲で指定してください。
  • RootCntrCountエントリ
    コンテナクラスのルートコンテナ数を指定します。
  • AvCntrCountPerCntrエントリ
    コンテナごとに格納するコンテナの平均数を指定します。
  • AvCntrTreeHeightエントリ
    ルートとなるコンテナからの階層の平均数を指定します。
  • AvRefCountPerCntrエントリ
    コンテナごとに参照型で格納するコンテナと文書の平均数を指定します。
RootCntrCountエントリの指定を省略した場合,「1」が仮定されます。ほかのエントリは省略できません。
RootCntrCountエントリ,AvCntrCountPerCntrエントリ,AvCntrTreeHeightエントリの指定例を次に示します。次の図では,RootCntrCountエントリの指定は「1」,AvCntrCountPerCntrエントリの指定は「3」,AvCntrTreeHeightエントリの指定は「2」となります。

図4-6 RootCntrCountエントリ,AvCntrCountPerCntrエントリ,AvCntrTreeHeightエントリの指定例

[図データ]
複数のコンテナクラスのオブジェクトで一つの階層構造とする場合は,ユーザでコンテナクラスごとのオブジェクト数を算出し,コンテナクラスごとにAvCntrCountPerCntrエントリの値として設定します。このとき,RootCntrCountエントリおよびAvCntrTreeHeightエントリの値には,最小値(値:1)を設定します。
AvRenditionCountエントリ
バージョンなし文書またはバージョン付き文書のクラスを定義する場合,このエントリにレンディションの平均数を指定します。1~10で指定してください。
文書をマルチレンディション文書として管理する場合は,2~10で指定してください。ContentTypeエントリに「Multi」を指定した場合,マルチレンディション機能は使用できません。そのため,このエントリには「1」を指定してください。1以外を指定した場合は,指定したレンディション数を使用する場合の見積もり(見積もり基礎情報ファイルの出力)結果となるため注意してください。
MaxContentSizeエントリ
このエントリにはエントリの値は指定しないで,ヘッダでエントリ列だけ指定してください。
AvContentSizeエントリ
バージョンなし文書またはバージョン付き文書のクラスを定義する場合,コンテントの平均サイズ(バイト単位)を指定します。値は0~2,147,483,647(バイト)の範囲で指定します。
ContentTypeエントリの指定によって,このエントリの値が反映される情報が異なります。ContentTypeエントリの指定ごとの,見積もり基礎情報ファイルの出力情報の種別(Kindエントリ)を次に示します。
  • ContentTypeエントリが「Single」の場合,指定した値が見積もり基礎情報ファイルの「BLOb」の種別の値に反映されます。
  • ContentTypeエントリが「Multi」の場合,指定した値が見積もり基礎情報ファイルの「BLOb」の種別の値に反映されます。
  • ContentTypeエントリが「Reference」の場合,指定した値が見積もり基礎情報ファイルの「Disk」の種別の値に反映されます。
  • ContentTypeエントリが「FileLink」の場合,指定した値が見積もり基礎情報ファイルの「Disk」の種別の値に反映されます。
SuperClassTypeエントリ
バージョンなし文書またはバージョン付き文書のクラスを定義する場合,定義するクラスのスーパークラスを次のどちらかから指定します。
  • DV
    dmaClass_DocVersionクラスです。
  • VTDV
    edmClass_VersionTracedDocVersionクラスです。
指定を省略した場合,「DV」が仮定されます。
PctOfRefDocエントリAvRefDocCountエントリ
バージョンなし文書またはバージョン付き文書のクラスを定義する場合,PctOfRefDocエントリに文書間リレーションのリレーション元文書となる文書の割合を指定します。0~100(%)で指定してください。指定を省略した場合,「0」が仮定されます。
AvRefDocCountエントリにリレーション元文書ごとのリレーション先文書の平均数を指定します。値は1~2,147,483,647の範囲で指定してください。指定を省略した場合,「1」が仮定されます。
ComponentClassNameエントリMaxComponentCountエントリAvComponentCountエントリ
これらのエントリにはエントリの値は指定しないで,ヘッダでエントリ列だけ指定してください。
ContentTypeエントリ
ContentTypeエントリに,バージョンなし文書またはバージョン付き文書のクラスを定義する場合,使用するレンディションの文書の種別を指定します。このエントリは,表のレコード数の見積もりに使用します。
  • Single
    シングルファイル文書を使用するクラスです。
  • Multi
    マルチファイル文書を使用するクラスです。
  • Reference
    リファレンスファイル文書を使用するクラスです。
  • FileLink
    FileLink文書を使用するクラスです。
指定を省略した場合,「Single」が仮定されます。
定義したクラス中で,種別の異なるコンテントを混在して使用する場合,見積もり基礎情報として出力される表のレコード数は,このエントリで指定された種別に対応する表のレコード数として出力されます。そのため,文書の種別ごとのオブジェクト数を計算して,計算したオブジェクト数を文書の種別に対応する表のレコード数に割り振ってください。レコード数の算出式については,「表2-11 ユーザ用RDエリア分のデータベースリソースの所要量」を参照してください。
また,文書のコンテントサイズは文書の種別によって,見積もり基礎情報ファイルの平均文書コンテントサイズの出力情報の種別(Kindエントリ)が異なります。指定した文書の種別によって,該当する出力情報の値として換算してください。文書の種別が異なる文書を混在して使用できる文書の種別は,「Single」,「Reference」および「FileLink」の場合です。
文書の種別と表との対応を次に示します。
  • Single:dmaClass_ContentTransfer
    レコード数の算出式のクラス:ContentTransferクラス
    平均文書コンテントサイズが該当する出力情報の種別:BLOb
  • Reference:edmClass_ContentReference
    レコード数の算出式のクラス:ContentReferenceクラス
    平均文書コンテントサイズが該当する出力情報の種別:Disk
  • FileLink:edmClass_ContentFileLink
    レコード数の算出式のクラス:ContentFileLinkクラス
    平均文書コンテントサイズが該当する出力情報の種別:Disk
GUIDエントリ
クラスを定義する場合,データベースの表識別子となるサブクラス名のGUIDを指定します。
プロパティを定義する場合,プロパティのGUIDを指定します。
指定を省略した場合,自動でGUIDを割り当てます。
定義済みのプロパティを再定義する場合,このエントリは省略します。
「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」(8-4-4-4-12)の形式で指定してください。xは0~9,およびa~f(小文字)で表される16進数の値です。A~F(大文字)で指定することもできます。このとき大文字と小文字を区別しません。
PropertyNameエントリ
プロパティを定義する場合,定義するプロパティ名を指定します。
インデクスを定義する場合,インデクスのキーにするプロパティ名を指定します。
「aclProp」で始まる文字列は,システムの予約文字列であるためプロパティ名に使用できません。指定する名称は,DocumentBrokerのプロパティ名に対応する列名の規則に従ってください。プロパティ名に対応する列名の規則については,「4.7.2 サブクラス名およびプロパティ名をデータベース定義の名称に使用する場合の規則」を参照してください。
DataTypeエントリ
プロパティのデータ型を指定します。
  • String
    プロパティのデータ型は,String型です。
  • Integer32
    プロパティのデータ型は,Integer32型です。
  • Boolean
    プロパティのデータ型は,Boolean型です。
  • VArray
    プロパティのデータ型は,VariableArray型(配列の要素は可変長配列のクラス)です。
全文検索インデクス用プロパティの場合は,指定する必要はありません。
DefaultValueエントリ
プロパティのデフォルト値を指定します。指定する値には,定義情報ファイルの記述形式の区切り文字は指定できません。定義情報ファイルの記述形式については,「4.7 定義情報ファイル」を参照してください。
プロパティで同一のデフォルト値を設定する場合は,このエントリの値の指定を省略するか,すでに定義されているプロパティのデフォルト値と同じ値を設定してください。
クラスごとにプロパティのデフォルト値を設定する場合は,文書空間情報ファイルのSpPropDefaultValueエントリに「ON」を設定してください。このエントリには,クラスごとのプロパティのデフォルト値を設定してください。
指定を省略した場合,すでに定義されている値がデフォルト値として使用されます。
  • DataTypeエントリがString型のとき,255バイト以内の任意の文字列で指定します。デフォルト値を空文字にするには,値を指定しないでください。また,デフォルト値をNULL値とするには,NULLを指定してください。NULLという文字列はデフォルト値にできません。
  • DataTypeエントリがInteger32型のとき,-2,147,483,648~2,147,483,647の範囲で指定します。
  • DataTypeエントリがBoolean型のとき,TRUE,FALSE,1,0のどれかを指定します。
  • DataTypeエントリがVariableArray型のとき,デフォルト値を指定できません。VariableArray型のプロパティのデフォルト値は,可変長配列の要素数が0の状態です。
  • DataTypeエントリがVariableArray型以外のとき,デフォルト値の指定を省略すると,DataTypeエントリの指定によって次のとおりになります。
    ・String型のとき:空文字
    ・Integer32型のとき:0
    ・Boolean型のとき:FALSE
AvLengthエントリMaxLengthエントリ
String型のプロパティを定義するとき,AvLengthエントリに文字列の平均長(バイト単位)を指定し,MaxLengthエントリに文字列の最大長(バイト単位)を指定します。値は1~32,000の範囲で指定してください。
StructClassNameエントリMaxElementCountエントリAvElementCountエントリ
VariableArray型のプロパティを定義するとき,StructClassNameエントリにClassTypeエントリがStructのACLibクラス名を指定し,MaxElementCountエントリに可変長配列の最大要素数を指定し,AvElementCountエントリに可変長配列の平均要素数を指定します。
VariableArrayOfObjectオブジェクトの要素をStructClassNameエントリに指定したクラスに格納する場合,最大要素数は-1,平均要素数は,1~2,147,483,647の範囲で指定してください。
VariableArrayOfObjectオブジェクトの要素をこのプロパティに格納する場合,最大要素数は2~30,000,平均要素数は1~30,000の範囲で指定してください。
StructClassNameエントリに指定するACLibクラス名のクラスは,ACLibクラス名を使用するプロパティ定義より前に定義してください。
IndexNameエントリ
インデクスを定義する場合,インデクス名を指定します。
  • 指定を省略した場合,自動でインデクス名を作成します。自動で作成されるインデクス名はクラス名をプリフィクスとし,1から始まる数値を32進数に変換した値をサフィックスとした文書空間で一意となる値となります。
    定義クラス名が「usrClass」の場合,最初のインデクスに自動付与するインデクス名は「usrClass01」となります。
  • 指定する名称は,DocumentBrokerのインデクス名をデータベース定義の名称に使用する場合の規則に従ってください。インデクス名をデータベース定義の名称に使用する場合の規則については,「4.9.2 インデクス名をデータベース定義の名称に使用する場合の規則」を参照してください。
OrderTypeエントリ
インデクスを定義する場合,インデクスのキー値の順序に次のどちらかを指定します。
  • ASC:昇順
  • DESC:降順
指定を省略した場合,「ASC」が仮定されます。
IsUniqueエントリ
インデクスを定義する場合,次のどちらかを指定します。なお,複数のプロパティをキーとするときには,インデクスの1行目の定義にだけ記述できます。
  • TRUEまたは1
    キー値を一意に制約します。
  • FALSEまたは0
    キー値の重複を許します。
指定を省略した場合,「FALSE」が仮定されます。
IsExceptエントリ
インデクスを定義する場合,次のどちらかを指定します。なお,複数のプロパティをキーとするときには,インデクスの1行目の定義にだけ記述できます。
  • TRUEまたは1
    NULL値だけのキーをインデクスから除外します。
  • FALSEまたは0
    NULL値だけのキーもインデクスに追加します。
指定を省略した場合,「FALSE」が仮定されます。

(4) ClassTypeエントリのクラスごとに指定するエントリの一覧

クラスを定義する場合のClassTypeエントリのクラスごとに指定するエントリの一覧を次の表に示します。

表4-30 ClassTypeエントリのクラスごとに指定するエントリの一覧


エントリ名
ClassTypeエントリのクラス (()内は,TargetTypeエントリの値)
StructIndPRCntrVTCntrCRCntrDocVDoc
(CH)※1(VR)※1(CH)※1(VR)※1
AclibClassName※2※2※2※2
DmaClassName
MaxVersionCount
AvVersionCount
InstanceCount
RootCntrCount
AvCntrCountPerCntr
AvCntrTreeHeight
AvRefCountPerCntr
AvRenditionCount
MaxContentSize
AvContentSize
SuperClassType
PctOfRefDoc
AvRefDocCount
ComponentClassName
MaxComponetCount
AvComponentCount
ContentType
GUID
(凡例)
◎:必ず指定してください。
○:指定を省略できます。
-:指定できません。
注※1
バージョン付きクラスを定義する場合,2行で記述します。
注※2
バージョン付きクラスを定義する場合,2行目のACLibクラス名は1行目と必ず一致させてください。

(5) DataTypeエントリのデータ型ごとに指定するエントリの一覧

プロパティを定義する場合のDataTypeエントリのデータ型ごとに指定するエントリの一覧を次の表に示します。

表4-31 DataTypeエントリのデータ型ごとに指定するエントリの一覧


エントリ名
DataTypeエントリのデータ型
StringInteger32BooleanVArray全文検索機能のプロパティ
TargetType※1※1※1※1※2
GUID
PropertyName
DefaultValue
AvLength
MaxLength
StructClassName
MaxElementCount
AvElementCount
(凡例)
◎:必ず指定してください。
○:指定を省略できます。
-:指定できません。
注※1
バージョン付きクラスのとき必ず指定してください。バージョンなしクラスのときは指定できません。
注※2
バージョン付きクラスのとき,「VR」を必ず指定してください。バージョンなしクラスのときは省略できます。