È ora possibile creare da zero una semplice applicazione mobile in grado di gestire nativamente la modalità offline. Questa app è in grado di dialogare con un database in cloud, in questo caso specifico FirestoreDB, che consente di avere delle repliche sincronizzate direttamente sul device!

Questo significa che il dispositivo può lavorare anche se è offline. Al ripristino della connettività, il DB verrà sincronizzato con la copia in cloud.

Trattandosi di un DB NoSQL, è composto da collezioni e documenti (invece che tabelle e record).

Perché è utile avere un’applicazione offline?

Questa applicazione può tornare utile nei casi in cui un operatore debba fare delle operazioni in un ambiente sprovvisto di qualsiasi copertura internet, che sia essa Wi-Fi o 4G. Oppure se si vuole che ogni utilizzatore veda solo “parte” dei dati anche quando non ha connettività.

Per esempio, la spinta alla creazione di un’app con queste funzionalità è nata dall’esigenza di un cliente di registrare gli ordini in una zona totalmente priva di connettività.

Come strutturare una nuova applicazione offline

Come prima cosa, bisogna creare una nuova applicazione partendo dal template di Shiro. È possibile modificare il nome della app e gli aspetti grafici, come ad esempio icone e colori (per personalizzare l’app in base ai colori societari del cliente).

In secondo luogo, sarà necessario creare e configurare il database con cui l’applicazione dovrà dialogare (ricordiamo che viene utilizzato FirestoreDB, quindi sarà necessario un account Firebase… che sempre Google è). Se si vuole approfondire l’uso di questo database, a questo link è possibile trovare tutta la documentazione necessaria.

Queste operazioni, attualmente, devono essere svolte dal laboratorio. Ma non escludiamo che in futuro possano essere fatte in autonomia.

Creare le schede di navigazione

A questo punto abbiamo un’app pronta a gestire un database anche in maniera offline, ma manca un particolare… come possiamo scrivere o interrogare i dati? Come modelliamo le schermate che dovrà usare l’utente?

La risposta a questa domanda è semplice: la gestione avviene attraverso le schede di Smeup.

All’interno della app sono stati inclusi una serie metodi, richiamabili come FUN, per effettuare tutte le operazioni necessarie (fondamentalmente si tratta di richiamare schede o richiedere dei dati).

L’app mobile, essendo offline, non richiederà al backend (l’installazione cliente di Smeup) la lettura e trasformazione dello script di scheda. Sarà necessario, invece, inserire all’interno della collection SCP_SCH su FirestoreDB le schede in formato JSON. Scrivere a mano un json di scheda può non essere una cosa banale… niente paura! In nostro aiuto arriva il nuovo Playground di Smeup.

Tramite il Playground, raggiungibile attraverso questo link, è possibile scrivere uno script di scheda nel modo classico per poi, una volta finito e salvato, scaricare il relativo file JSON che definisce la scheda appena costruita. Il contenuto di questo file andrà quindi aggiunto alla collection.

Screenshot che mostra un esempio di json all'interno del database di Firestore
Database di Firestore

Sintassi delle FUN

Per quanto riguarda la sintassi delle FUN, abbiamo cercato di mantenere una nomenclatura quanto più simile possibile a quella che utilizziamo già nelle schede “classiche” di SmeUP. Abbiamo, momentaneamente, una differenza : per richiamare una scheda non bisognerà usare l’alias *SCO, ma l’alias *JSN.

All’interno della libreria KEN è stato anche implementato un servizio interno standard (FS_00_01) per l’accesso a Firestore. Questo consente di interrogare e modificare le tabelle presenti sul DB, specificando ad esempio il nome della collection, i campi che si vogliono vedere e l’id del record. In assenza di quest’ultimo, verrà restituito tutto il contenuto della collection.

Vediamo un esempio di fun:

F(EXB;FS_00_01;GET.LST) P(Dta(data))

In questo caso, tramite il servizio interno andremo a farci tornare una lista di tutti i documenti della collection “data“.

Scrivere e leggere i dati su Firestore direttamente da Smeup!

Ora vediamo come scrivere i dati che ci servono sul database Firestore.

Per inserire e modificare i dati tramite Smeup, è stata realizzata la UPP WS_009. Questa mette a disposizione la K48 per quanto riguarda la lettura delle collection (tabella e dettaglio), e la /copy £WS_009 per la manipolazione delle collection e dei documenti in esse contenuti (creazione, modifica e cancellazione). Una volta configurata questa UPP impostando le variabili che servono per accedere alla specifica installazione di Firestore ed utilizzando la /copy, è possibile sincronizzare ed eseguire qualsiasi operazione utile sui dati salvati sul database in cloud. Questo permette di creare dei servizi specifici per la gestione della sincronizzazione con la parte offline (schedulati, con aggiornamento manuale, ecc.).

Schema illustrativo del funzionamento della applicazione offline

All’interno della UPP WS_009 possiamo trovare:

  • una scheda di esempio di utilizzo della K48;
  • tutta la documentazione necessaria per l’utilizzo della copy £WS_009;
  • uno script di esempio contenente le variabili – qui possiamo trovare le sezioni degli A38 e la configurazione delle variabili che consentono di impostare le chiavi di accesso al database a cui abbiamo accennato prima.

Distribuzione dell’applicazione

Una volta che abbiamo configurato sia l’app, che il database, il gioco è fatto! Ci basterà caricare l’applicazione sui principali store (Android & iOS) in modo da renderla fruibile a tutti.

Questa operazione può essere gestita dal laboratorio di sviluppo, ma anche dal cliente finale, se ne ha le competenze.

Esempio di utilizzo

Concludendo l’articolo, vediamo un esempio di utilizzo di Shiro offline: una semplice applicazione di gestione degli inventari, rilasciata in test come proof of concept.

Una volta avviata, si presenta questa schermata di selezione.

Immagine illustrativa dell'utilizzo dell'applicazione offline Shiro

Da qui, è possibile modificare un inventario semplicemente premendovi sopra, oppure crearne uno nuovo premendo sul bottone “+” in alto a destra.

Applicazione

Tutto questo è eseguibile completamente offline e viene sincronizzato con il database centralizzato in cloud non appena viene ristabilita una connessione ad internet.

Cliccando qui è possibile visionare un video (durata: 16 minuti) che approfondisce tutti i punti toccati in questo articolo.