Rubrique précédente: Instruction OBJECTRubrique suivante: Instruction facultative FACTORY


Instruction facultative ATTRIBUTES

Instruction facultative de l’instruction OBJECT qui définit les propriétés de l’objet.

Syntaxe

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 ;];]};]

Arguments

table_name

Nom de la table de la base de données qui stocke les valeurs associées aux attributs de l’objet. Si le nom de la table n’est pas spécifié, on utilise obj_name de l’instruction OBJECT.

att_name

Nom de l’attribut. Chaque attribut correspond généralement à un champ (colonne) de la table de base de données.

field_name

Il s’agit du nom du champ dans la table de la base de données ou LOCAL si l’attribut n’est pas mis en correspondance avec un champ, ou DERIVED (derived-expr) si l’attribut est dérivé d’autres attributs. Si vous ne précisez pas LOCAL, DERIVED et un nom de champ, ce dernier est supposé être le même que celui de l’attribut.

Une variable déclarée comme DERIVED est générée uniquement lorsque sa valeur est extraite. L’opérande de DERIVED contient la liste des noms d’attributs et des constantes de chaîne, séparés par des espaces. Tous les attributs dans une valeur dérivée doivent être des valeurs simples (c’est-à-dire qu’il ne doit pas s’agir de valeurs xREL), et ils doivent être déclarés avant la variable dérivée. La valeur de l’attribut dérivé est la concaténation des valeurs de ses composantes.

Les constantes de chaîne dans une expression dérivée peuvent contenir des références à des variables d’environnement, sous l’une des formes suivantes :

${var}

${var#pattern}

${var#pattern#replacement}

Ces spécifications sont remplacées par la valeur de la variable d’environnement lors du démarrage du processus domsrvr. L’opérande #pattern est facultatif. S’il est indiqué, il est traité comme une expression régulière, et il est remplacé chaque fois qu’il apparaît dans la valeur de la variable d’environnement. Si l’opérande #replacement n’est pas spécifié, sa valeur par défaut est nulle (NULL). Le modèle ne peut pas contenir le symbole # étant donné qu’il s’agit d’un délimiteur fixe. L’utilisation des attributs dérivés dans d’autres messages n’est soumise à aucune restriction. Les attributs dérivés se comportent de la même manière que les attributs standard. Une liaison interactive pour une valeur dérivée est déclenchée chaque fois que l’un des attributs sur lesquels elle repose change.

value_type

Identifie le type de données de la valeur de l’attribut comme suit :

Si STRING est spécifié, vous pouvez définir la taille à l’aide d’un nombre entier placé après STRING. Si aucune taille n’est spécifiée, le système utilise celle figurant dans la base de données.

La valeur UUID est composée de 16 octets de données binaires qui sont utilisées comme identificateur unique pour certains enregistrements de base de données.

SREL fait pointer l’attribut vers un autre objet. Si SREL est spécifié, vous devez définir obj2_name pour identifier l’objet auquel l’attribut fait référence.

srel_name spécifie un SREL « nommé ». Tout comme un SREL « simple », un SREL « nommé » est un type d’attribut OBJECT MAJIC qui représente une relation, qui identifie de manière unique une ligne d’une autre table (ob2_name). En général, un attribut SREL « simple » est mis en correspondance avec le champ « id » d’une autre table. En revanche, un SREL « nommé » met en correspondance au moins deux attributs (name, name2, …) avec au moins deux attributs de la table référencée qui identifient de manière unique une ligne de la table référencée.

access_type

Définit l’accès à l’attribut. Les valeurs valides sont :

Valeur

Description

CONST

Modification impossible

PRIVATE

Lecture seule

PUBLIC

Accès en lecture/écriture (valeur par défaut)

WRITE_NEW

Peut être écrit uniquement lors de la création de l’objet, avant son enregistrement.

status_type

Indique l’état de l’attribut, comme suit :

DISPLAY_NAME string

Spécifie une chaîne à utiliser à la place du nom de l’attribut dans les messages concernant cet attribut ; par exemple, « attribut obligatoire manquant »

Instructions ON

Utilisez l’une de ces instructions uniquement lorsque value_type a la valeur INTEGER, STRING, DATE ou SREL.

ON_NEW DEFAULT|SET value|NOW

Indique que la valeur d’un attribut doit être définie lors de la création de l’objet :

Valeur

Description

DEFAULT

Modifie une valeur NULL actuelle en value ou NOW.

SET

Modifie toute valeur actuelle en value ou NOW.

value

Spécifie une valeur numérique ou de chaîne, selon le type de données de l’attribut.

MAINTENANT

Spécifiez NOW si l’attribut est de type DATE, afin de le définir aux date et heure actuelles.

Dans l’exemple suivant, 90 est la valeur par défaut définie lors de la création de l’objet :

ON_NEW DEFAULT 90 ;
ON_CI DEFAULT|SET value|NOW

Indique que vous devez définir la valeur d’un attribut lorsqu’il est intégré dans la base de données. Reportez-vous à la description de chaque paramètre de ON_NEW.

ON_DB_INIT DEFAULT|SET value|NOW

Indique que vous devez définir la valeur d’un attribut lors de son instanciation à partir de la base de données. Reportez-vous à la description de chaque paramètre de ON_NEW.

Exemple

Cet exemple définit des attributs portant des noms tels que start_date, dont les valeurs sont stockées dans les champs tels que nlh_start dans la table Notify_Log_Header de la base de données. Les noms des champs sont suivis du type de données de chaque attribut. Des paramètres facultatifs définissent l’accès à certains des attributs, indiquent si l’attribut est obligatoire et précisent quand définir la valeur de certains attributs aux date et heure actuelles.

Par exemple, vous définissez un attribut nommé last_mod ; sa valeur est définie aux date et heure actuelles lorsque l’attribut est intégré dans la base de données. Un attribut nommé contact est également défini ; sa valeur est une relation unique stockée dans le champ nlh_c_addressee de la base de données. L’objet référencé est 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 ;} ;

};