Microsoft PowerApps

Nel 2015, Microsoft ha unito la già presente Power BI ad una raccolta di servizi, creando un ecosistema in grado di interfacciarsi con i suoi principali altri servizi. Recentemente (2020), un secondo rilascio di novità ha portato altre integrazioni ed affina le basi per una più pronta diffusione. Sarà determinante comprendere come questa suite per sviluppatori (esperti e non) possa incidere sulle soluzioni richieste sul mercato, nell’attesa speriamo che non sia una mossa per debellare noi sviluppatori e gettare le basi per un’IA nata con tecnologie “low-code” in grado di schiavizzare il genere umano (😊).

In fase di progettazione e sviluppo, capita spesso che venga richiesto di elaborare soluzioni a partire da molteplici prodotti e strumenti. Molte volte, purtroppo, questi componenti potrebbero non integrarsi perfettamente tra di loro, rischiando di aumentare l’investimento di tempo e denaro per assicurarsi il funzionamento desiderato.

Con l’obiettivo di rendere più semplice e diretto lo sviluppo di applicazioni, è nata una business application che aiuta ad estendere Microsoft 365, Dynamics 365 ed Azure con servizi e applicazioni di terze parti o personalizzate: la Microsoft Power Platform. La chiave di volta di una Power Platform risiede nello sviluppo a basso utilizzo di codice, unendo processi automatizzati di tipo data-driven e business logic configurabili per le proprie esigenze.

La Power Platform è composta da tre applicazioni:

  • PowerApps: permette la creazione di applicazioni desktop e mobile per visualizzazione di dati in un ambiente “no-code” o “low-code”.
  • Microsoft Flow: permette la creazione di flow automatizzati fra applicazioni e servizi. Questo servizio è spesso utilizzato per automatizzare e modellare processi business tra applicazioni e servizi e innescare azioni di comunicazione tra dispositivi mobili e desktop.
  • Power BI (Business Intelligence): prodotto scalabile che permette la trasformazione dei dati in grafiche multipiattaforma, l’esplorazione dei dati (on-premises e nel cloud) in una possibile unica vista, la creazione e condivisione di dashboard e report personalizzati.

Questi tre principali ambienti sono tutti compatibili tra di loro e si possono interfacciare all’occorrenza.

In questo articolo, verranno illustrate le Microsoft Power Apps soffermandosi su design, connessione a diversi punti di origine dati e integrazione di funzionalità personalizzate.

Perché scegliere una PowerApp

Ogni giorno emergono delle nuove tecnologie e, con loro, nuove conoscenze ed abilità sono richieste. A questo fabbisogno, purtroppo, non tutte le organizzazioni sono sempre pronte. Può capitare che il compito di sviluppare applicazioni venga affidato a personale non esperto, con la conseguente nascita di applicazioni con un ciclo vita molto alto, bassa manutenibilità e con poco controllo su dipendenze e librerie esterne. Questa non è l’unica problematica, infatti, molti sviluppatori hanno difficoltà a soddisfare tutte le richieste di personalizzazione delle proprie applicazioni.

In questa fascia di progettazione di una soluzione le PowerApps entrano in gioco. Secondo Microsoft: “Le PowerApps permettono al CIO e alla sua squadra di tenere sotto controllo come gli sviluppatori utilizzano i loro strumenti”. Questo si traduce in applicazioni con un alto grado di manutenibilità e con un costo di tempo minore rispetto ad un’applicazione personalizzata.

Una PowerApp può quindi arricchirsi di più personale in grado di svilupparla mantenendo le stesse funzionalità e richiedendo il medesimo utilizzo dei suoi strumenti. Il personale qualificato quindi si può allargare a:

  • Sviluppatori: software developer professionali in grado di sviluppare applicazioni per uso amministrativo e di analisi;
  • Personale Business: personale senza conoscenza di sviluppo software è comunque in grado di realizzare applicazioni di consultazione, immissione ed analisi dati;
  • Power Users: personale senza conoscenza di sviluppo di software in grado di creare soluzioni personalizzate in base alle richieste e alla loro mansione.

