4.7.4 定義情報ファイルの記述例

サブクラスおよびプロパティを追加する場合の定義情報ファイルについて,例題に沿って説明します。

<この項の構成>
(1) 使用する例題
(2) 定義情報ファイルの記述例

(1) 使用する例題

サブクラスおよびプロパティを追加する場合の定義情報ファイルを作成するための例題を次に示します。ここで使用する例題は,「2.3.5 クラスおよびプロパティの追加例」で示した例題と同じです。

(例)
「問題点管理ドキュメント」と「設計ドキュメント」という2種類の文書を管理するためにサブクラスを追加します。追加するサブクラスには,それぞれ文書の管理に必要なプロパティを追加します。
管理する文書の詳細情報を次の表に示します。

表4-13 管理する文書の詳細情報

文書の種類概要付加情報管理方法
問題点管理ドキュメント製品の開発時の問題点を管理するための文書
  • 問題点分類
  • 問題点発生日時
  • 検討結果
  • 解決日時
  • 対策日
直接型のコンテインメントを使用して管理する。
設計ドキュメント製品開発の基となる設計書
  • 文書名
  • 執筆者
  • 特許情報
  • 執筆日時
構成管理型のコンテインメントを使用して,複数の設計書の構成を管理する。

この2種類の文書を管理するためのサブクラスを次のように設計します。追加するサブクラスとそのスーパークラスを次の表に示します。

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

管理する文書追加するサブクラススーパークラス
問題点管理ドキュメントusrClass_ProbInfoDocdmaClass_DocVersion
設計ドキュメントusrClass_DesignDocedmClass_VersionTracedDocVersion

問題点管理ドキュメントは,直接型のコンテインメントを使用して管理します。したがって,dmaClass_DocVersionクラスのサブクラスとしてusrClass_ProbInfoDocクラスを追加して管理します。

設計ドキュメントは,バージョン付きコンテナを使用して構成を管理する文書として作成します。したがって,edmClass_VersionTracedDocVersionクラスのサブクラスとしてusrClass_DesignDocクラスを追加して管理します。

次に,文書に対して付加する情報を各クラスのプロパティとして追加します。文書の付加情報とクラスに追加するプロパティの対応を,次の表に示します。

表4-15 文書の付加情報とサブクラスに追加するプロパティの対応

サブクラス名付加情報プロパティ名データ型
usrClass_ProbInfoDoc問題点分類usrProp_CategoryString型
問題点発生日時usrProp_DateOfProbInteger32型
検討結果usrProp_StatusBoolean型
解決日時usrProp_DateOfResolveInteger32型
usrClass_DesignDoc文書名usrProp_DocNameString型
執筆者usrProp_DocWriterString型
特許情報usrProp_PatentInfoString型
執筆日時usrProp_DateOfWriteInteger32型

(2) 定義情報ファイルの記述例

ここでは,例題を基にサブクラスおよびプロパティを追加するための定義情報ファイルの記述例を示します。なお,定義情報ファイルの記述例を二つに分けていますが,実際は,一つのファイルとして作成します。

(a) 定義情報ファイルを記述する場合の注意事項

サブクラスおよびプロパティを追加するために,定義情報ファイルを記述する場合の注意事項について説明します。

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

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

例題で追加するプロパティは,String型,Integer32型およびBoolean型なので,それぞれのデータ型に対応する仮定値を記述します。記述例を次に示します。

;
; DMA_DATATYPE_STRINGの仮定値
;
[AssumeProperty/DMA_DATATYPE_STRING]
dmaProp_QueryOperatorDescriptions
=obj=dsqop.ini@dmaQueryOperator_And
=obj=dsqop.ini@dmaQueryOperator_Or
=obj=dsqop.ini@dmaQueryOperator_Not
=obj=dsqop.ini@dmaQueryOperator_IsNull
=obj=dsqop.ini@dmaQueryOperator_Exists
=obj=dsqop.ini@dmaJoinOperator_Cross
=obj=dsqop.ini@dmaJoinOperator_Inner
=obj=dsqop.ini@dmaQueryOperator_EqualString
=obj=dsqop.ini@dmaQueryOperator_UnequalString
=obj=dsqop.ini@dmaQueryOperator_GreaterString
=obj=dsqop.ini@dmaQueryOperator_GreaterOrEqualString
=obj=dsqop.ini@dmaQueryOperator_LessString
=obj=dsqop.ini@dmaQueryOperator_LessOrEqualString
=obj=dsqop.ini@dmaQueryOperator_Like
=obj=dsqop.ini@dmaQueryOperator_InString
=obj=dsqop.ini@edmQueryOperator_Xlike

