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
Ecco i processi svolti da ognuno dei ruoli sopra identificati:
- Il Visitatore avanza domanda di iscrizione nella app. Se l'iscrizione viene accettata dai Gestori, facendo login con le credenziali ottenute il Visitatore entra nella app come Partecipante.
- Il Partecipante popola il "magazzino" virtuale della app con gli attrezzi che mette a disposizione, catalogandoli secondo categorie predefinite dai Gestori. Chiede in prestito attrezzi altrui e presta i propri attrezzi in risposta a richieste altrui. Gli attrezzi vengono scambiati tra proprietario e richiedente direttamente oppure presso una sede aperta al pubblico. Quando il prestito è terminato, proprietario e richiedente possono esprimere una valutazione sull'esperienza del prestito.
- L'Operatore gestisce la consegna degli attrezzi presso la sede cui è stato abilitato dai Gestori.
- Il Gestore accetta le richieste di iscrizione dei Visitatori, gestisce gli Utenti e li supporta nell'utilizzo della app. Definisce le sedi di consegna ed vi abilita gli Operatori. Definisce le categorie per classificare gli attrezzi. Interviene su prestiti per risolvere eventuali anomalie.
- Tutti gli Utenti si scambiano messaggi nella app per concordare i dettagli dei prestiti, per risolvere problemi, per chiedere assistenza ai Gestori, senza la necessità di esporre i propri contatti personali al destinatario.
Informazioni
I processi sopra descritti richiedono la gestione delle seguenti informazioni elementari:
| Informazione | Cosa rappresenta |
| Utente | Una persona fisica che usa la app, cui i Gestori hanno rilasciato le credenziali (nome utente, password) personali per accedervi |
| Attrezzo | Un attrezzo fisico, messo a disposizione dal suo Proprietario agli altri Partecipanti |
| Categoria | Una categoria di classificazione degli Attrezzi, predisposta dai Gestori ed applicata all'Attrezzo dal Proprietario, per facilitare la ricerca da parte dei Partecipanti |
| Richiesta | Una richiesta di prestito avanzata da un Partecipante su un Attrezzo altrui |
| Prestito | La concessione del prestito su un Attrezzo da parte del Proprietario in risposta ad una Richiesta |
| Sede | Un luogo fisico dove l'Attrezzo può essere portato per facilitare il passaggio tra Proprietario e Richiedente |
| Operatore | Una persona fisica, abilitata dai Gestori a ricevere e consegnare Attrezzi presso una Sede |
| Abilitazione | L'abilitazione da parte dei Gestori di un Operatore ad agire presso una Sede |
| Consegna | La registrazione del passaggio di un Attrezzo da un Utente (Partecipante o Operatore) ad un altro Utente, registrata dall'Utente che cede l'Attrezzo e accettata dall'Utente che lo riceve. |
| Valutazione | La valutazione dell'esperienza relativa ad un Prestito, espressa dal Proprietario o dal Richiedente |
| Nota | Una nota inviata da un Utente ad un altro Utente della app, relativa ad una Richiesta, un Attrezzo o all'uso della app |
Il motivo per cui "spacchettiamo" il concetto di prestito in diverse informazioni più elementari (Richiesta, Prestito, Consegna e Valutazione) sarà più chiaro quando vedremo in questa Guida come tradurre queste informazioni in Entità gestite nella app.
Permessi
Dall'analisi fin qui svolta, emergono le seguenti considerazioni sulle azioni consentite nel tempo ai diversi Utenti sulle informazioni:
- Utente: è creato da un Gestore che ne definisce il Ruolo, mentre l'Utente può modificare di se stesso solo la password.
- Attrezzo: è creato dal Proprietario, che può variarne la disponibilità al prestito ma non può eliminarlo per evitare perdite di informazioni sui prestiti già avvenuti. E' visibile a tutti gli Utenti.
- Categoria: è creata da un Gestore ed è visibile a tutti gli Utenti
- Richiesta: è creata da un Partecipante ed è visibile solo al Proprietario dell'Attrezzo richiesto e agli Operatori della Sede in cui eventualmente transita l'Attrezzo. La sua eliminazione da parte del Richiedente comporta l'eliminazione dell'eventuale Prestito concesso in risposta dal Proprietario. Non può essere eliminata dopo la creazione della prima Consegna relativa all'Attrezzo. Si conclude con la riconsegna dell'Attrezzo al Proprietario.
- Prestito: è creata dal Proprietario dell'Attrezzo in risposta ad una Richiesta ed è visibile solo al Richiedente e agli Operatori della Sede in cui eventualmente transita l'Attrezzo. La sua eliminazione non comporta l'eliminazione della Richiesta. Non può essere eliminato dopo la creazione della prima Consegna relativa all'Attrezzo. Si conclude con la riconsegna dell'Attrezzo al Proprietario.
- Sede: è creata ed eventualmente disabilitata da un Gestore ed è visibile a tutti gli Utenti
- Abilitazione: è creata ed eventualmente disabilitata da un Gestore ed è visibile a tutti gli Utenti
- Consegna: è creata in bozza dall'Utente che consegna l'Attrezzo ed accettata dall'Utente che lo riceve; dopo l'accettazione, non è più modificabile.
- Valutazione: è creata in bozza dal Proprietario o dal Richiedente e può essere modificata fino a quando l'Utente stesso non la firma; è visibile solo a Proprietario, Richiedente e Gestori.
- Nota: è creata da un Utente e visibile solo al mittente ed al destinatario. Una volta inviata, non è più modificabile.
Più in dettaglio, questi sono i Permessi dei diversi ruoli sulle diverse informazioni:
| Informazione | Partecipante | Operatore | Gestore |
| Dati Utente | Modifica i propri dati personali (password compresa). Vede il nome degli altri Utenti. Non vede i dati personali degli altri Utenti. | Crea gli Utenti. Vede e modifica i dati personali di tutti gli Utenti. Non può togliere il ruolo Gestore agli altri Gestori. | |
| Attrezzo | Crea l'Attrezzo. Modifica i propri Attrezzi. Vede tutti gli Attrezzi | Vede tutti gli Attrezzi | Vede e modifica tutti gli Attrezzi |
| Categoria | Vede tutte le Categorie | Crea e modifica tutte le Categorie | |
| Richiesta | Crea la Richiesta su un Attrezzo altrui. Modifica e elimina le proprie Richieste (1). Vede le Richieste altrui sui propri Attrezzi. Non vede Richieste che non lo coinvolgono. | Vede le Richieste che transitano in una Sede in cui è abilitato | Vede, modifica ed elimina tutte le Richieste |
| Prestito | Crea il Prestito in risposta ad una Richiesta su un proprio Attrezzo. Modifica e elimina i propri Prestiti (1). Vede i Prestiti che rispondono alle sue Richieste. Non vede i Prestiti che non lo coinvolgono. | Vede i Prestiti che transitano in una Sede in cui è abilitato | Vede, modifica ed elimina tutti i Prestiti |
| Sede | Vede tutte le Sedi | Crea, modifica e disattiva tutte le Sedi | |
| Abilitazione | Vede tutte le Abilitazioni | Crea, modifica e disattiva tutte le Abilitazioni | |
| Consegna | Crea la Consegna quando consegna l'Attrezzo. Modifica e elimina le proprie Consegne (2). Accetta la Consegna quando riceve l'Attrezzo. Non vede le Consegne che non lo coinvolgono. | Crea la Consegna quando consegna l'Attrezzo. Modifica e elimina le proprie Consegne (2). Accetta la Consegna quando riceve l'Attrezzo. Vede tutte le Consegne. | Crea, modifica e elimina tutte le Consegne |
| Valutazione | Crea la Valutazione (3) su un Prestito che l'ha coinvolto come Proprietario o Richiedente. Firma le proprie Valutazioni (2). Non vede Valutazioni che non lo coinvolgono. | Vede, modifica e elimina tutte le Valutazioni | |
Note:
(1) Il Partecipante può modificare o eliminare Richieste e Prestiti propri fino a quando non viene creata la prima Consegna relativa al Prestito.
(2) L'Utente non può modificare o eliminare le proprie Consegne e Valutazioni dopo che sono state accettate o firmate.
(3) Il Partecipante può creare Valutazioni solo dopo la riconsegna dell'Attrezzo al Proprietario.
Vedremo in questa Guida come configurare i Permessi in Drupal.
Percorsi
DA RIVEDERE
Essendo una applicazione web, la app si presenta come un insieme di pagine, visitate dagli Utenti secondo uno o più percorsi progettati dall'Amministratore. Nella app di esempio, i percorsi partono dalla pagina "Cruscotto", che mostra all'Utente le informazioni più importanti o urgenti e un insieme di comandi che conducono nei diversi percorsi. In tutte le pagine è presente un comando che riporta immediatamente al Cruscotto. Vedremo da questa Guida in avanti come costruire le pagine e realizzare i percorsi.
Ecco i Percorsi previsti per la app di esempio, le pagine corrispondenti ad ogni percorso e, per ogni pagina, le informazioni presentate e i comandi che portano ad altre pagine.
| Al login→ Cruscotto→ | CRUSCOTTO |
| Utente | Tu Comando "Tuoi dati" |
| La comunità Elenco Messaggi per l'Utente e non ancora letti → Messaggio Comando "Tutti i Messaggi" Comando "Scrivi Messaggio" Comando "Le sedi di consegna" | |
| Partecipante | Gli Attrezzi Comando "Magazzino" Comando "Tuoi Attrezzi" |
| Le tue Richieste Elenco Richieste non concluse dell'Utente→ Richiesta, Attrezzo, Prestito Comando "Tue Richieste concluse" | |
| I tuoi Prestiti Elenco Richieste non concluse su Attrezzi dell'Utente → Richiesta, Attrezzo, Prestito Comando "Tuoi Prestiti conclusi" | |
| Operatore | Consegne nelle tue sedi Elenco Prestiti non conclusi con consegna nelle sedi dell'Utente → Attrezzo, Prestito, Consegne Comando "Archivio Consegne" Comando "Operatori di sede" |
| Gestore | Gestione app Comando "Gestione Utenti" Comando "Gestione Categorie" Comando "Gestione Sedi" Comando "Gestione anomalie" |
PERCORSO UTENTI
| Tuoi dati→ | UTENTE |
| Utente | Solo sui propri dati: Dati dell'Utente |
| Gestore | Dati dell'Utente Solo se l'Utente è Operatore: Elenco Sedi abilitate all'Utente → Sede Comando "Aggiungi Sede a Operatore" |
| Gestione Utenti→ | GESTIONE UTENTI |
| Gestore | Elenco degli Utenti → Utente Comando "Aggiungi Utente" |
| Aggiungi Utente→ | CREA UTENTE |
| Gestore | modulo di creazione Utente → Utente |
PERCORSO MESSAGGI
| Tutti i Messaggi→ | MESSAGGI |
| Utente | Elenco dei Messaggi inviati o ricevuti dall'Utente → Messaggio Comando "Scrivi messaggio" |
| Click su un Messaggio→ | MESSAGGIO |
| Utente (se Mittente del Messaggio) | Dati del Messaggio Comando "Tutti i Messaggi" |
| Utente (se Destinatario del Messaggio) | Dati del Messaggio Comando "Rispondi al messaggio" Comando "Tutti i Messaggi" |
| Scrivi messaggio→ Rispondi al messaggio→ | CREA MESSAGGIO |
| Utente | modulo di creazione di un Messaggio (se da "Rispondi al messaggio" viene precaricato il destinatario) → Messaggio |
PERCORSO ATTREZZI
| Gestione Categorie→ | GESTIONE CATEGORIE |
| Gestore | Elenco delle Categorie → Categoria Comando "Aggiungi Categoria" |
| Click su una Categoria→ | CATEGORIA |
| Gestore | Dati della Categoria Comando "Gestione Categorie" |
| Aggiungi Categoria→ | CREA CATEGORIA |
| Gestore | Modulo di creazione di una Categoria → Categoria |
| Magazzino → | MAGAZZINO (vedi in funzione) (come è costruita) |
| Utente | Elenco Attrezzi disponibili al prestito → Attrezzo |
| Partecipante | Comando "Tuoi Attrezzi" |
| Tuoi Attrezzi→ | TUOI ATTREZZI (vedi in funzione) (come è costruita) |
| Partecipante | Comando "Magazzino Attrezzi" Comando "Aggiungi Attrezzo" Elenco Attrezzi dell'Utente → Attrezzo |
| Click su un Attrezzo→ | ATTREZZO (vedi in funzione) (come è costruita) |
| Utente | Comando "Magazzino" Dati dell'Attrezzo |
| Partecipante (se Proprietario dell'Attrezzo) | Elenco Richieste non concluse sull'Attrezzo → Richiesta, Prestito Comando "Prestiti conclusi su Attrezzo" |
| Partecipante (se diverso dal Proprietario dell'Attrezzo) | Elenco Richieste non concluse sull'Attrezzo → Richiesta Comando "Chiedi Attrezzo in prestito" |
| Aggiungi Attrezzo→ | CREA ATTREZZO |
| Partecipante | Modulo di creazione di un Attrezzo → Attrezzo |
PERCORSO RICHIESTE
| Chiedi Attrezzo in prestito → | CREA RICHIESTA |
| Partecipante (se diverso dal Proprietario dell'Attrezzo) | Modulo di creazione di Richiesta, con precaricato l'Attrezzo → Richiesta |
| Click su una Richiesta→ | RICHIESTA |
| Partecipante (se Richiedente o Proprietario) | Dati della Richiesta → Attrezzo, Dati dell'eventuale Prestito → Prestito Elenco Consegne → Consegna Se esiste Prestito: Comando "Consegna Attrezzo" |
| Partecipante (se Proprietario dell'Attrezzo) | Se non esiste Prestito : Comando "Presta l'Attrezzo" |
| Partecipante (se Richiedente) | Se Richiesta è conclusa: Comando "Valuta il Prestito" |
| Tue Richieste concluse→ | RICHIESTE CONCLUSE |
| Partecipante | Elenco Richieste concluse dell'Utente → Attrezzo, Richiesta, Prestito, Consegna, Valutazioni |
| Gestione anomalie→ | GESTIONE ANOMALIE |
| Gestore | Elenco di tutte Richieste → Attrezzo, Richiesta, Prestito, Consegna, Valutazioni |
PERCORSO PRESTITI
| Presta l'Attrezzo→ | CREA PRESTITO |
| Partecipante (se Proprietario dell'Attrezzo) | Modulo di creazione del Prestito, con precaricato la Richiesta → Prestito |
| Click su un Prestito→ | PRESTITO |
| Partecipante (se Proprietario dell'Attrezzo) | Dati del Prestito→ Attrezzo, Richiesta Comando "Consegna Attrezzo" Se il Prestito è conclusa: Comando "Valuta il Prestito" |
| Operatore (se abilitato alla sede di consegna) | Solo se il Prestito prevede consegna in sede: Dati del Prestito → Attrezzo, Consegne Comando "Consegna Attrezzo" |
| Tuoi Prestiti conclusi → Prestiti sull'Attrezzo conclusi→ | PRESTITI CONCLUSI (vedi in funzione) (icome è costruita) |
| Partecipante | Elenco Richieste concluse dell'Utente come Proprietario → Attrezzo, Richiesta, Prestito (filtrato per Attrezzo se da comando "Prestiti sull'Attrezzo conclusi ") |
| Consegna Attrezzo→ | CREA CONSEGNA |
| Partecipante (se Proprietario dell'Attrezzo) Partecipante (se autore della Richiesta) Operatore (se assegnato alla sede di consegna) | Modulo di creazione di Consegna, con precaricato il Prestito, Sede e Destinatario→ Consegna |
| Click su una Consegna→ | CONSEGNA |
| Partecipante (se Proprietario dell'Attrezzo) Operatore (se assegnato alla sede di consegna) | Dati della Consegna→ Attrezzo, Richiesta, Prestito |
| Partecipante (se autore della Richiesta) | Dati della Consegna → Attrezzo, Richiesta, Prestito |
| Archivio Consegne→ | ARCHIVIO CONSEGNE |
| Operatore | Elenco delle Consegne emesse nelle Sedi dell'Utente: → Attrezzo, Prestito, Consegne |
PERCORSO VALUTAZIONI
| Aggiungi Valutazione→ | CREA VALUTAZIONE |
| Partecipante (se Proprietario dell'Attrezzo) Partecipante (se Autore della Richiesta) | Modulo di creazione di Valutazione con precaricato il Prestito → Valutazione |
| Click su una Valutazione→ | VALUTAZIONE |
| Partecipante (se Proprietario dell'Attrezzo) | Dati della Valutazione del Richiedente e del Proprietario → Prestito |
| Partecipante (se Autore della Richiesta) | Dati della Valutazione del Richiedente e del Proprietario → Richiesta |
PERCORSO SEDI
| Gestione sedi→ Le sedi per le consegne→ | SEDI |
| Utente | Mappa ed elenco delle Sedi: → Sede |
| Gestore | Comando "Aggiungi Sede" |
| Aggiungi Sede→ | CREA SEDE |
| Gestore | Modulo di creazione di Sede → Sede |
| Click su una Sede→ | SEDE |
| Utente | Dati della Sede |
| Gestore | Elenco delle Abilutazioni di Operatori nella sede → Abilitazione, Utente Operatore Comando "Aggiungi Operatore a Sede" |
| Aggiungi Operatore a Sede→ Aggiungi Sede a Operatore→ | CREA ABILITAZIONE |
| Gestore | Modulo di creazione di Abilitazione → Abilitazione Se da comando "Aggiungi Operatore a Sede" con precaricata Sede Se da comando "Aggiungi Sede a Operatore" con precaricata Operatore |
| Click su una Abilitazione→ | ABILITAZIONE |
| Gestore | Dati della Abilitazione → Sede, Utente Operatore |
| Operatori di sede→ | OPERATORI DI SEDE |
| Operatore | Elenco delle Abilitazioni di Operatori nelle Sedi cui è abilitato l'Utente |
Automazioni
La app provvede automaticamente a:
- eliminare kil Prestito di cui è stata eliminata la Richiesta