4.7.5 定義情報ファイルの記述例(VariableArray型のプロパティを追加する場合)

プロパティの基本単位がVariableArray型であるプロパティを追加する場合の定義情報ファイルについて,例題に沿って説明します。

<この項の構成>
(1) 使用する例題
(2) VariableArray型のプロパティの追加方法

(1) 使用する例題

プロパティは,データ型に従った値を1個持つか複数個持つかが決められています。これを基本単位といいます。プロパティの基本単位がVariableArray型のプロパティとは,そのプロパティが配列の要素を保持するプロパティです。

VariableArray型のプロパティとして定義するプロパティは,edmClass_Structクラスのインスタンスをリファレンスとして保持します。VariableArray型のプロパティを定義するための例題を次に示します。

(例)

管理する文書として「文書リスト」を定義します。この文書は,書籍の著者に関する情報を管理します。この「文書リスト」について,サブクラスを追加して必要な付加情報を追加します。追加するサブクラスとそのスーパークラスを次の表に示します。

表4-17 追加するサブクラスとそのスーパークラス

管理する情報追加するサブクラススーパークラス
文書リストusrClass_DocListedmClass_IndependentPersistence
著者の情報usrClass_WriterInfoedmClass_Struct

「文書リスト」は,書籍の著者に関する情報を管理する文書で,edmClass_IndependentPersistenceクラスのサブクラスとして,「usrClass_DocListクラス」を定義します。「著者の情報」は,著者の情報を管理する文書であり,edmClass_Structクラスのサブクラスとして「usrClass_WriterInfoクラス」を定義します。

「文書リスト」には付加情報としてプロパティを追加します。付加情報に対応するプロパティを次の表に示します。

表4-18 usrClass_DocListクラスの構造

クラス名付加情報プロパティ名
(VariableArray型のプロパティ)
データ型
usrClass_DocList文書名uP_DocNameString型
著者の情報uP_WriterInfoObject型

「uP_WriterInfoプロパティ」は,VariableArray型のプロパティです。表4-19に,「uP_WriterInfoプロパティ」に定義するプロパティを示します。「uP_WriterInfoプロパティ」は,配列の要素としてプロパティを管理します。VariableArray型の「uP_WriterInfoプロパティ」の要素を管理する「usrClass_WriterInfoクラス」に格納されているプロパティを説明します。

表4-19 VariableArray型の「uP_WriterInfoプロパティ」の要素となるクラスの構造

クラス名
(VariableArray型のプロパティの要素)
付加情報プロパティ名
(VariableArray型のプロパティ要素の構成)
データ型
usrClass_WriterInfo著者名uP_WriterNameString型
著者の紹介uP_CommentString型

VariableArray型の「uP_WriterInfoプロパティ」の構造を次の図に示します。

図4-2 VariableArray型の「uP_WriterInfoプロパティ」の構造

[図データ]

配列の要素として管理されるこれらのプロパティは,edmClass_Structクラスのプロパティとして追加します。

プロパティの基本単位がVariableArray型であるプロパティを追加できるクラスは次のとおりです。

(2) VariableArray型のプロパティの追加方法

VariableArray型のプロパティを追加する場合,プロパティを追加するために必要な情報を定義情報ファイルに記述する必要があります。プロパティを追加するために必要な定義情報ファイルの記述方法については,「4.7.4 定義情報ファイルの記述例」を参照してください。ただし,定義情報ファイルに記述する内容に異なる部分がありますので注意してください。

VariableArray型のプロパティを追加する場合,このプロパティを追加する前にedmClass_Structクラスのサブクラスを追加してください。このサブクラスは,VariableArray型のプロパティが参照するオブジェクトを作成するためのクラスです。また,VariableArray型のプロパティの配列の要素となるプロパティは,このサブクラスのプロパティとして定義しておく必要があります。サブクラスを追加するための定義情報ファイルの記述方法については,「4.7.4 定義情報ファイルの記述例」を参照してください。

なお,edmClass_Structクラスのサブクラスの追加に関する定義情報とVariableArray型のプロパティの追加に関する定義情報を同じ定義情報ファイルに記述する場合,VariableArray型で定義するプロパティを追加する前に,edmClass_Structクラスのサブクラスの追加を記述してください。

定義したVariableArray型プロパティの要素に値を指定する場合に,その値が定義内容と合っているかどうかについてチェックを実行するとき,DocumentSpace構成定義ファイルのVArrayElementCheckエントリを設定してください。なお,VArrayElementCheckエントリの詳細については,「4.2.2 DocumentSpace構成定義ファイルの記述形式」を参照してください。

次に,VariableArray型のプロパティを追加する場合の定義情報ファイルの記述方法および記述順序について,「(1) 使用する例題」で設定した例題に沿って説明します。

(a) 追加するプロパティのデータ型に対応する仮定値の定義

サブクラスに追加するプロパティのデータ型ごとに,プロパティの詳細情報(プロパティディスクリプション)を定義する必要があります。ここでは,データ型ごとに共通に指定するプロパティの仮定値を記述します。

例題で追加するプロパティについて,それぞれのデータ型に対応する仮定値を記述します。記述例を次に示します。