dmaProp_Cardinality=int=DMA_CARDINALITY_SINGLE
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
dmaProp_IsOrderable=bool=1
dmaProp_IsValueRequired=bool=0
dmaProp_PropertyDefaultString=text=NULL
dmaProp_MaximumLengthString=int=64

;
; DMA_DATATYPE_INTEGER32の仮定値
;
[AssumeProperty/DMA_DATATYPE_INTEGER32]
dmaProp_QueryOperatorDescriptions
=obj=dsqop.ini@dmaQueryOperator_And
=obj=dsqop.ini@dmaQueryOperator_Or
=obj=dsqop.ini@dmaQueryOperator_Not
=obj=dsqop.ini@dmaQueryOperator_IsNull
=obj=dsqop.ini@dmaQueryOperator_Exists
=obj=dsqop.ini@dmaJoinOperator_Cross
=obj=dsqop.ini@dmaJoinOperator_Inner
=obj=dsqop.ini@dmaQueryOperator_EqualInteger32
=obj=dsqop.ini@dmaQueryOperator_UnequalInteger32
=obj=dsqop.ini@dmaQueryOperator_GreaterInteger32
=obj=dsqop.ini@dmaQueryOperator_GreaterOrEqualInteger32
=obj=dsqop.ini@dmaQueryOperator_LessInteger32
=obj=dsqop.ini@dmaQueryOperator_LessOrEqualInteger32
=obj=dsqop.ini@dmaQueryOperator_AddInteger32
=obj=dsqop.ini@dmaQueryOperator_SubtractInteger32
=obj=dsqop.ini@dmaQueryOperator_NegateInteger32
=obj=dsqop.ini@dmaQueryOperator_AbsoluteValueInteger32
=obj=dsqop.ini@dmaQueryOperator_MultiplyInteger32
=obj=dsqop.ini@dmaQueryOperator_DivideInteger32
=obj=dsqop.ini@dmaQueryOperator_InInteger32

dmaProp_Cardinality=int=DMA_CARDINALITY_SINGLE
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
dmaProp_IsOrderable=bool=1
dmaProp_IsValueRequired=bool=0
dmaProp_PropertyDefaultInteger32=int=0

;
; DMA_DATATYPE_BOOLEANの仮定値
;
[AssumeProperty/DMA_DATATYPE_BOOLEAN]
dmaProp_QueryOperatorDescriptions
=obj=dsqop.ini@dmaQueryOperator_And
=obj=dsqop.ini@dmaQueryOperator_Or
=obj=dsqop.ini@dmaQueryOperator_Not
=obj=dsqop.ini@dmaQueryOperator_IsNull
=obj=dsqop.ini@dmaQueryOperator_Exists
=obj=dsqop.ini@dmaJoinOperator_Cross
=obj=dsqop.ini@dmaJoinOperator_Inner
=obj=dsqop.ini@dmaQueryOperator_InBoolean
=obj=dsqop.ini@dmaQueryOperator_EqualBoolean
=obj=dsqop.ini@dmaQueryOperator_UnequalBoolean

dmaProp_Cardinality=int=DMA_CARDINALITY_SINGLE
dmaProp_IsSelectable=bool=1
dmaProp_IsSearchable=bool=1
dmaProp_IsOrderable=bool=1
dmaProp_IsValueRequired=bool=0
dmaProp_PropertyDefaultBoolean=bool=0

記述例について説明します。

アクション名の説明
データ型に対応して,次の三つのアクション名が指定されています。アクション名に指定する「データタイプ」には,追加するプロパティのデータ型を示す文字列を指定します。
  • [AssumeProperty/DMA_DATATYPE_STRING]
    String型のプロパティを追加する場合は,「データタイプ」として「DMA_DATATYPE_STRING」と指定します。
  • [AssumeProperty/DMA_DATATYPE_INTEGER32]
    Integer32型のプロパティを追加する場合は,「データタイプ」として「DMA_DATATYPE_INTEGER32」と指定します。
  • [AssumeProperty/DMA_DATATYPE_BOOLEAN]
    Boolean型のプロパティを追加する場合は,「データタイプ」として「DMA_DATATYPE_BOOLEAN」と指定します。
