4D v19 R4 viene fornito con un nuovo concetto di ORDA: Alias. Sono la continuazione logica e complementare degli attributi calcolati.
Questo post del blog spiega cosa sono gli alias e ne evidenzia i vantaggi, in particolare quando utilizzare l’uno o l’altro… o entrambi.
Che cos’è un alias?
Come suggerisce il nome, un alias non è altro che un sinonimo o una scorciatoia per un oggetto del datastore esistente. Come gli attributi calcolati, sono definiti nella “classe di dati dell’entità”, come vedremo più avanti.
Può trattarsi, ad esempio, di un attributo esistente nella stessa classe di dati o, più spesso, di un altro attributo. Come un attributo calcolato, un alias viene utilizzato per fare riferimento a un valore scalare, a un’entità o a una selezione di entità.
Alias o attributi calcolati?
Ci si potrebbe chiedere perché usare gli alias quando sono già disponibili gli attributi calcolati.
La regola è semplice e si può applicare senza rischi:
Un alias dovrebbe essere usato se non è necessario un calcolo e il risultato (scalare, entità o selezione di entità) può essere espresso come un percorso.
Ad esempio, padrePadre = padre.padre
Se deve essere eseguito un calcolo (capitalizzazione, concatenazione, ricerca, formule, ecc.), deve essere un attributo calcolato.
Ad esempio: fullname = maiuscolo (cognome) + nome
Un esempio semplice e concreto
Prendiamo l’esempio classico delle Aziende e dei Dipendenti.
All’interno della classe di dati Employee, si vuole un attributo companyName.
Trattandosi di un semplice attributo accessibile tramite un percorso, è sufficiente un semplice alias. 4D ottimizzerà le ricerche, le query e gli ordinamenti come se il target fosse usato direttamente.
//Employees Class
Class extends Entity
Alias companyName company.name
Allo stesso modo, nella classe di dati Aziende, si vuole accedere all’elenco di employees (questa volta, una selezione di entità); sarà sufficiente anche un alias.
//Companies Class
Class extends Entity
Alias companyEmployees employees
D’altra parte, se nella classe di dati Employee si vuole un attributo coworkers (elenco di dipendenti con lo stesso manager), si dovrà creare un attributo calcolato che sarà una selezione di entità () calcolata in questo modo:
//Employees Class
Class extends Entity
Function get coworkers()->$entitySelection : cs.Employees
$entitySelection := this.manager.directReports.minus(this)
Lo stesso vale per la tabella aziendale; un attributo calcolato sarà obbligatorio se si vuole visualizzare l’elenco dei capi reparto, ecc.
Esempi in cui si possono usare gli alias
I seguenti esempi si basano sulla struttura fisica descritta di seguito: Le persone possono essere studenti o professori (o entrambi) e insegnare e imparare le lingue. Le lezioni sono la classe di dati centrale che collega le persone (insegnanti e studenti) e le lingue.
“Appiattire una tabella
Si desidera nascondere le relazioni e rendere “come se” gli attributi appartenessero direttamente a una classe di dati piuttosto che a un’altra.
Ad esempio, piuttosto che utilizzare professor.name, student.name e Language.name in base alla relazione tra Lezioni, Persone e Lingua, si può preferire appiattire la classe di dati Lezioni utilizzando gli alias:
//LessonsEntity Class
Class extends Entity
Alias professorName professor.name
Alias studentName student.name
Alias languageName language.name
In questo modo sarà possibile visualizzare le Lezioni usando gli alias diretti!
NASCONDERE LE RELAZIONI “N->P
Le classi di dati intermedie Lessons possono anche essere nascoste completamente, purché siano definite tutte le relazioni.
Nell’esempio precedente, è possibile definire per ogni persona:
-
- le lezioni seguite
- le lezioni impartite
- gli studenti che hanno (se offrono lezioni)
- i professori che hanno (se seguono le lezioni)
//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
Conclusione
Consultate l’HDI qui sopra e approfondite i casi d’uso degli alias. Inoltre, si possono trovare ulteriori dettagli nel doc center.
Per ulteriori dettagli, la documentazione è disponibile qui.