オブジェクトのプロパティを定義する OBJECT ステートメントのオプションのステートメント。
ATTRIBUTES [table_name]{
att_name [field_name] value_type [access_type[status_type][DISPLAY_NAME string]]{
[ON_NEW DEFAULT|SET value|NOW ;]
[ON_CI DEFAULT|SET value|NOW ;]
[ON_DB_INIT DEFAULT|SET value|NOW ;];]};]
オブジェクトの属性に関連付けられている値の保存先となるデータベースのテーブルの名前。 テーブル名を指定しないと、OBJECT ステートメントの obj_name が使用されます。
属性の名前。 各属性は通常、データベース テーブルのフィールド(列)にマップされます。
データベース テーブルのフィールドの名前。属性がフィールドにマップされていない場合は LOCAL、属性がほかの属性から派生したものである場合は DERIVED(derived-expr)となります。 LOCAL でも DERIVED でもなく、フィールド名も指定しない場合は、フィールドの名前は属性の名前と同じであると見なされます。
DERIVED として宣言した変数は、その値の取得時にのみ生成されます。 DERIVED のオペランドには、属性名と文字列定数をスペースで区切ったリストが含まれています。 派生値のどの属性も単純な値(つまり、相互参照できない値)であり、派生変数よりも前に宣言する必要があります。 派生属性の値は、その構成要素値の値を連結したものです。
派生式内の文字列定数には、以下のいずれかの形式で環境変数への参照が含まれることがあります。
${var}
${var#pattern}
${var#pattern#replacement}
このように指定した値は、domsrvr 起動時に環境変数の値で置き換えられます。 #pattern オペランドはオプションです。 指定すると正規表現として扱われ、環境変数の値のどこに指定しても置き換えられます。 #replacement オペランドは、指定しないとデフォルトでは Null となります。 # は固定区切り文字であるため、パターンには # シンボルを含めることができません。 ほかのメッセージで派生属性を使用することについて制限はありません。 標準属性と同じように動作します。 生成元の属性のいずれかが変更されるたびに、派生属性のホットリンクが発生します。
属性の値のデータ型が以下のいずれかであると見なします。
STRING を指定すると、STRING に続けて整数でサイズを指定できます。 サイズを指定しないと、データベース内の値が使用されます。
UUID は、特定のデータベース レコードの一意の識別子として使用される 16 バイトのバイナリ データです。
SREL は、属性が別のオブジェクトを参照するようにするものです。 SREL を指定した場合は、obj2 _name を指定して属性が参照するオブジェクトを特定する必要があります。
srel_name は「名前付きの」SREL です。 「単純な」SREL と同じく、「名前付きの」ものも、単一の関係を表す一種の MAJIC OBJECT 属性であり、別のテーブル(ob2 _name)にある行を一意に識別します。 「単純な」SREL 属性は通常、別のテーブルの[ID]フィールドにマップされますが、「名前付きの」SREL は 2 つ以上の属性(name、name2 など)を参照先のテーブルの 2 つ以上の属性にマップして、参照先のテーブルの行を一意に識別します。
属性へのアクセスを定義します。 有効な値は以下のとおりです。
|
値 |
説明 |
|---|---|
|
CONST |
変更は不可です。 |
|
PRIVATE |
読み取り専用 |
|
PUBLIC |
読み取り/書き込みアクセス(デフォルト) |
|
WRITE_NEW |
オブジェクトを作成し、そのオブジェクトを保存する前に限り、書き込むことができます |
属性のステータスが以下のいずれかであることを示します。
「必要な属性がありません。」など、この属性に関するメッセージ内の属性名の代わりに使用される文字列を指定します。
value_type が INTEGER、STRING、DATE、または SREL である場合に限り、以下のいずれかを使用します。
オブジェクトを初めて作成するときに属性の値を設定することを示します。
|
値 |
説明 |
|---|---|
|
DEFAULT |
現在の Null 値を value または NOW に変更します。 |
|
SET |
現在の値を value または NOW に変更します。 |
|
value |
属性のデータ型に応じて、数値または文字列値を指定します。 |
|
現在の日時 |
属性が DATE 型である場合に指定します。指定すると、属性は現在の日時に設定されます。 |
以下の例では、90 がオブジェクトの作成時にデフォルトとして設定される値です。
ON_NEW DEFAULT 90 ;
属性をデータベースにチェックインするときに属性の値を設定することを示します。 ON_NEWの各パラメータの説明を参照してください。
データベースから属性のインスタンスを生成するときに属性の値を設定することを示します。 ON_NEWの各パラメータの説明を参照してください。
この例では、データベースの Notify_Log_Header テーブルにあるフィールド(nlh_start など)に値が保存される名前付きの属性(start_date など)を定義しています。 フィールド名に続けて、各属性のデータ型を指定しています。 オプションの各パラメータでは、一部の属性へのアクセスを定義し、属性が必須であることを示し、一部の属性の値を現在の日時に設定するタイミングを指定しています。
たとえば、last_mod という属性を定義しています。その値は、属性がデータベースにチェックインされるときに現在の日時に設定されます。 contact という属性も定義しています。その値は、データベース フィールド nlh_c_addressee に保存される単一の関係です。 参照されるオブジェクトは cnt です。
ATTRIBUTES Notify_Log_Header {
start_date nlh_start DATE WRITE_NEW {ON_NEW DEFAULT NOW;} ;
last_mod DATE {ON_CI SET NOW ;} ;
msg_hdr nlh_hdr STRING 20 WRITE_NEW ;
msg_text nlh_msg STRING WRITE_NEW ;
msg_ack nlh_user_ack STRING ;
contact nlh_c_addressee SREL cnt WRITE_NEW ;
notify_method nlh_cm_method INTEGER WRITE_NEW ;
activity_notify nlh_transition INTEGER WRITE_NEW ;
pri_event nlh_pri INTEGER WRITE_NEW ;
notify_type nlh_type INTEGER WRITE_NEW ;
ack_time nlh_ack_time DURATION ;
status nlh_status INTEGER REQUIRED ;
end_date nlh_end DATE {ON_NEW DEFAULT NOW ;} ;
};
|
Copyright © 2013 CA.
All rights reserved.
|
|