Gestione di liste
Introduzione
In DataWeb, la gestione di collezioni di elementi predefiniti è facilitata dalla struttura dati chiamata List.
Questa classe permette di creare e gestire elenchi statici, che possono essere utilizzati in varie parti del progetto senza dover modificare il sistema di storage esistente o implementare ulteriori classi. Le liste sono particolarmente utili per rappresentare set di dati che non cambiano frequentemente, come stati, tipi di oggetti, temi o opzioni di configurazione.
Caratteristiche della struttura List
Le liste in DataWeb sono progettate per contenere un massimo di circa cento elementi e sono statiche, anche se è possibile che vengano modificate dagli utenti se i permessi lo permettono. Questi elenchi sono utilizzati in contesti come:
- Stati (es. status di ordini o attività)
- Tipologie (es. categorie di articoli o progetti)
- Colori o temi predefiniti
- Opzioni di configurazione o settaggio
- Liste brevi, statiche o gestite dall'utente
Gestione nel backend di DataWeb
La creazione e la gestione delle liste avviene direttamente nel backend di DataWeb, all'interno di una sezione dedicata. La gestione è inizialmente riservata agli sviluppatori, ma può essere estesa ad altri ruoli tramite una configurazione dei permessi. Il permesso predefinito per la gestione delle liste è denominato Private_Lists, che consente di visualizzare solo le liste associate esplicitamente ai ruoli specificati.
Una caratteristica fondamentale delle liste è il loro Name, che deve essere univoco e utilizzato per richiamare la lista nel codice del progetto. Per convenzione, tutti i nomi delle liste iniziano con il prefisso List_ e sono declinati al plurale, ad esempio List_ProjectImage_Types.
Le liste possono essere anche vuote, ma generalmente contengono una serie di elementi definiti da:
- Titolo: l'etichetta visualizzata nelle interfacce utente, localizzata in base alla lingua impostata.
- Valore: il dato effettivo utilizzato nello storage per associazioni, che è indipendente dal titolo e rispetta una specifica formattazione (iniziale maiuscola, senza spazi o caratteri speciali).
- Valori aggiuntivi: per ogni elemento possono essere specificate proprietà addizionali composte da chiave e valore, utili per aggiungere informazioni aggiuntive. Ad esempio, una proprietà Color può definire un colore associato per l'elemento nella UI.
Infine, si possono definire i ruoli che hanno il permesso di visualizzare la lista nel backend. Se non vengono specificati ruoli, solo lo sviluppatore ha accesso alla gestione della lista.
Gestione nel Progetto: utilizzo di ListService
Per utilizzare una lista all'interno di un progetto DataWeb, si utilizza il servizio ListService, che fornisce un’interfaccia per recuperare istanze di liste specificando il nome e, opzionalmente, la cultura per il titolo. Ecco un esempio di utilizzo:
var listCultures = await listService.GetListAsync("List_Cultures");
foreach (var listItem in listCultures.Values)
{
Console.WriteLine(listItem.Title, listItem.Value);
foreach (var additionalValue in listItem.AdditionalValues)
{
Console.WriteLine(additionalValue.Name, additionalValue.Value);
}
}
In questo codice, il metodo GetListAsync viene utilizzato per recuperare la lista denominata "List_Cultures". La proprietà Values contiene i valori principali della lista, mentre la proprietà AdditionalValues offre l'accesso ai valori aggiuntivi definiti per ciascun elemento.
Le liste recuperate vengono memorizzate in cache. Ciò significa che le chiamate successive per recuperare la lista non impattano sullo storage, migliorando le prestazioni del sistema. La cache viene automaticamente invalidata quando una lista viene modificata nel backend di DataWeb.