プロパティの基本単位がVariableArray型であるプロパティを追加する場合の定義情報ファイルについて,例題に沿って説明します。
(1) 使用する例題
プロパティは,データ型に従った値を1個持つか複数個持つかが決められています。これを基本単位といいます。プロパティの基本単位がVariableArray型のプロパティとは,そのプロパティが配列の要素を保持するプロパティです。
VariableArray型のプロパティとして定義するプロパティは,edmClass_Structクラスのインスタンスをリファレンスとして保持します。VariableArray型のプロパティを定義するための例題を次に示します。
(例)
管理する文書として「文書リスト」を定義します。この文書は,書籍の著者に関する情報を管理します。この「文書リスト」について,サブクラスを追加して必要な付加情報を追加します。追加するサブクラスとそのスーパークラスを次の表に示します。
表4-17 追加するサブクラスとそのスーパークラス
管理する情報 | 追加するサブクラス | スーパークラス |
---|---|---|
文書リスト | usrClass_DocList | edmClass_IndependentPersistence |
著者の情報 | usrClass_WriterInfo | edmClass_Struct |
「文書リスト」は,書籍の著者に関する情報を管理する文書で,edmClass_IndependentPersistenceクラスのサブクラスとして,「usrClass_DocListクラス」を定義します。「著者の情報」は,著者の情報を管理する文書であり,edmClass_Structクラスのサブクラスとして「usrClass_WriterInfoクラス」を定義します。
「文書リスト」には付加情報としてプロパティを追加します。付加情報に対応するプロパティを次の表に示します。
表4-18 usrClass_DocListクラスの構造
クラス名 | 付加情報 | プロパティ名 (VariableArray型のプロパティ) | データ型 |
---|---|---|---|
usrClass_DocList | 文書名 | uP_DocName | String型 |
著者の情報 | uP_WriterInfo | Object型 |
「uP_WriterInfoプロパティ」は,VariableArray型のプロパティです。表4-19に,「uP_WriterInfoプロパティ」に定義するプロパティを示します。「uP_WriterInfoプロパティ」は,配列の要素としてプロパティを管理します。VariableArray型の「uP_WriterInfoプロパティ」の要素を管理する「usrClass_WriterInfoクラス」に格納されているプロパティを説明します。
表4-19 VariableArray型の「uP_WriterInfoプロパティ」の要素となるクラスの構造
クラス名 (VariableArray型のプロパティの要素) | 付加情報 | プロパティ名 (VariableArray型のプロパティ要素の構成) | データ型 |
---|---|---|---|
usrClass_WriterInfo | 著者名 | uP_WriterName | String型 |
著者の紹介 | uP_Comment | String型 |
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
(b) サブクラスの追加とプロパティの追加に関する定義
追加するサブクラスの定義とそのサブクラスに追加するプロパティの定義について記述します。記述例を次に示します。なお,ここではVariableArray型プロパティの要素の格納先として別表を使用する場合,およびHiRDBの繰り返し列に格納する場合の記述例を示します。
; 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
;サブクラスとして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
;サブクラスとして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