プロパティの仮定値
各アクション名に続くエントリには,[AddProperty/クラス名]で記述を省略するプロパティの仮定値を記述します。各プロパティの記述は省略することもできます。ただし,各プロパティが[AddProperty/クラス名]に続くエントリに指定されている場合は,その値が優先されます。ここで仮定値を指定できるプロパティは次のとおりです。
  • dmaProp_QueryOperatorDescriptionsプロパティ
    追加するプロパティに対して使用することを許可する検索オペレータを,メタ情報ファイル「edms.ini」の[dmaClass_Scope/dmaProp_Operators]セクションに指定されているリストの要素の中から選択して指定します。指定を省略した場合,空のリストが仮定されます。
  • dmaProp_Cardinalityプロパティ
    追加するプロパティの基本単位を表すInteger32型の値です。ユーザが追加できるプロパティは,基本単位がScalar型およびVariableArray型のプロパティです。追加するプロパティの基本単位がScalar型の場合は,「DMA_CARDINALITY_SINGLE」を指定します。追加するプロパティの基本単位がVariableArray型の場合は「255」を指定します。VariableArray型のプロパティを追加するための定義情報ファイルの作成方法については,「4.7.5 定義情報ファイルの記述例(VariableArray型のプロパティを追加する場合)」を参照してください。
  • dmaProp_IsSelectableプロパティ
    追加するプロパティが検索結果集合の一項目として選択できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索結果集合の一項目として選択できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索結果集合の一項目として選択できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsSearchableプロパティ
    追加するプロパティが検索の条件として使用できるかどうかを指定するBoolean型の値です。値として「1」を指定した場合は,このプロパティが検索の条件として使用できるプロパティであることを示します。値として「0」を指定した場合は,このプロパティが検索の条件として使用できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsOrderableプロパティ
    追加するプロパティが検索結果をソートする基準として使用できるプロパティであるかどうかを示すBoolean型の値です。値として「1」を指定した場合は,検索結果をソートする基準として使用できるプロパティであることを示します。値として「0」を指定した場合は,検索結果をソートする基準として使用できないプロパティであることを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsValueRequiredプロパティ
    追加するプロパティが値を保持する必要があるかどうかを示すBoolean型の値です。値として「1」を指定した場合は,追加するプロパティは値を保持する必要のあるプロパティであることを示します。値として「0」を指定した場合は,追加するプロパティは値を保持しなくてもよいプロパティであることを示します。定義するプロパティの基本単位がList型である場合,このプロパティの値に「1」を指定すると,リストが必ず一つの要素を含むことを示します。指定を省略した場合,「0」が仮定されます。
  • dmaProp_IsHiddenプロパティ
    追加するプロパティが,システム管理者だけに表示するプロパティであるかどうかを示すBoolean型の値です(ただし,この例題では指定を省略しています)。値として「1」を指定した場合は,システム管理者だけに公開されるプロパティとなります。値として「0」を指定した場合は,アクセスをシステム管理者だけに制限しないプロパティとなります。指定を省略した場合,「0」が仮定されます。なお,DocumentBrokerは,このプロパティの値によるプロパティへのアクセスを制御しません。
  • dmaProp_PropertyDefaultStringプロパティ
    追加するプロパティにデフォルトで設定されるString型の値です。255バイト以下の値を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_STRINGの場合だけ指定できます。指定を省略した場合,長さ0(バイト)の文字列が仮定されます。
  • dmaProp_PropertyDefaultInteger32プロパティ
    追加するプロパティにデフォルトで設定されるInteger32型の値です。Integer32型の値を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_INTEGER32の場合だけ指定できます。指定を省略した場合,「0」が仮定されます。
  • dmaProp_PropertyDefaultBooleanプロパティ
    追加するプロパティにデフォルトで設定されるBoolean型の値です。「0」または「1」を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_BOOLEANの場合だけ指定できます。指定を省略した場合,「0」が仮定されます。
  • dmaProp_MaximumLengthStringプロパティ
    追加するプロパティのデータ型がString型の場合,プロパティの値(NULL文字以外)の最大長です。文字列の長さを1~32,000で表します。指定を省略した場合,「1」が仮定されます。なお,このプロパティの値は,追加するプロパティのデータ型がString型(dmaProp_DataTypeプロパティの値が「DMA_DATATYPE_STRING」)である[AddProperty]の仮定として有効になります。

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

