Opérations logiques sur les sélections d’entités

Traduit automatiquement de Deepl

La série ORDA continue ! Dans ce billet, nous allons voir comment utiliser les opérateurs logiques sur les sélections d’entités!

Ces opérations vous permettent d’obtenir des intersections, des unions ou des différences entre deux sélections d’entités comme vous pouvez le faire avec les ensembles 4D classiques.

Exemple d’opérateurs logiques sur des sélections d’entités

Dans la version classique de 4D, vous utilisez des ensembles pour effectuer des opérations logiques sur les résultats de plusieurs requêtes. Vous devez créer un ensemble après chaque requête, effectuer l’opération logique sur les ensembles, et enfin mettre à jour la sélection courante de la table concernée avec l’ensemble des résultats. C’est un peu lourd ! Heureusement, avec ORDA les choses deviennent beaucoup plus légères ! Chaque requête vous donne une sélection d’entités à laquelle lesopérateurs logiques peuvent être directement appliqués !

ORDA fournit les méthodes suivantes pour effectuer des opérations logiques sur deux sélections d’entités :

and() : obtient l’intersection entre deux sélections d’entités (entités appartenant aux deux)

or() : obtient l’union entre deux sélections d’entités (entités appartenant à l’une ou à l’autre).

minus() : obtenir la différence entre deux sélections d’entités (entités appartenant à l’une et pas à l’autre).

Ces méthodes peuvent également être appliquées à une sélection d’entités et à une entité individuelle.

Exemple

Un exemple vaut mille mots ! Intéressons-nous aux employés et à leurs préférences alimentaires.

CLASSIQUE 4D :

//A named selection "meat" is created before
// ...
QUERY BY ATTRIBUTE([Employé] ; [Employé]food; "poisson";=;Vrai)
CREATE SET ([Employé] ; "poisson")
USE NAMED SELECTION ("viande")
CREATE SET ([Employé] ; "viande")
UNION ("poisson" ; "viande" ; "résultat")
USE SET ("résultat")
CLEAR SET ("viande")
CLEAR SET ("poisson")
CLEAR SET ("résultat")

ORDA :

Ici, nous avons une méthode qui reçoit une sélection d’entités comme paramètre. Nous retournons l’union de la sélection d’entités $eatingMeat et de la sélection d’entités $eatingFish.

C_OBJECT($eatingFish;$1;$eatingMeat;$result)

$eatingMeat :=$1
//Get employees eating fish
$eatingFish :=ds.Employee.query("food.fish=:1";True)
//Get the union of the 2 entity selections $eatingMeat and $eatingFish
$result:=$eatingMeat.or($eatingFish)
$0 :=$result

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert a rejoint l'équipe de 4D Product en tant que Product Owner en 2017. En tant que Product Owner, elle est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Marie-Sophie est diplômée de l'école d'ingénieur ESIGELEC et a commencé sa carrière en tant qu'ingénieur chez IBM en 1995. Elle a participé à divers projets (projets de maintenance ou de construction) et a travaillé en tant que développeur Cobol. Elle a ensuite travaillé en tant que concepteur UML et développeur Java. Dernièrement, ses principaux rôles étaient d'analyser et de rédiger des exigences fonctionnelles, de coordonner les équipes commerciales et de développement.