coreBOS story: modulo variabile globale

Siamo arrivati al decimo “episodio” della coreBOS story; l’articolo originale è come sempre disponibile sul blog ufficiale del progetto. Buona lettura!

b5ee32f216f3d6ea4b7b1f352005ae932a4e8a3a-globalvariable64.png

Questo modulo consente all’implementatore, all’amministratore e agli utenti di personalizzare il comportamento dell’applicazione secondo i loro requisiti, portando la configurazione e la personalizzazione di coreBOS su un livello completamente nuovo.

Potete trovare una spiegazione dettagliata di questo modulo sul nostro progetto di documentazione, quindi scriverò qui della funzionalità e dell’impatto di questo modulo, inserendo anche alcuni esempi di variabili esistenti.

Ricordo di aver discusso del design del modulo variabile globale con Elsida, che era a capo del suo sviluppo (grazie Elsida!). Cercavamo un modo semplice per poter eliminare i valori hardcoded che inseriamo nel codice in modo che potessero essere:

  • auto-documentanti e significativi
  • facili da cambiare
  • facili da creare
  • facili da usare

L’auto-documentazione è semplice. In generale, basta sostituire il valore con una stringa costante che contiene il valore. Guardiamo le differenze tra queste due parti di codice

Untitled

Untitleds

No comment!

Raggiungere gli altri punti è stata una sfida un po’ più grande, ma devo ammettere che abbiamo fatto un ottimo lavoro.

Abbiamo creato un’interfaccia facile da usare: una classe e un metodo. L’abbiamo resa accessibile globalmente e le abbiamo dato un’interfaccia semplice, solo il nome della variabile e un valore di default, così il codice precedente diventa:

Untitled3

Bello e pulito, e facile da usare!

La call funziona anche se la variabile non esiste. In tal caso viene restituito il valore di default, così è facilmente creato. Funziona anche se la si usa senza documentare la variabile!

Abbiamo poi aggiunto un valore di ricerca scalato. Abbiamo creato un modulo in cui ogni utente può aggiungere valori a una variabile e cerchiamo tali variabili così da ottenere il giusto valore da applicare, così da renderne facile la modifica e l’adattamento a molti casi.

È stato un lavoro fatto molto bene e l’impatto è stato di gran lunga maggiore di quanto pensassi.

La ricerca scalata funziona in questo modo: prima di tutto, cerchiamo un set di record obbligatorio, e se lo troviamo restituiamo il suo valore per permettere all’amministratore/implementatore di impostare un valore globale per tutti gli utenti e i moduli. Poi cerchiamo un record per questa variabile globale assegnata direttamente all’utente, così che ogni utente possa impostare i propri valori, e se non lo troviamo cerchiamo un record assegnato al gruppo di utenti e infine cerchiamo un record identificato come valore di default.

Oltre alla ricerca scalata descritta sopra, tutte quelle queries sono create contro la lista di moduli selezionati se il campo “In Module List” è selezionato.

Cosa significa tutto questo?

Beh, significa che si possono impostare le funzionalità per utente, per modulo o globali in modo semplice.

Andiamo a vedere due esempi rilevanti che sono stati tra le features più richieste sul forum.

Vorrei attivare una vista a pannello singolo per un utente su un modulo

Ora che abbiamo convertito la modalità a pannello singolo in una variabile globale, possiamo creare un record per tale variabile assegnato all’utente con il campo In Module List e il modulo selezionato.

Supponiamo di volere il pannello singolo attivo su Accounts per l’utente admin. Il suo aspetto sarà questo

GlobalVariableSinglePaneAccounts.png

Non è di defaultobbligatorio, e la definizione è restritta al modulo Accounts per questo utente. È semplice!

Ho bisogno di impostare il numero della list view dei record per le fatture a 100 per tutti gli utenti

Selezioneremo il campo In Module List, selezioneremo Invoices e imposteremo il checkbox di default, che ha questo aspetto:

GlobalVariableListViewPageInvoice.png

Con questo record, ogni utente può sovrascrivere questa impostazione a suo piacimento, perché non l’abbiamo resa obbligatoria.

Riferimenti a variabili globali

La lista di variabili è completamente documentata sul modulo stesso. Sulla list view c’è un bottone per accedere alla tabella, sul detail ed edit view c’è un blocco che contiene la tabella con tutte le variabili, i loro possibili valori e la spiegazione sulle funzioni di ognuna.

Testare la configurazione delle variabili globali

Sulla lista e sulla vista dettagliata c’è un’azione Test che permette di validare il risultato di ogni variabile, su ogni modulo, per ogni utente. È molto utile quando si hanno molti record per la stessa variabile e si ha bisogno di accertarsi che in ogni caso verrà restituito il valore giusto.

GlobalVariableTest.png

Variabili globali accessibili da ovunque

Infine, vorrei aggiungere che abbiamo anche reso i valori delle variabili globali accessibili dall’interno del browser, nel mondo JavaScript e dall’interfaccia del web service.

Nel browser abbiamo una JavaScript promise che imposta il valore ottenuto dall’applicazione in questo modo:

4

Le applicazioni esterne possono ottenere i valori delle variabili globali nell’applicazione usando la web service call: SearchGlobalVar, che è una richiesta GET con tre parametri:

  • gvname: nome della variabile globale
  • defaultvalue: valore di default che viene restituito se non trovato
  • gvmodule: modulo su cui cercare

È possibile vedere un esempio di questa call e provarla usando il coreBOS web service developers’ tool.

Grazie per la lettura!

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s