追加するサブクラスの定義とそのサブクラスに追加するプロパティの定義について記述します。記述例を次に示します。

;
; 問題点管理ドキュメント用のサブクラスの定義
;
[AddSubClass]
dmaProp_DisplayName=text=dmaClass_DocVersion/usrClass_ProbInfoDoc

;
; 問題点分類(usrProp_Categoryプロパティの定義)
;
[AddProperty/usrClass_ProbInfoDoc]
dmaProp_DisplayName=text=usrProp_Category
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 問題点発生日時(usrProp_DateOfProbプロパティの定義)
;
[AddProperty/usrClass_ProbInfoDoc]
dmaProp_DisplayName=text=usrProp_DateOfProb
dmaProp_DataType=int=DMA_DATATYPE_INTEGER32

;
; 検討結果(usrProp_Statusプロパティの定義)
;
[AddProperty/usrClass_ProbInfoDoc]
dmaProp_DisplayName=text=usrProp_Status
dmaProp_DataType=int=DMA_DATATYPE_BOOLEAN

;
; 解決日時(usrProp_DateOfResolveプロパティの定義)
;
[AddProperty/usrClass_ProbInfoDoc]
dmaProp_DisplayName=text=usrProp_DateOfResolve
dmaProp_DataType=int=DMA_DATATYPE_INTEGER32

########

;
; 設計ドキュメント用のサブクラスの定義
;
[AddSubClass]
dmaProp_DisplayName=text=edmClass_VersionTracedDocVersion/usrClass_DesignDoc

;
; 文書名(usrProp_DocNameプロパティの定義)
;
[AddProperty/usrClass_DesignDoc]
dmaProp_DisplayName=text=usrProp_DocName
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 執筆者(usrProp_DocWriterプロパティの定義)
;
[AddProperty/usrClass_DesignDoc]
dmaProp_DisplayName=text=usrProp_DocWriter
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 特許情報(usrProp_PatentInfoプロパティの定義)
;
[AddProperty/usrClass_DesignDoc]
dmaProp_DisplayName=text=usrProp_PatentInfo
dmaProp_DataType=int=DMA_DATATYPE_STRING

;
; 執筆日時(usrProp_DateOfWriteプロパティの定義)
;
[AddProperty/usrClass_DesignDoc]
dmaProp_DisplayName=text=usrProp_DateOfWrite
dmaProp_DataType=int=DMA_DATATYPE_INTEGER32

記述例について説明します。

サブクラスを追加するためのアクション名とプロパティの説明
サブクラスを追加するための定義情報には,アクション名として[AddSubClass]を指定します。アクション名に続くエントリには,次に示すプロパティとその値を指定します。
  • dmaProp_DisplayNameプロパティ
    追加するサブクラス名を値として指定します。サブクラスを追加するスーパークラス名のあとに「/」(スラント)で区切ってサブクラス名を指定します。
    この例題では,問題点管理ドキュメントを管理するためのサブクラスは,dmaClass_DocVersionクラスのサブクラスとして定義します。したがって,このプロパティの値には「dmaClass_DocVersion/usrClass_ProbInfoDoc」を指定しています。また,設計ドキュメントを管理するためのサブクラスは,edmClass_VersionTracedDocVersionクラスのサブクラスとして定義します。したがって,このプロパティの値には「edmClass_VersionTracedDocVersion/usrClass_DesignDoc」を指定しています。
  • dmaProp_DescriptiveTextプロパティ
    追加するサブクラスを簡単に説明する文字列を値として指定します。省略した場合,dmaProp_DisplayNameプロパティに指定した値から「スーパークラス名/」を除いたサブクラス名(ここでは,usrClass_ProbInfoDoc)が仮定されます。なお,この例題では指定を省略しています。
  • dmaProp_Idsプロパティ
    追加するサブクラスに付与するGUIDを値として指定します。指定を省略した場合,メタ情報の追加コマンド(EDMAddMeta)を実行するときに,-gオプションを必ず指定してください。なお,この例題では指定を省略しています。
