ORDA – Dites bonjour aux alias

Traduit automatiquement de Deepl

4D v19 R4 est livré avec un nouveau concept ORDA : Les alias. Ils sont la suite logique et complémentaire des attributs calculés.

Ce billet de blog explique ce que sont les alias et souligne leurs avantages, notamment quand utiliser l’un ou l’autre… ou les deux.

HDI : ALIAS ORDA

Qu’est-ce qu’un alias ?

Comme son nom l’indique, un alias n’est rien d’autre qu’un synonyme ou un raccourci d’un objet de datastore existant. Comme les attributs calculés, ils sont définis dans la « classe de données de l’entité », comme nous le verrons plus tard.

Il peut s’agir, par exemple, d’un attribut existant dans la classe de données elle-même, ou plus souvent dans une autre classe de données. Comme un attribut calculé, un alias est utilisé pour référencer une valeur scalaire, une entité ou une sélection d’entités.

Alias ou attributs calculés ?

Vous vous demandez peut-être pourquoi vous devriez utiliser des alias alors que vous disposez déjà d’attributs calculés.

La règle est simple, et vous pouvez l’appliquer sans risque :

Un alias devrait être utilisé si aucun calcul n’ est nécessaire et que le résultat (scalaire, entité ou sélection d’entités) peut être exprimé comme un chemin.
Par exemple : pèresPapa = père.père

Si un calcul doit être effectué (capitalisation, concaténation, recherches, formules, etc.), il doit s’agir d’un attribut calculé.
Ex. : fullname = uppercase (lastname) + firstname

Un exemple SIMPLE ET concret

Prenons l’exemple classique des Sociétés et des Employés.

Dans la classe de données Employé, vous voulez un attribut companyName.
Comme il s’agit d’un attribut simple accessible via un chemin, un simple alias suffit. 4D optimisera les recherches, les requêtes et les tris comme si la cible était utilisée directement.

//Employees Class
Class extends Entity
Alias
companyName company.name

De la même manière, dans la classe de données Companies, vous voulez accéder à la liste de employees (cette fois, une sélection d’entités) ; un alias sera également suffisant.

//Companies Class
Class extends Entity
Alias
companyEmployees employees

Par contre, si dans le dataclass Employee vous voulez accéder à l’attribut coworkers (liste des employés ayant le même manager), vous devrez créer un attribut calculé qui sera une sélection d’entité () calculée comme ceci :

//Employees Class
Class extends Entity

Function get coworkers
()->$entitySelection : cs.Employees
$entitySelection := this.manager.directReports.minus(this)

Il en va de même pour la table company ; un attribut calculé sera obligatoire si vous souhaitez afficher la liste des chefs de département, etc.

Exemples d’utilisation d’alias

Les exemples suivants sont basés sur la structure physique décrite ci-dessous : Les personnes peuvent être des étudiants ou des professeurs (ou les deux) et enseigner et apprendre des langues. Les Leçons sont la classe de données centrale qui relie les Personnes (professeurs et étudiants) et les Langues.

« Aplatir » une table

Vous souhaitez masquer les relations et faire « comme si » les attributs appartenaient directement à une classe de données plutôt qu’à une autre.

Ex : Plutôt que d’utiliser professor.name, student.name et Language.name en fonction de la relation entre Leçons, Personnes et Langue, vous pouvez préférer aplatir la classe de données Leçons en utilisant des alias :

//LessonsEntity Class
Class extends Entity

Alias professorName professor.name
Alias studentName student.name
Alias languageName language.name

Cela permettra d’afficher les leçons en utilisant des alias directs !

blank

CACHER LES RELATIONS « N->P

Les classes de données intermédiaires Lessons peuvent même être entièrement cachées, à condition que toutes les relations soient définies.
Dans l’exemple ci-dessus, on peut définir pour chaque personne :

    • les leçons qu’ils suivent
    • les leçons qu’ils donnent
    • les étudiants qu’ils ont (s’ils offrent des cours)
    • les professeurs qu’ils ont (s’ils suivent des cours)

//PeopleEntity Class
Class extends Entity
// entity selection of followed lessons

Alias followedLessons learning.language
// entity selection of given lessons

Alias givenLessons teaching.language
// entity selection of professors
Alias professors learning.professor
// entity selection of students
Alias students teaching.student

Conclusion

Consultez l’IDH ci-dessus et apprenez-en davantage sur les cas d’utilisation des alias. Vous trouverez également plus de détails sur le centre de documentation.

Pour plus de détails, la documentation peut être trouvée ici.

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.