Modernin ratkaisun toteuttaminen Microsoft PowerApps- ja Serverless -teknologioilla

Cloud1:n data-arkkitehti Marko Oja on avannut aiemmin blogissa Microsoft PowerAppsin ominaisuuksia erilaisin case-esimerkein. Nyt kirjoitusvuorossa on Cloud1:n kumppanin ja Familyyn kuuluvan Devisioonan arkkitehti Risto-Matti Ratilainen, joka kertoo alla PowerAppsin ja Serverless -teknologioiden yhteensovittamisesta.

Microsoft on pyrkinyt luomaan PowerApps -sovellusalustasta työkalun, jolla pääkäyttäjät ja teknisesti edistyneet liiketoimintakäyttäjät voisivat “helposti” luoda omia, pääasiassa dataan pohjautuvia lomaketyyppisiä sovelluksia.

Vaikka alusta tarjoaakin mahdollisuuden rakentaa myös monimutkaisempia sovelluksia, näkemykseni mukaan käyttö on parhaimmillaan kevyissä, liiketoiminnan tueksi tehdyissä ratkaisuissa. PowerApps -alustan ehdottomiin vahvuuksiin voi laskea sen visuaalisuuden ja setin valmiita sovelluspohjia (application templates). Muilta osin kehittäminen kuitenkin vaatii kohtalaisen ohjelmistokehitysorientoitunutta osaamista viitaten kontrollien toiminnallisuuksien skriptaamiseen ja muuhun toiminnalliseen logiikkaan.

PowerApps hyödyntää integroidusti Microsoftin Flow -teknologiaa, joka on läheistä sukua Azuren Logic Apps -teknologialle. Flow:lla onkin PowerAppsin web-kehittimessä omat editorit ja debuggaus-näkymät.

Flow toimii siis PowerApps UI:n backend-logiikan toteutusalustana, kun Logic Apps on palvelurajapinta, jota voidaan hyödyntää Flow:ssa. Flow siis voidaan mieltää myös proxy-logiikkana UI:n ja Logic Appsin välissä.

PowerApps-arkkitehtuurista lyhyesti

PowerApps -arkkitehtuuri on mitä ilmeisimmin suunniteltu ns. MVC-patternia mukaillen, jossa

  • “Model” määritellään konfiguroiden Data Source- ja Connections -käsitteiden avulla.
  • “View” -komponenttia toimittaa sovelluksen “Canvas”, joka sisältää kontrollit ja niiden UI-toiminnallisuuksien sekä datan sitomisen logiikan.
  • “Controller” -virkaa hoitaa Microsoft Flow, jossa voidaan määritellä graafisesti sovelluksen liiketoimintalogiikka, eli taustajärjestelmäkutsut ja muu datankäsittely View:ltä tulevien signaalien ohjaamana.

Jossain määrin Data Source & Connection- ja Flow Controller -roolit menevät hiukan päällekkäin.

Syvemmälle PowerApps -tekemiseen

Tämän blogin tarkoituksena on avata esimerkein, kuinka voimme kytkeä yhteen Microsoftin PowerAppsin ja Azure Serverless -alustat, tarkemmin sanoen Logic Apps PaaS -ratkaisut. Samalla käyn läpi muutamia yksityiskohtia siitä, kuinka parametreja välitetään PowerApps -käyttöliittymältä (View) Microsoft Flow:lle ja miten Flow konfiguroidaan vastaanottamaan niitä. Otan myös kantaa siihen, kuinka voimme testata ja “debugata” Flow:ta PowerApps -kontekstissa. Lopuksi kuvaan, miten datalähteitä konfiguroidaan ja kiinnitetään yksittäisiin kontrolleihin, ja kuinka kontrollien välille voidaan konfiguroida riippuvuuksia.

PowerApps ja Flow yhteistyössä

Monissa käyttötapauksissa pelkän PowerApps -käyttöliittymän luominen ja siihen kytkettyjen datalähteiden käyttö ei ole riittävää, vaan tarvitaan räätälöityä tiedonhakua ja käsittelyä. Tällöin voidaan hyödyntää PowerAppsin saumattomasti kytkeytyvää Flow-teknologiaa.

PowerApps tuo mukanaan integroidun Flow-kirjaston ja kehittimen. Flow-kehittimen avulla kehittäjät voivat luoda liiketoimintalogiikkaa laajemmin kuin kontrollien tapahtumafunktiot antavat myöten. Flow:lla toteutettuja logiikoita voi myös ajatella MVC-mallin Controller-toteutuksina. Seuraavassa lyhyt esimerkki siitä, kuinka luodaan yksinkertainen Azure Logic Apps -työnkulkua kutsuva Flow-logiikka.

Käyttöliittymätapahtumiin reagointi Flow:n avulla

Räätälöity logiikka käsittää hyvin usein esimerkiksi käyttöliittymätapahtumiin reagoimisen. Hyvänä esimerkkinä voidaan käyttää käyttöliittymänapin painallusta, josta syntyy kutsu Microsoft Flow -työnkulkuun. Se välittää JSON-dataa parametrina kutsussa, ja ottaa vastaan Flow:lta tuloksen PowerApps -muuttujaan.