Nella maggior parte dei casi, una PowerApp può essere utilizzata per rendere più efficiente un’operazione che un utente Business o Power User deve eseguire. Ad esempio, un file Excel ricco di fogli, dati ed immagini, può essere reso una base dati per un’applicazione con un’interfaccia grafica più intuitiva, in grado di esporre velocemente i comandi che l’operatore è tenuto a fare.

In poche parole, questo tipo di personale richiede applicazioni che lo aiutino ad eseguire meglio il proprio lavoro, ma non è in grado di svilupparle con metodi tradizionali. Unendo la semplicità di progettazione alla conoscenza profonda della richiesta e delle funzionalità desiderate, una PowerApp fornisce gli strumenti necessari per questo tipo di sviluppo.

Nominando alcuni termini già usati in precedenza, per utenti che utilizzano Excel regolarmente e con una certa profondità, lo sviluppo di una PowerApp avrà un tipo di sviluppo “no-code” (dato che le PowerApps ed Excel utilizzano espressioni simili). Per chi non è pratico di Excel, la sensazione di sviluppo verterà su un “low-code”.

Un altro grande vantaggio, visto che molte aziende fanno uso di questi strumenti, è l’integrazione completa con la suite di Office 365, OneDrive, SharePoint, Dynamics 365 fino ad articolazioni più complesse tramite Azure. Il tutto viene fornito insieme a modelli già pronti da utilizzare come punto iniziale per il proprio progetto e, al momento, oltre 200 connettori per interfacciarsi ai proprio data source e ulteriori logiche. La fase progettuale è inoltre supportata da un’intuitiva interfaccia drag and drop.

PowerApps Portals

Un altro interessante elemento da poco entrato a far parte del mondo delle PowerApps è il PowerApps Portals. Tale strumento permette di costruire interfacce web multipiattaforma, quindi non dipendenti dalla struttura PowerApps (come nel caso di una normale applicazione) utilizzabili anche da utenti esterni. Un utilizzo comune è quello di fornire accesso all’utenza esterna tramite login provider come LinkedIn, Microsoft Account o il proprio dominio commerciale (è supportato il login tramite soluzioni enterprise che utilizzano SAML2, OpenId Connect e WS-Fed).

I canoni di sviluppo sono i medesimi: “low-code”ed interfaccia di creazione basata sul sistema di input drag and drop. Da segnalare, la completa compatibilità con Bootstrap.

Anche in questo caso, sono disponibili numerosi modelli per fornire una base di lavoro già pronta e velocizzare lo sviluppo e la consegna.

Creare una PowerApp

Eccoci dunque arrivati al lato pratico. In questa sezione vedremo la principale interfaccia grafica che permette lo sviluppo di una Power App, il collegamento con un data source, la sua esecuzione e la sua personalizzazione.

Gli sviluppatori che hanno avuto modo di vedere e conoscere le applicazioni in Windows Form, noteranno dei punti in comune con la finestra Progettazione Windows Form, alla quale le Power Apps “strizzano l’occhio” ma arricchendola con controlli grafici ulteriori.

Quindi, come già avete potuto intuire dal precedente trafiletto, lo strumento principale che permette la progettazione, creazione e modifica di una Power App è il Power Apps Studio. La sua versione web, che potete trovare qui, è quella che è stata utilizzata in questo articolo ed è la versione consigliata da Microsoft dato che è sempre aggiornata con le ultime funzionalità (l’attuale versione desktop è deprecata a partire dal 1° giugno 2018).

L’era tecnologica ci ha fornito i mezzi per rendere semplice ed immediata la soddisfazione di fabbisogni primari e secondari. Il progetto di esempio mostra la realizzazione di un’applicazione in grado di soddisfare uno di questi: i memes sui gatti, a voi scegliere a quale categoria farlo appartenere.

Muniamoci di Power App Studio ed iniziamo lo sviluppo!

Quando ci si approccia alla creazione di una Power App, dopo la fase di progettazione preliminare, è necessario stabilire quale sarà la banca dati utilizzata. Come riportato in precedenza, le Power Apps offrono numerosi connettori in grado di interpretare diversi punti di origine dati e fornire una visualizzazione iniziale, sulla quale è possibile continuare il proprio sviluppo.

Questa schermata presenta dei macro-gruppi dai quali scegliere la propria fonte dati, inoltre è possibile anticipare che tipo di layout la nostra applicazione avrà (tablet o smartphone).