;
; DMA_DATATYPE_OBJECT_VARIABLE_ARRAY型の仮定値
;
 
[AssumeProperty/DMA_DATATYPE_OBJECT_VARIABLE_ARRAY]
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
 
;
; DMA_DATATYPE_STRINGの仮定値
;
[AssumeProperty/DMA_DATATYPE_STRING]
dmaProp_QueryOperator_Description
=obj=dsqop.ini@dmaQueryOperator_EqualString
=obj=dsqop.ini@dmaQueryOperator_UnequalString
dmaProp_Cardinality=int=DMA_CARDINALITY_SINGLE
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
dmaProp_PropertyDefaultString=text=NULL
dmaProp_MaximumLengthString=int=64

<アクションの説明>
ここでは,[AssumeProperty/データタイプ]のエントリとして追加するプロパティ自身のプロパティを記述します。
[AssumeProperty/データタイプ]
VariableArray型のプロパティを追加する場合,このアクションの「データタイプ」には,「DMA_DATATYPE_OBJECT_VARIABLE_ARRAY」を指定します。[AssumeProperty/データタイプ]には,[AddProperty/クラス名]で記述を省略するプロパティの仮定値を記述します。
<プロパティの説明>
次に示すプロパティは[AssumeProperty/データタイプ]および[AddProperty/クラス名]に指定できます。ただし,[AddProperty/クラス名]に同じプロパティが指定されている場合は,[AddProperty/クラス名]に指定されている値を優先します。[AddProperty/クラス名]の値を省略した場合で,かつ[AssumeProperty/データタイプ]の値を省略した場合は,各プロパティでの省略値が仮定されます。
  • dmaProp_IsSelectableプロパティ
    追加するプロパティが検索結果集合の一項目として選択できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索結果集合の一項目として選択できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索結果集合の一項目として選択できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsSearchableプロパティ
    追加するプロパティが検索の条件に使用できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索の条件として使用できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索の条件として使用できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsHiddenプロパティ
    追加するプロパティをシステム管理者だけに表示するかどうかを示すBoolean型の値です。「0」を指定してください。指定を省略した場合,「0」が仮定されます。
  • dmaProp_MaximumElementsプロパティ
    VariableArrayOfObjectオブジェクトの要素をHiRDBの繰り返し列へ格納する場合に指定します。dmaProp_MaximumElementsプロパティの値には,HiRDBの繰り返し列の最大要素数(2~30,000の符号なし整数値)を指定します。
    ただし,定義済みのプロパティをクラスに追加する場合は,定義済みのプロパティに設定されたdmaProp_MaximumElementsプロパティの指定が有効になります。
    dmaProp_MaximumElementsプロパティを指定する場合,メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションを指定しておく必要があります。メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションで指定した値(HIRDB,Own,Both)とdmaProp_MaximumElementsプロパティの指定について次に示します。
  • HIRDB:dmaProp_MaximumElementsプロパティの指定は必須
  • Own:dmaProp_MaximumElementsプロパティは指定できない
  • Both:dmaProp_MaximumElementsプロパティの指定は任意(省略可能)
なお,メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションでBothを指定してメタ情報を登録した場合,dmaProp_MaximumElementsプロパティの指定の有無によって,VariableArray型プロパティの要素の格納先が異なります。また,-vオプションを省略した場合,HiRDBの繰り返し列を使わないでVariableArrayOfObjectオブジェクトを格納します。

(b) サブクラスの追加とプロパティの追加に関する定義