Kuinka Flow kytketään PowerAppsiin

Kuinka Flow kytketään PowerAppsiin

Yllä oleva kuvasarja kuvaa, miten Flow kytketään käyttöön käyttöliittymätapahtumaan. Oleellista on, että valitaan PowerApps -editorilla kontrolli ja sille tapahtuma, johon kytketään “Action” -> “Flow”-valinnasta työkalupalkista haluttu Flow.

powerapps-flow-kuva-2

Yllä olevassa kuvassa on nähtävissä napinpainalluksen “OnSelect” -tapahtuman käsittelevä PowerApps -funktio, jossa edelläkuvatut toiminnot tehdään. Huomiona function-koodista voidaan poimia tapa, jolla muiden PowerApps -sovelluksen kontrollien data voidaan injektoida osaksi JSON-parametrin sisältöä. Flow:lta palautuva vastaus tallennetaan “ResultVar” -muuttujaan Set-funktiota käyttäen.

Microsoft Flow:n luominen PowerApps -ympäristössä

Tekeminen aloitetaan menemällä Make PowerApps -portaalin vasemmassa laidassa kohtaan “Flow”, josta aukeaa Flow-kehityssivusto. Valitsemalla “+ New” vasemmasta yläreunasta, voidaan valita aloitetaanko toteutus tyhjästä vai valmiista templatesta. Tässä tapauksessa aloitamme tyhjästä.

Kun Flow-editor aukeaa, ensimmäiseksi tarjolle tulee Logic Apps:sta tuttu triggeri-valitsinpaneeli. Kirjoita hakukenttään “Power”, jolloin valittavaksi triggeriksi tulee “PowerApps”-triggeri.

Valittuasi triggerin varsinainen editori aukeaa, ja triggeri on asetettu paikalleen. Huomaathan, että itse triggerissä et voi asettaa juurikaan mitään parametreja, vaan ne luodaan myöhemmin eri kautta jokaisen Flow:n aktiviteetin kohdalla erikseen.

Flow:n puolella varsinaiseen PowerApps -triggeriin ei määritellä sisääntulevia parametreja, vaan ne määritellään Flow-työnkulun yksittäisten aktiviteettien konfiguraatioissa viittaamalla PowerApps -triggerin “Ask in PowerApps” -määrityksellä. Määritys heijastaa PowerApps -triggerin kautta parametrit PowerApps -connectionin määrityksessä.

Powerapps -connection

Kuvassa Flows -gallerian linkki ja triggerivalinta uutta Flow:ta PowerApps -yhteydellä luodessa.

PowerApps Flows

Kuvassa esimerkki siitä, miten yksittäinen aktiviteetti voidaan valjastaa pyytämään parametreja PowerAppsilta. Parametrit taas välitetään PowerAppsista Flow:lle käyttöliittymätapahtumat -funktioissa.

Kun haluat palauttaa Flow:lta dataa takaisin kutsuneelle Logic Apps:lle, pitää Flow:n työnkulkuun lisätä loppuun “Respond to PowerApps” -aktiviteetti. Aktiviteetille valitaan sen palautustyyppi, ja tämän jälkeen PowerAppsin funktiokentässä voidaan viitata kyseiseen paluuarvoon.

Respond to PowerApps

Flow:n debugaaminen

Microsoft Flow:n editor-ympäristö tarjoaa täysin vastaavan ja hyvin intuitiivisen käyttöliittymän, josta voidaan seurata Flow-instanssien ajoa ja debugata virheitä, kuten Azure Logic Apps tarjoaa Azure Portaalin kautta. Testausportaalin saa auki napsauttamalla “Test” -kuvaketta editorin oikeasta ylälaidasta.

PowerApps Test Flow

 

PowerApps Run flow

Käynnistysdialogi:

PowerApps, käynnistysdialogi

Aktiviteettidialogi, jolla pääsee debug-portaaliin "See flow run activity" -linkistä:

PowerApps flow run activity 

Suorien datalähteiden kytkeminen PowerAppsiin

PowerAppsin web-kehittimessä on käytettävissä jonkin verran valmiiksi pureskeltuja kyvykkyyksiä, kuten kontrollien väliset riippuvuussuhteet (sen lisäksi, että kontrolleja voidaan kytkeä edellä kuvatusti yhteen).

Kontrolliriippuvuudet

Riippuvuudella tarkoitetaan mahdollisuutta kytkeä esimerkiksi kaksi erilliset datalähteet sisältävää pudotusvalikkoa toisiinsa niin, että toisen valikon valinta filtteröi toisen valikon näytettäviä arvoja. Alla esimerkinomaisesti kuvat kahden pudotusvalikon yhteenkytkemisestä. Kuvassa vasemmalla datasetti, jonka valinta vaikuttaa oikeanpuoleiseen datasettiin filtteröintiarvona.

PowerApps, kontrolliriippuvuudet

Lue myös Markon PowerApps-aiheiset blogikirjoitukset:

Tilaa blogi