Una app di esempio
Come esempio per la costruzione delle app con Drupal utilizzo "Vicinato", una app per il prestito di attrezzi tra vicini di casa che puoi vedere in bozza qui:
Le credenziali per accedere alla app sono mostrate nella pagina di login.
Non ti sto invitando a ricostruire sul tuo computer o in cloud proprio questa app: "Vicinato" è solo un esempio di cosa si può fare con Drupal, da cui puoi prendere spunto per costruire l'app di tuo interesse. Anche se la app ha di per sé un obiettivo abbastanza semplice, per motivi didattici cercherò di inserirvi progressivamente una certa complessità . E' probabile che la tua prima app sia molto più semplice di questa.
Per descrivere la app applico il metodo che ti ho suggerito nella Guida precedente.
Scopo
La app facilita il prestito gratuito di attrezzi tra persone che abitano nella stessa zona o città . Lo scambio degli attrezzi avviene direttamente tra le parti oppure, per maggiore tutela, tramite il deposito temporaneo presso luoghi aperti al pubblico, quali le sedi di associazioni o biblioteche.
Utenti
L'utilizzo della app è riservato agli Utenti iscritti. I Visitatori vedono solo le istruzioni per iscriversi. L'iscrizione viene accettata dai Gestori, Utenti scelti dall'Amministratore per la gestione della app. Con l'iscrizione alla app, gli Utenti diventano Partecipanti, che si prestano vicendevolmente gli attrezzi. Lo scambio degli attrezzi avviene direttamente tra le parti o presso sedi aperte al pubblico, in questo caso è intermediato da Operatori abilitati dai Gestori.
Processi
I principali processi che si svolgono nella app e le azioni svolte dai ruoli sopra identificati sono:
- Gestione Utenti: I Visitatori che intendono partecipare si registrano nella app. La loro registrazione viene accettata o meno dai Gestori. I Gestori supportano gli Utenti nell'uso della app e possono sospenderli.
- Formazione del Magazzino degli Attrezzi: i Partecipanti caricano nel Magazzino della app i propri Attrezzi che intendono mettere a disposizione degli altri Partecipanti. Possono sospendere la disponibilità dei propri Attrezzi. I Gestori definiscono le Categorie di classificazione degli Attrezzi utilizzate dai Partecipanti.
- Prestito di un Attrezzo: un Partecipante seleziona dal Magazzino un Attrezzo altrui e lo chiede in prestito al Proprietario. L'Attrezzo viene consegnato dal Proprietario direttamente al Richiedente o a un Operatore di una Sede. L'Operatore consegna l'Attrezzo al Richiedente. Il Richiedente consegna l'Attrezzo al Proprietario o a un Operatore. Proprietario e Richiedente valutano l'esperienza di prestito. I Gestori possono intervenire per risolvere eventuali anomalie e eliminare prestiti non concessi da troppo tempo.
- Gestione di sedi e Operatori: i Gestori aggiungono, abilitano e disabilitano le Sedi presso cui è possibile consegnare gli Attrezzi. I Gestori aggiungono alla app gli Operatori abilitandoli presso una o più Sedi. Gli Operatori gestiscono il deposito temporaneo degli Attrezzi presso le loro Sedi.
- Comunicazioni: tutti gli Utenti possono scambiarsi Note, senza necessità di esporre i propri recapiti personali.
Informazioni
I processi sopra descritti lavorano sulle seguenti informazioni: (in evidenza modifiche in corso d'opera)
UTENTE: una persona fisica che utilizza la app (i Visitatori sono Utenti anonimi, cioè indistinti tra loro). I Campi di un Utente sono:
| Campo | Tipo | Cosa contiene |
| Nome | testo | Nome della persona |
| Cognome | testo | Cognome della persona |
| Attivo | si/no | Indica se la persona è autorizzata ad entrare oppure è sospesa dall'uso della app |
| Ruoli | ruolo | Ruoli svolti dalla persona nella app (Partecipante | Operatore | Gestore) |
ATTREZZO: un Attrezzo fisico prestabile. L'Attrezzo appartiene al Partecipante che lo aggiunge alla app. I Campi dell'Attrezzo sono:
| Campo | Tipo | Descrizione |
| Titolo | testo | Descrizione breve dell'Attrezzo |
| Descrizione | testo formattato | Descrizione lunga dell'Attrezzo |
| Categoria | Riferimento a Categoria | Categoria cui appartiene l'Attrezzo (Attrezzo → Categoria) |
| Immagine | immagine | Immagine che raffigura l'Attrezzo |
| Allegati | File (più valori) | Documenti e foto che descrivono l'Attrezzo |
| Stato | Elenco di testi | Prestabile | Ritirato. Se Ritirato, l'Attrezzo non può essere chiesto in prestito. |
| Dove | Riferimento a Sede | Dove si trova in questo momento l'Attrezzo (Attrezzo → Sede). Sono comprese due Sedi fittizie, denominate "*Richiedente" e "*Proprietario", che servono per indicare che l'Attrezzo è in questo momento rispettivamente presso il Proprietario o presso il Richiedente. |
CATEGORIA: Una categoria di classificazione degli Attrezzi, predisposta dai Gestori ed applicata all'Attrezzo dal Proprietario, per facilitare la ricerca da parte dei Partecipanti. I Campi della Categoria sono:
| Campo | Tipo | Descrizione |
| Nome (titolo) | testo | Nome della Categoria. Es. "Falciatrice" |
| Sinonimi | testo | Altri termini che identificano la Categoria. Es. "tagliabordi estirpatore" |
SEDE: uno dei luoghi aperti al pubblico in cui può avvenire la consegna degli Attrezzi. I Campi della Sede sono:
| Campo | Tipo | Descrizione |
| Titolo | testo | Nome della Sede |
| Indirizzo | indirizzo | Indirizzo della Sede |
| Contatti | testo | Modalità di contatto e orari di apertura al pubblico per la consegna degli Attrezzi |
| Stato | elenco di selezione | Attiva | Inattiva. Se Inattiva, non si possono schedulare nuove Consegne presso di essa. |
| Tipo | elenco di selezione | Reale | Nominale. Se Nominale, identifica una sede fittizia (*Proprietario e *Richiedente) e non viene presentata nella mappa delle Sedi |
| Coordinate | coordinate geografiche | Coordinate geografiche della Sede, per la sua rappresentazione in mappa |
ABILITAZIONE: l'abilitazione di un Operatore ad agire in una Sede. I Campi dell'Abilitazione sono:
| Campo | Tipo | Descrizione |
| Titolo | testo | Generato automaticamente come "Abilitazione n. CODICE" |
| Codice | Seriale | Codice univoco generato automaticamente |
| Sede | Riferimento a Sede | Sede di abilitazione (Abilitazione → Sede) |
| Operatore | Riferimento a Utente | Operatore abilitato (Abilitazione→ Utente) |
| Nota | testo formattato | Nota relativa alla abilitazione dell'Operatore alla Sede |
| Stato | elenco di selezione | Attiva | Inattiva. Se Inattiva, l'Operatore non può più operare nella Sede. |
RICHIESTA: richiesta di prestito di un Attrezzo. I Campi della Richiesta sono:
| Campo | Tipo | Descrizione |
| Titolo | testo | Generato automaticamente come "Richiesta n. CODICE" |
| Codice | Seriale | Codice univoco generato automaticamente |
| Attrezzo | Riferimento ad Attrezzo | Attrezzo chiesto in prestito (Richiesta → Attrezzo) |
| Descrizione | testo formattato | Descrizione della Richiesta |
| Inizio | data | Data di inizio del prestito. Il valore indicato dal Richiedente viene sovrascritto dalla data della prima Consegna |
| Fine | data | Data di fine del prestito. Il valore indicato dal Richiedente viene sovrascritto dalla data della ultima Consegna, cioè della Consegna con cui l'Attrezzo torna al Proprietario. |
| Stato | Workflow | Stato della Richiesta: Aperta fino a quando non viene consegnato l'Attrezzo al Richiedente | In corso mentre l'Attrezzo non è ancora tornato al Proprietario; Conclusa dopo che l'Attrezzo è tornato al Proprietario. |
CONSEGNA: un passaggio dell'Attrezzo da un Utente ad un altro Utente. La Consegna è creata dall'Utente che consegna l'Attrezzo e accettata dall'Utente che lo riceve. La Consegna accettata funge quindi da "ricevuta" dell'avvenuto passaggio. I Campi della Consegna sono:
| Campo | Tipo | Descrizione |
| Titolo | Testo | Generato automaticamente come "Consegna n. CODICE" |
| Codice | Seriale | Intero univoco generato automaticamente |
| Prestito | Riferimento Richiesta | Richiesta cui si riferisce la Consegna (Consegna → Richiesta) |
| Sede | Riferimento a Sede | Dove viene consegnato l'Attrezzo (Consegna → Sede). Sono previste anche due Sedi nominali * Proprietario e *Richiedente. |
| Accettazione | Riferimento a Utente | Utente che ha accettato la consegna (Consegna → Utente) |
| Data Accettazione | data | Giorno in cui l'Utente accetta la consegna |
| Nota | Testo formattato | Nota per situazioni particolari (es. consegna incompleta, delega) |
| Stato | Workflow | Stato della Consegna: In consegna, fino a quando l'Attrezzo non viene accettato; Consegnato quando l'Attrezzo viene accettato. |
VALUTAZIONE: una valutazione espressa sulla Richiesta dal Proprietario o dal Richiedente. La Valutazione è chiusa quando chi la emette la firma. I Campi della Valutazione sono:
| Campo | Tipo | Descrizione |
| Titolo | Testo | Generato automaticamente come "Valutazione n. CODICE" |
| Codice | Seriale | Intero univoco generato automaticamente |
| Prestito | Riferimento a Richiesta | Richiesta cui si riferisce la Valutazione (Valutazione → Richiesta) |
| Valore | Elenco di selezione di interi | Valore della Valutazione (-1=negativa, 0=neutra, 1=positiva, 2=ottima) |
| Nota | Testo formattato | Nota che spiega la Valutazione |
| Stato | Workflow | Stato della Valutazione: Bozza fino a quando non viene firmata| Firmata |
NOTA: una Nota è un testo inviato da un Utente ad un altro Utente. I Campi della Nota sono:
| Campo | Tipo | Descrizione |
| Titolo | Testo | Generato automaticamente come "Nota n. CODICE" |
| Codice | Seriale | Intero univoco generato automaticamente |
| Riferimento | Riferimento al Contenuto | Contenuto cui si riferisce la Nota (Nota → Richiesta) (Nota → Attrezzo) (Nota → Sede) (Nota → Abilitazione) (Nota → Categoria) (Nota → "App)" |
| Oggetto | Testo | Oggetto della Nota |
| Destinatario | Riferimento a Utente | Destinatario della Nota |
| Allegati | File | Allegati alla Nota |
Permessi
Ecco cosa possono fare i diversi Utenti sulle diverse Informazioni:
| Informazione | Partecipante | Operatore | Gestore |
| Utente | Modifica i propri dati personali (password compresa). Vede il nome degli altri Utenti. Non vede gli altri dati personali (es. mail) degli altri Utenti. | Crea gli Utenti. Modifica i dati di tutti gli Utenti. Non può togliere il ruolo Gestore agli altri Gestori. | |
| Attrezzo | Aggiunge Attrezzi. Modifica i propri Attrezzi. Vede tutti gli Attrezzi. | Vede tutti gli Attrezzi | Modifica tutti gli Attrezzi |
| Categoria | Vede tutte le Categorie | Crea e modifica tutte le Categorie | |
| Richiesta | Aggiunge Richieste su Attrezzi altrui. Modifica e elimina le proprie Richieste "emesse". Vede le Richieste sui propri Attrezzi. Modifica lo Stato delle Richieste sui propri Attrezzi da "emessa" a "accettata" | Vede le Richieste con Consegne nelle Sedi in cui è abilitato | Modifica ed elimina tutte le Richieste |
| Consegna | Aggiunge una Consegna quando consegna un Attrezzo.
| Crea Consegne al posto dei Partecipanti. Modifica ed elimina tutte le Consegne. | |
| Sede | Vede tutte le Sedi | Crea, modifica e disattiva tutte le Sedi | |
| Abilitazione | Vede tutte le Abilitazioni | Crea, modifica e disattiva tutte le Abilitazioni | |
| Valutazione | Aggiunge la Valutazione su Richieste "concluse" di cui è Proprietario o Richiedente. Modifica e elimina le proprie Valutazioni "bozza". Firma le proprie Valutazioni, cambiandone lo Stato da "bozza" a "firmata" | Vede, modifica e elimina tutte le Valutazioni | |
| Nota | Invia una Nota ad un altro Utente. Il Destinatario è scelto dal Mittente oppure definito dall'oggetto della Nota. In caso di Nota di risposta, il Destinatario è il Mittente della Nota cui si risponde. Vede tutte le Note di cui è Mittente o Destinatario. Una Nota inviata non è modificabile. | ||
Vedremo in questa Guida come configurare i Permessi in Drupal.
Percorsi
Essendo una applicazione web, la app si presenta come un insieme di pagine, visitate dagli Utenti secondo uno o più percorsi progettati dall'Amministratore. I percorsi sono diversi per i ruoli Partecipante, Operatore e Gestore.
TUTTI I RUOLI
| pagina | informazioni e comandi |
| Cruscotto: I tuoi dati | Nome dell'Utente Tuoi dati → Dati personali dell'Utente |
| Dati personali dell'Utente | Dati personali dell'Utente |
PARTECIPANTE
La prima pagina è il "Cruscotto":
| pagina | informazioni e comandi |
| Cruscotto: I tuoi Prestiti | Elenco Richieste non concluse su Attrezzi dell'Utente. Click su Richiesta Prestiti conclusi Tuoi Attrezzi |
| Cruscotto: Le tue Richieste | Elenco Richieste non concluse dell'Utente Click su Richiesta Richieste concluse Magazzino |
| Prestiti conclusi | Elenco Richieste non concluse su Attrezzi dell'Utente Click su Richiesta Click su Attrezzo |
| Tuoi Attrezzi | Elenco Attrezzi dell'Utente Click su Attrezzo Aggiungi Attrezzo |
| Attrezzo | Dati dell'Attrezzo Se Proprietario: Se non Proprietario: |
| Calendario | Calendario coi periodi di prestito dell'Attrezzo |
| Magazzino | elenco Attrezzi disponibili Attrezzo |
| Richiesta | Se Richiedente o Proprietario: Dati della Richiesta Elenco Note sulla Richiesta Elenco Consegne sulla Richiesta Elenco Valutazioni sulla Richiesta |
| Richieste concluse | elenco Richieste concluse dell'Utente Richiesta |
| Consegna | Dati della Consegna Richiesta |
| Valutazione | Dati della Valutazione Richiesta |
OPERATORE
| pagina | informazioni e comandi |
| Cruscotto: Le tue Sedi | Elenco Abilitazioni dell'Utente Sede Abilitazione |
| Sede | elenco Attrezzi depositati in Sede Attrezzo elenco Consegne da accettare Consegna Archivio Consegne |
| Abilitazione | Dati dell'Abilitazione |
| Attrezzo | dati dell'Attrezzo Elenco Consegne non accettate Consegna Aggiungi Consegna |
| Consegna | Dati della Consegna |
| Archivio Consegne | Elenco Consegne concluse in Sede |
GESTORE
| pagina | informazioni mostrate | comandi mostrati |
| Cruscotto: Gestione | Gestione Utenti Gestione Sedi Gestione Richieste Gestione Categorie | |
| Gestione Utenti | Elenco Utenti Utente Aggiungi Utente | |
| Utente | Dati dell'Utente elenco Abilitazioni dell'Utente Aggiungi Abilitazione | |
| Abilitazione | Dati dell'Abilitazione | |
| Sedi | Elenco Sedi Mappa Sedi Sede Aggiungi Sede | |
| Sede | Dati della Sede Elenco Abilitazioni nella Sede Abilitazione | |
| Categorie | elenco delle Categorie Categoria Aggiungi Categoria | |
| Categoria | Dati della Categoria Elenco Attrezzi nella Categoria Attrezzo | |
| Richieste | elenco di tutte le Richieste non concluse Richiesta |
Automazioni
Cambiare lo Stato della Richiesta in base alle Consegne
Aggiornare il periodo della Richiesta in base alle Consegne
Eliminare le Richieste più vecchie di tre mesi senza Consegne