Téléchargement des produits


Version anglaise


 

Cet objet permet de décrire une structure typée, composée de types Adélia simples, de tableaux et de classes.

La classe possède un source L4G qui sert à décrire l'ensemble de ses attributs.


Le source Adélia de la classe est modifiable via l'éditeur L4G.


A l'instar des autres objets du référentiel Adélia, la classe peut être créée, modifiée, copiée, supprimée, etc.


Elle possède donc son propre cycle de vie : mise en correction, gestion des droits, etc.


Une fois créée, la classe est manipulable dans les programmes Visual Adélia Batch destinés à être générés en tant que service Web REST ou dans les programmes Visual Adélia destinés à être générés en Adélia Cloud.

La classe est manipulable via l'ordre déclaratif REF_CLASSE et via l'opérateur de création d'instance NEW.


Afin d'être utilisable en exécution, la classe doit être générée sous la forme d'un POJO (Plain Old Java Object).



Syntaxe Adélia d'une classe

Classe

-> *ATTRIBUTS SerClsOptions { Attributs }


SerClsOptions

-> SerClsOption SerClsOptions



-> rien


SerClsOption

-> *SER_NOM('NomElem')



-> *SER_DESC('Description')


Attributs

 -> Attribut SuiteAttributs


SuiteAttributs

-> Attribut SuiteAttributs



-> rien


Attribut

-> DefAttribut SerOptions


DefAttribut

-> ALPHA(n)

NomAttribut


-> NUM_E(x,y)

NomAttribut


-> NUM_BIN_2

NomAttribut


-> NUM_BIN_4

NomAttribut


-> NUM_BIN_8

NomAttribut


-> BOOL

NomAttribut


-> DATE

NomAttribut


-> TIME

NomAttribut


-> TIMESTAMP

NomAttribut


-> IMAGE

NomAttribut


-> REF_CLASSE(NomClasse)

NomAttribut


-> REF_MLD(entité)



-> REF(ProprieteLogique Entite)

NomAttribut

SerOptions

-> SerOptions SerOptions



-> rien


SerOption

-> *SER_NOM('NomElem')



-> *SER_FACULTATIF



-> *SER_FACULTATIF('ValDefaut')



-> *SER_MODE(SerMode)



-> *SER_WRAPPER('NomElemWrapper')



-> *SER_DESC('Description')



-> *SER_EXEMPLE('Valeur')



-> *SER_EXEMPLE()

SerMode

-> *VERBEUX



-> *COMPACT



Les différents attributs de la classe sont séparés par un point-virgule.


Un commentaire commence par "/*" et se termine par un "*/".


REF_CLASSE permet d'inclure une sous-classe comme attribut.

Il est possible d'indiquer *OBJET comme nom de classe (NomClasse) afin d'inclure une sous-classe générique (object) comme attribut.


REF_MLD permet de définir comme attributs toutes les propriétés logiques faisant référence à l'entité mentionnée.


REF permet de définir un attribut en faisant référence à une propriété logique et à une entité logique du MLD.


De plus, chaque attribut peut être un tableau, à une ou deux dimensions.


Dans le cas d'un tableau à une dimension, la taille peut ne pas être précisée lors de la déclaration de l'attribut, en utilisant la syntaxe () sans spécifier de nombre.

Par exemple : NUM_BIN_2 AttributBin2TableauNonBorne();


