Logische Operationen auf Entitätsselektionen

Automatisch übersetzt von Deepl

Die ORDA-Serie geht weiter! In diesem Blog-Beitrag werden wir sehen, wie man logische Operatoren auf Entitätsselektionen anwenden kann!

Mit diesen Operatoren können Sie Schnittpunkte, Vereinigungen oder Unterschiede zwischen zwei Entitätsselektionen ermitteln, wie Sie es mit klassischen 4D Sets tun können.

Beispiel für logische Operatoren auf Entity-Auswahlen

Im klassischen 4D verwenden Sie Sets, um logische Operationen auf mehrere Abfrageergebnisse anzuwenden. Sie müssen nach jeder Abfrage ein Set erstellen, die logische Operation auf den Sets durchführen und schließlich die aktuelle Auswahl der betreffenden Tabelle mit dem Ergebnis-Set aktualisieren. Das ist ein bisschen schwerfällig! Zum Glück wird das mit ORDA viel einfacher! Jede Abfrage gibt Ihnen eine Auswahl von Entitäten, auf die logische Operatoren direkt angewendet werden können!

ORDA bietet die folgenden Methoden, um logische Operationen auf zwei Entitätsselektionen durchzuführen:

and(): liefert die Schnittmenge zwischen zwei Entity-Auswahlen (Entities, die zu beiden gehören)

or(): liefert die Vereinigung zwischen zwei Entitätsselektionen (Entitäten, die zu einer oder zur anderen gehören)

minus(): liefert die Differenz zwischen zwei Auswahlen von Entitäten (Entitäten, die zu der einen und nicht zu der anderen gehören)

Diese Methoden können auch auf eine Entitätsauswahl und eine einzelne Entität angewendet werden.

Beispiel

Ein Beispiel sagt mehr als tausend Worte! Werfen wir einen Blick auf die Mitarbeiter und ihre Essensvorlieben.

CLASSIC 4D:

//A named selection "meat" is created before
// ...
QUERY BY ATTRIBUTE([Mitarbeiter];[Mitarbeiter]food; "Fisch";=;True)
CREATE SET ([Mitarbeiter]; "Fisch")
USE NAMED SELECTION ("Fleisch")
CREATE SET ([Mitarbeiter]; "Fleisch")
UNION ("Fisch"; "Fleisch"; "Ergebnis")
USE SET ("Ergebnis")
CLEAR SET ("Fleisch")
CLEAR SET ("Fisch")
CLEAR SET ("Ergebnis")

ORDA:

Hier haben wir eine Methode, die eine Entitätsauswahl als Parameter erhält. Wir geben die Vereinigung der Entitätsauswahl $eatingMeat und der Entitätsauswahl $eatingFish zurück.

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 ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.