追加するサブクラスの定義とそのサブクラスに追加するプロパティの定義について記述します。記述例を次に示します。なお,ここではVariableArray型プロパティの要素の格納先として別表を使用する場合,およびHiRDBの繰り返し列に格納する場合の記述例を示します。

  1. VariableArray型プロパティ「uP_WriterInfoプロパティ」の要素となるクラス「usrClass_WriterInfoクラス」を追加するための定義情報ファイルの内容を次に示します。

    ; VariableArray型プロパティを追加するために使用する,
    ; edmClass_Structクラスのサブクラス(usrClass_WriterInfo)を定義する。
    ;
    ; 著者の情報を管理するクラスの定義
    ;
    [AddSubClass]
    dmaProp_DisplayName=text=edmClass_Struct/usrClass_WriterInfo
     
    ; 著者名の定義
    [AddProperty/usrClass_WriterInfo]
    dmaProp_DisplayName=text=uP_WriterName
    dmaProp_DataType=int=DMA_DATATYPE_STRING
     
    ; 著者の紹介
    [AddProperty/usrClass_WriterInfo]
    dmaProp_DisplayName=text=uP_Comment
    dmaProp_DataType=int=DMA_DATATYPE_STRING
    dmaProp_MaximumLengthString=int=200

  2. VariableArray型プロパティ「uP_WriterInfoプロパティ」の要素を別表に格納する場合に,「usrClass_DocListクラス」を追加するための定義情報ファイルの内容を次に示します。
    なお,VariableArray型プロパティ「up_WriterInfoプロパティ」の要素をHiRDBの繰り返し列に格納する場合に,「usrClass_DocListクラス」を追加するための定義情報ファイルの内容については,「手順3.」に示す記述例を参照してください。

    ;サブクラスとしてusrClass_DocListクラスを定義し,プロパティとして
    ;VariableArray型プロパティであるuP_WriterInfoプロパティを定義する。
    ;
     
    ; 文書リスト
    [AddSubClass]
    dmaProp_DisplayName=text=edmClass_IndependentPersistence/usrClass_DocList
     
    ; 文書名
    [AddProperty/usrClass_DocList]
    dmaProp_DisplayName=text=uP_DocName
    dmaProp_DataType=int=DMA_DATATYPE_STRING
     
    ; 著者の情報
    [AddProperty/usrClass_DocList]
    dmaProp_DisplayName=text=uP_WriterInfo
    dmaProp_DataType=int=DMA_DATATYPE_OBJECT
    dmaProp_Cardinality=int=255
    dmaProp_RequiredClass=obj=usrClass_WriterInfo

  3. VariableArray型プロパティ「up_WriterInfoプロパティ」の要素をHiRDBの繰り返し列に格納する場合に,「usrClass_DocListクラス」を追加するための定義情報ファイルの内容を次に示します。

    ;サブクラスとしてusrClass_DocListクラスを定義し,プロパティとして
    ;VariableArray型プロパティであるuP_WriterInfoプロパティを定義する。
    ;
     
    ; 文書リスト
    [AddSubClass]
    dmaProp_DisplayName=text=edmClass_IndependentPersistence/usrClass_DocList
     
    ; 文書名
    [AddProperty/usrClass_DocList]
    dmaProp_DisplayName=text=uP_DocName
    dmaProp_DataType=int=DMA_DATATYPE_STRING
     
    ; 著者の情報
    [AddProperty/usrClass_DocList]
    dmaProp_DisplayName=text=uP_WriterInfo
    dmaProp_DataType=int=DMA_DATATYPE_OBJECT
    dmaProp_Cardinality=int=255
    dmaProp_RequiredClass=obj=usrClass_WriterInfo
    dmaProp_MaximumElements=int=100

<アクションの説明>
ここでは,[AddProperty/クラス名]のエントリとして追加するプロパティ自身のプロパティを記述します。
[AddProperty/クラス名]
VariableArray型のプロパティを追加する場合,このアクションの「クラス名」には,プロパティを追加するクラス名(ここでは,usrClass_WriterInfoおよびusrClass_DocList)を指定します。
<プロパティの説明>
ほかのクラスに同じプロパティが定義されていない場合,次のプロパティは[AddProperty/クラス名]に指定してください。これらのプロパティは,[AssumeProperty/データタイプ]には指定できません。指定するプロパティとその値について次に示します。
  • dmaProp_DisplayNameプロパティ
    追加するプロパティ名を値として指定します。なお,この値の指定は,省略できません。
  • dmaProp_DescriptiveTextプロパティ
    追加するプロパティを簡単に説明する文字列を値として指定します。指定を省略した場合,dmaProp_DisplayNameプロパティに指定したプロパティ名が仮定されます。
  • dmaProp_Idsプロパティ
    追加するプロパティに付与するGUID値を指定します。指定を省略した場合,メタ情報の追加コマンド(EDMAddMeta)を実行するときに,-gオプションを必ず指定してください。
  • dmaProp_DataTypeプロパティ
    追加するプロパティのデータ型を指定します。必ず「DMA_DATATYPE_OBJECT」を指定してください。省略できません。
  • dmaProp_Cardinalityプロパティ
    追加するプロパティの基本単位を表すInteger32型の値です。必ず「255」を指定してください。省略できません。
  • dmaProp_RequiredClassプロパティ
    edmClass_Structクラスのサブクラスのクラス名(ここでは,usrClass_WriterInfo)を指定します。省略できません。
  • dmaProp_MaximumElementsプロパティ
    VariableArrayOfObjectオブジェクトの要素をHiRDBの繰り返し列へ格納する場合に指定します。dmaProp_MaximumElementsプロパティの値には,HiRDBの繰り返し列の最大要素数(2~30,000の符号無し整数値)を指定します。ただし,定義済みのプロパティをクラスに追加する場合は,定義済みのプロパティに設定されたdmaProp_MaximumElementsプロパティの指定が有効になります。
    dmaProp_MaximumElementsプロパティを指定する場合,メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションを指定しておく必要があります。メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションで指定した値(HIRDB,Own,Both)とdmaProp_MaximumElementsプロパティの指定について次に示します。
  • HIRDB:dmaProp_MaximumElementsプロパティの指定は必須
  • Own:dmaProp_MaximumElementsプロパティは指定できない
  • Both:dmaProp_MaximumElementsプロパティの指定は任意(省略可能)
なお,メタ情報の初期設定コマンド(EDMInitMeta)の-vオプションでBothを指定してメタ情報を登録した場合,dmaProp_MaximumElementsプロパティの指定の有無によって,VariableArray型プロパティの要素の格納先が異なります。また,-vオプションを省略した場合,HiRDBの繰り返し列を使わないでVariableArrayOfObjectオブジェクトを格納します。