Nella schermata successiva, si potrà scegliere a quale fonte la nostra Power App dovrà effettuare una vera e propria connessione (con relativa richiesta di accesso nel caso si scelga una fonte esterna a quella dell’ambiente Microsoft, o comunque del dominio appartenente all’account che ha effettuato il login). Gli strumenti di connessione ed interpretazione dei dati sono presenti di base su ogni Power App al momento della scelta della base dati (oltre che all’eventuale autorizzazione), non sarà necessario effettuare nessun’altra operazione.

Nota bene: in molti casi, le Power Apps offrono servizi sia di lettura, sia di scrittura della base dati alla quale sono collegate. In questo caso di esempio, vedremo il collegamento con un foglio di Google Sheets. Chiunque sia in grado di accedere all’applicazione è quindi in grado di leggere ed effettuare modifiche visibili direttamente (per i file di Google Sheets ed Excel è necessario creare una tabella con i dati che dovranno essere utilizzati come sorgente dati). Per eseguire delle restrizioni sarà necessario agire sulle impostazioni del proprio dominio.

Una volta connessi alla propria base dati, si dovrà attendere i tempi di caricamento (più grande la base dati, più lunghi i tempi di caricamento). Al termine, sarà possibile visualizzare il template di base realizzato per una prima visualizzazione dei dati chiamati screen. Tale template permette la visualizzazione dei primi dati, della ricerca, del refresh, dell’opzione di creazione di un nuovo elemento e della visualizzazione in dettaglio dell’elemento selezionato. Oltre alla vista principale, saranno quindi presenti due screen aggiuntivi, uno per la visualizzazione del dettaglio dell’elemento ed uno contenente il form di aggiunta di un nuovo elemento. Tutti i pulsanti e tutte le azioni sono già configurati e funzionanti, tutto è pronto per il primo lancio (sempre tramite web browser).

Come è possibile osservare, PowerApps è stata in grado di prendere i dati dal foglio indicato nella fase di configurazione. In particolare, possiamo notare come il nome del foglio sia il titolo dell’applicazione. Inoltre, i dati indicati nella tabella di origine sono stati processati e, tramite il loro ordine, sono stati formati degli elementi con i quali è possibile eseguire le iterazioni già impostate a cui si accennava in precedenza.

Per quanto questa possa essere una possibile base di partenza per molti utenti, al momento l’applicazione non è vicina al risultato finale da noi progettato. È quindi necessario tornare alla visualizzazione di progettazione e vedere gli strumenti offerti dal PowerApps Studio.