サブクラスにプロパティを追加するためのアクション名とプロパティの説明
プロパティを追加する場合は,アクション名[AddProperty/クラス名]とそれに続くエントリとしてプロパティ自身のプロパティを記述します。アクション名に続くエントリには,次に示すプロパティとその値を指定できます。
[AddProperty/クラス名]に続くエントリとして指定するプロパティ
ほかのクラスに同じプロパティが定義されていない場合,次のプロパティは[AddProperty/クラス名]に続くエントリとして指定してください。これらのプロパティは,[AssumeProperty/データタイプ]には指定できません。指定するプロパティとその値について次に示します。
  • dmaProp_DisplayNameプロパティ
    追加するプロパティ名を値として指定します。この値の指定は省略できません。なお,この例題では表4-15に示したプロパティ名を指定しています。
  • dmaProp_DescriptiveTextプロパティ
    追加するプロパティを簡単に説明する文字列を値として指定します。指定を省略した場合,dmaProp_DisplayNameプロパティに指定したプロパティ名が仮定されます。なお,この例題では指定を省略しています。
  • dmaProp_Idsプロパティ
    追加するプロパティに付与するGUIDを値として指定します。指定を省略した場合,メタ情報の追加コマンド(EDMAddMeta)を実行するときに,-gオプションを必ず指定してください。なお,この例題では指定を省略しています。
  • dmaProp_DataTypeプロパティ
    追加するプロパティのデータ型を示す文字列を指定します。なお,この文字列の指定は,省略できません。データ型とデータ型を示す文字列の対応を次の表に示します。

    表4-16 データ型とデータ型を示す文字列の対応

    データ型データ型を示す文字列
    String型DMA_DATATYPE_STRING
    Integer32型DMA_DATATYPE_INTEGER32
    Boolean型DMA_DATATYPE_BOOLEAN
[AddProperty/クラス名]に続くエントリとして指定するプロパティ(複数のクラスに同じ名前のプロパティを追加し,クラスごとにデフォルト値を定義する場合)
複数のクラスに同じ名前のプロパティを追加する場合は,プロパティのデフォルト値をクラスごとに設定できます。クラスごとにデフォルト値を定義するには,次に示すプロパティを[AddProperty/クラス名]に続くエントリとして指定してください。
  • dmaProp_PropertyDefaultStringプロパティ
    追加するプロパティにデフォルトで設定されるString型の値です。255バイト以下の値を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_STRINGの場合だけ指定できます。指定を省略した場合,長さ0(バイト)の文字列が仮定されます。
  • dmaProp_PropertyDefaultInteger32プロパティ
    追加するプロパティにデフォルトで設定されるInteger32型の値です。Integer32型の値を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_INTEGER32の場合だけ指定できます。指定を省略した場合,「0」が仮定されます。
  • dmaProp_PropertyDefaultBooleanプロパティ
    追加するプロパティにデフォルトで設定されるBoolean型の値です。「0」または「1」を指定できます。このプロパティは,dmaProp_DataTypeプロパティがDMA_DATATYPE_BOOLEANの場合だけ指定できます。指定を省略した場合,「0」が仮定されます。
クラスごとのプロパティのデフォルト値の設定を有効にするには,-Dオプションを指定してメタ情報の追加コマンド(EDMAddMeta)を実行します。-Dオプションを省略すると,データ型ごとのプロパティのデフォルト値の設定が有効になります。メタ情報の追加コマンド(EDMAddMeta)については,「7.3 コマンドの文法」の「EDMAddMeta(メタ情報の追加)」を参照してください。
[AssumeProperty/データタイプ]にも指定できるプロパティ
次に示すプロパティは,[AssumeProperty/データタイプ]に続くエントリとしても指定できます。ただし,[AddProperty/クラス名]に続くエントリに同じプロパティが指定されている場合は,[AddProperty/クラス名]に指定されている値を優先します。[AddProperty/クラス名]の値を省略した場合で,かつ[AssumeProperty/データタイプ]の値も省略した場合は,各プロパティでの省略値が仮定されます。
  • dmaProp_Cardinalityプロパティ
  • dmaProp_IsSelectableプロパティ
  • dmaProp_IsSearchableプロパティ
  • dmaProp_IsOrderableプロパティ
  • dmaProp_QueryOperatorDescriptionsプロパティ
  • dmaProp_IsValueRequiredプロパティ
  • dmaProp_IsHiddenプロパティ
  • dmaProp_MaximumLengthStringプロパティ
なお,この例題ではこれらのプロパティとその値を[AssumeProperty/データタイプ]のエントリとして指定しています。すなわち,すでに仮定値は指定されています。