Ce tableau pourra être alloué dynamiquement (via l'ordre NEW) si nécessaire, sa taille pourra être consultée via la fonction prédéfinie &DIM_TABLEAU et le nombre d'éléments pourra être consulté via la fonction &NBR_ELT.
Par ailleurs il sera possible d'ajouter un élément en fin de tableau grâce au setter et à l'indice *FIN.


En vue d'adapter la sérialisation XML/JSON d'une classe Adélia, il est possible de fournir des indications spécifiques sur chaque attribut.

  • *SER_NOM('NomElem') : Par défaut, la sérialisation utilise le nom de la classe ou le nom de l'attribut comme nom d'élément. La directive *SER_NOM permet de modifier ce nom.

  • *SER_FACULTATIF ou *SER_FACULTATIF('ValDefaut') : Par défaut, un élément est toujours présenté comme obligatoire. La directive *SER_FACULTATIF permet de désigner un élément comme facultatif en lui assignant éventuellement une valeur par défaut (hormis pour le type IMAGE).
    Les valeurs sont toujours encadrées par des quotes. Pour les types DATE, TIME et TIMESTAMP les valeurs doivent être au format ISO. Le type BOOL prend les valeurs 'true' ou 'false'.

  • *SER_MODE : Cette directive permet de choisir un mode de sérialisation. A ce jour, cette directive est applicable uniquement au type IMAGE, avec l'une des deux options suivantes :

    • *VERBEUX : mode par défaut avant la V13 PTF07 Fix01. Ce mode est désormais déprécié, à utiliser uniquement pour assurer une compatibilité avec un existant.

    • *COMPACT : mode par défaut à partir de la V13 PTF07 Fix01. Le type IMAGE est sérialisé sous forme d'un élément unique dont la valeur est une chaîne encodée en base64.

  • *SER_WRAPPER : Permet pour les attributs de type TABLEAU, dans le cas d'une sérialisation XML, d'ajouter un élément englobant du nom indiqué. Pour la sérialisation JSON, cette directive donne le même résultat que la directive *SER_NOM.

  • *SER_DESC : Permet d'associer une description (pour la classe ou un attribut de la classe) pour la présentation dans swagger.
    • *SER_EXEMPLE : Permet d'associer une valeur exemple pour l'attribut ; cette valeur exemple est utilisée dans swagger.
      Les valeurs sont toujours encadrées par des quotes. Pour les types DATE, TIME et TIMESTAMP les valeurs doivent être au format ISO. Le type BOOL prend les valeurs 'true' ou 'false'. Pour le type IMAGE, il faut passer une chaîne encodée en base64 (dans la limite de 5000 caractères).
      Si aucune valeur n'est spécifiée [*SER_EXEMPLE()], une valeur exemple est générée par défaut.
      Remarque : Les attributs de type TABLEAU ne peuvent pas bénéficier de valeur exemple.



↑ Haut de page

Exemple de sources L4G de classes

*ATTRIBUTS

{

ALPHA(31)        Nom;

ALPHA(32)        Prenom;    

DATE                 DateNaissance *SER_FACULTATIF('1901-01-01');

TIME                 HeureNaissance *SER_FACULTATIF('01:01:01');

TIMESTAMP     TMSNaissance *SER_FACULTATIF('1901-01-01T01:01:01.000');

BOOL               Emma *SER_FACULTATIF('true');

}


*ATTRIBUTS

{

/* Commentaire libre possible */

REF_CLASSE(PERSONNE)     Pere;

REF_CLASSE(PERSONNE)     Mere;

ALPHA(32)                                Adresse;

NUM_E(8,2)                              Taille1;

NUM_P(8,3)                              Taille2;

NUM_BIN_4                             CodePostal *SER_FACULTATIF('38000');

NUM_BIN_4                             MaTable1D(11);

ALPHA ( 13 )                            MaTable2D(11);

NUM_E ( 6 , 0 )                        MaTableInfinie();

REF_CLASSE(PERSONNE)   EnfantsTableau();

ALPHA(31)                               VoituresTableau(5);

REF_MLD(STOCK);

}


*attributs

{

ALPHA(15)     Marque;

ALPHA(250)   Modele;

REF(PL_NBCV ENTL_DEFCAR) NbCv;

NUM_BIN_2  NbCv;

DATE              DatAchat;

}


*ATTRIBUTS *SER_NOM('NomModele') *SER_DESC('Définition d''une personne')

{

ALPHA(31)        Nom *SER_NOM('LastName') *SER_DESC('Nom de la personne');

ALPHA(32)        Prenom *SER_NOM('FirstName') *SER_DESC('Prénom de la personne');;

ALPHA(15)        Pays *SER_NOM('Country') *SER_FACULTATIF('France');

IMAGE              Picture *SER_MODE(*VERBEUX) *SER_DESC('Photo du profil de la personne');

REF_CLASSE(PERSONNE)   EnfantsTableau() *SER_WRAPPER('Children') *SER_NOM('Child') *SERC_DESC ('Enfants de la personne');

}


↑ Haut de page


  • Aucune étiquette