In questa schermata si hanno a disposizione tutti gli strumenti per creare la propria applicazione:

  • Visualizzazione struttura: permette di visualizzare e selezionare gli elementi che attualmente fanno parte dello screen che stiamo vedendo centralmente (gli altri sono voci raccolte nel menù al quale è possibile accedere eseguendo un click). È possibile eseguire rapide modifiche utilizzando la selezione di questo strumento, inoltre, è possibile cambiare l’ordine degli elementi per impostare una priorità sulla visualizzazione.
  • Toolbar: la toolbar permette di accedere alle classiche funzionalità di salvataggio, apertura ed anteprima, ma la modalità “Inserisci” è quella che verrà utilizzata maggiormente. Tramite di essa si hanno a disposizione tutti i simboli, funzioni, contenuti multimediali ed oggetti (personalizzati e non) che potranno essere implementati e posizionati nello screen corrette. Tutti questi elementi sono catalogati per categorie e sono accessibili dalla barra degli strumenti al di sotto della toolbar. Nella modalità “Home”, il look familiare della suite office fornirà accesso a strumenti base come la gestione del formato dei testi, il tema dell’applicazione (utilizzando template base personalizzabili o temi creati), in più sarà possibile creare nuovi screen attraverso il comando “Nuova Schermata”.
  • Screen: le schermate consultabili nella nostra applicazione sono chiamate screen; interagendo sugli elementi posizionati al loro interno sarà possibile selezionarli, spostarli ed eliminarli. Selezionando un oggetto si seleziona automaticamente la sua controparte all’interno della visualizzazione struttura e si accede al pannello delle proprietà dell’oggetto. Ogni screen potrà seguire le regole di stile definite a livello di applicazione, oppure potrà utilizzare delle regole ad-hoc definite dall’utente.
  • Panello proprietà oggetto: posizionato a destra dello screen, questo pannello permette di modificare i dati dell’oggetto posizionato. Le proprietà variano in base al tipo di elemento selezionato e possono riguardare campi come il nome, colore del testo, immagine di sfondo, fino a campi più avanzati raccolti nel tab “Avanzate”; in questa categoria sono raccolte le proprietà che definiscono il comportamento dell’oggetto, come funzioni al click per un buttone o temporizzazioni per una galleria di immagini.
  •  Pannello delle Funzioni: posizionato sotto la barra degli strumenti, il pannello delle funzioni fornisce due particolari servizi: modifica del nome e/o valore di una proprietà dell’oggetto selezionato ed integrazione delle funzioni con esso compatibili. L’elenco delle funzioni disponibili è consultabile eseguendo un click sul relativo simbolo e scorrendo sul menù a tendina. Una volta scritta o selezionata una funzione, saranno indicati i suggerimenti per gli eventuali parametri richiesti. Una volta assicurata la validità della funzione, in anteprima sarà possibile vedere il risultato atteso con una tendina a comparsa, al di sotto del pannello delle funzioni.
  • Strumenti: in alto a destra si accede a comandi rapidi come “Redo” o “Undo” e “Play” (verrà aperta una nuova tab con l’applicazione in modalità di esecuzione) e la gestione degli utenti che interagiranno con l’applicazione. Da segnalare l’utile funzionalità “Verifica App” che esegue una sorta di “compilazione” dell’applicazione per verificare che tutti gli oggetti siano correttamente configurati e che i risultati delle funzioni siano compatibili con gli oggetti stessi.

Oltre a gestire testo e funzioni, il Panello delle Funzioni in alcuni casi è in grado di interpretare stringhe HTML. Questa funzionalità aumenta notevolmente le capacità di personalizzazione degli oggetti che abbiamo posizionato, a scapito però di un caricamento leggermente più lungo. Nel caso utilizzato come esempio, è stata sopperita l’impossibilità di associare l’url di un’immagine ad un oggetto nativo di tipo Picture utilizzando un tag img con proprietà src impostata con l’url dell’immagine. Ad esempio:

"<img src='"&First(Filter([@Cats];Name="Crying Cat")).PhotoUrl&"'/>"

Dove “[@Cats]” è la base dati di nostro riferimento, “Name” è il nome della colonna da filtrare con il parametro indicato e “PhotoUrl” è il nome della colonna da utilizzare come valore per la proprietà src del tag img (i simboli “&” indicato i confini di una funzione all’interno di un campo stringa). In questo caso di esempio, viene restituita la prima occorrenza che ha il nome specificato dal parametro nella funzione “Filter”.

In questo caso di esempio, il risultato finale prevede la seguente visualizzazione. Il file di Google Sheets usato come base dati viene consultato al caricamento e al click (o tap) sull’unico pulsante.

In Conclusione

Con gli ultimi aggiornamenti Microsoft sta dando una direzione chiara alle PowerApps: tanta potenza a basso costo ed in tempi ridotti. A tutto questo, va sommata la facilità di apprendimento ed un ambiente user-friendly dotato di interfaccia intuitiva e una piattaforma di e-learning con corsi per ogni livello e adatti ai più svariati utilizzi (al momento, si contano più di 16 ore di materiale per il corso base).

Notando un tale passo, viene automatico di chiedersi quali saranno le successive mosse dell’azienda di Redmond. Chi utilizza con produttività le PowerApps si aspetta nuovi aggiornamenti che possano aumentare ulteriormente le potenzialità, dall’altra parte un’integrazione completa con la suite .NET porterebbe più utilizzi da parte degli sviluppatori (anche se più complessità). Il tutto senza farsi concorrenza da sola.

In ogni caso, questi sono i primi tentativi solidi per avviare lo sviluppo verso un futuro dove sarà competenza comune tra gli assetti di un’azienda. Vale la pena tenere d’occhio quali opportunità questi strumenti saranno in grado di fornire, anche se al momento una domanda si fa largo nella mia mente… cosa ne sarà di noi sviluppatori?