Operazioni logiche sulle selezioni di entità

Tradotto automaticamente da Deepl

La serie ORDA continua! In questo post vedremo come utilizzare gli operatori logici sulle selezioni di entità!

Queste operazioni consentono di ottenere intersezioni, unioni o differenze tra due selezioni di entità, come si può fare con i classici insiemi 4D.

Esempio di operatori logici sulle selezioni di entità

In 4D classico, si usano gli insiemi per eseguire operazioni logiche su diversi risultati di query. È necessario creare un set dopo ogni query, eseguire l’operazione logica sui set e infine aggiornare la selezione corrente della tabella interessata con il set di risultati. È un po’ pesante! Fortunatamente, con ORDA le cose stanno diventando molto più leggere! Ogni query fornisce una selezione di entità a cui si possono applicare direttamente gli operatori logici!

ORDA fornisce i seguenti metodi per eseguire operazioni logiche su due selezioni di entità:

and(): ottiene l’intersezione tra due selezioni di entità (entità appartenenti a entrambe)

or(): ottenere l’unione tra due selezioni di entità (entità appartenenti a una o all’altra)

minus(): ottiene la differenza tra due selezioni di entità (entità appartenenti a una e non all ‘altra)

Questi metodi possono essere applicati anche a una selezione di entità e a una singola entità.

Esempio

Un esempio vale più di mille parole! Prendiamo in esame i dipendenti e le loro preferenze alimentari.

CLASSICO 4D:

//A named selection "meat" is created before
// ...
QUERY BY ATTRIBUTE([Impiegato];[Impiegato]food; "pesce";=;Vero)
CREATE SET ([Impiegato]; "pesce")
USE NAMED SELECTION ("carne")
CREATE SET ([Impiegato]; "carne")
UNION ("pesce"; "carne"; "risultato")
USE SET ("risultato")
CLEAR SET ("carne")
CLEAR SET ("pesce")
CLEAR SET ("risultato")

ORDA:

Abbiamo un metodo che riceve come parametro una selezione di entità. Restituiamo l’unione della selezione di entità $eatingMeat e della selezione di entità $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 è entrata a far parte del team 4D Product come Product Owner nel 2017. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente.Marie-Sophie si è laureata presso la scuola di ingegneria ESIGELEC e ha iniziato la sua carriera come ingegnere presso IBM nel 1995. Ha partecipato a vari progetti (di manutenzione o di costruzione) e ha lavorato come sviluppatrice Cobol. In seguito ha lavorato come progettista UML e sviluppatore Java. Ultimamente i suoi ruoli principali erano l'analisi e la scrittura dei requisiti funzionali, il coordinamento dei team di business e di sviluppo.