Vielä tovi sitten ainoa tapa mahdollistaa canvas Power Appsin offline-käyttö oli kikkailu LoadData ja SaveData -funktioilla. En ole uskaltanut ensimmäistäkään oikeaa toteutusta rakentaa niiden varaan.

Onneksemme työkalupaletissa on nykyään tähän tarpeeseen jotain oikeasti toimivaa. Mobiililla käytettävästä Power Appsista voi nimittäin tehdä suoraan offline-kelpoisen. Tällöin ensimmäisellä käyttökerralla kaikki tarvittavat tiedotdata ladataan laitteelle. Käytön aikana luku- ja kirjoitustoiminnot kohdistetaan aina laitteella oleviin tietoihin. Joita sitten taustalla synkronoidaan Dataverseen säännöllisin väliajoin.

Ja nimenomaan Dataverseen. Offline-toiminnallisus ei toimi minkään muun yhdistimen kanssa.

Ominaisuuden kauneus on siinä, ettei sovelluksen tekijän tai käyttäjän tarvitse tehdä mitään tämän eteen. Sovellus hakee säännöllisesti päivittyneitä tietoja Dataversestä. Sekä vie sinne käyttäjän tekemiä muutoksia. Täysin automaattisesti taustalla.

Katsotaan hieman tarkemmin miten offline-ominaisuuden saa päälle ja miten se toimii.

Esimerkki – Tehtävien kirjaaminen

Tehdään esimerkkisovellus, jolla isännöitsijä voi kirjata taloyhtiöön liittyviä huomioita / tehtäviä. Kirjauksia tehdään esimerkiksi taloyhtiöiden kellareissa, joissa ei aina ole verkkoa.

Ratkaisun tietomalli on yksinkertainen. Meillä on

  • Tehtäviä (task)
  • Tehtäväluokkia (task category). Jokainen tehtävä liittyy yhteen luokkaan.
  • Taloyhtiöitä (account). Jokainen tehtävä liittyy yhteen taloyhtiöön

Mobiilisovelluksella tulee kyetä lisäämään ja päivittämään tehtäviä. Tarvittaessa tulee pystyä myös luomaan uusia tehtäväluokkia.

Taulujen offline-käytön salliminen

Ensimmäisenä sallitaan käytettävien taulujen käyttö ilman verkkoa. Käytännössä valitaan kunkin taulun ominaisuuksista ”Can be taken offline”.

Canvas Power Apps

Tämän jälkeen luodaan canvas Power Apps, jonka asetuksista käydään

  • laittamassa Can be used offline -asetus päälle
  • valitaan offline profiiliksi Auto-generated

Offline profiilin avulla hallitaan laitteelle synkronoituvia tietoja. Aloitetaan alustan meille luomalla profiililla (auto-generated).

Asetusten muuttamisen jälkeen sovellukseen ilmestyy uusi, mobiilikäyttöön suunniteltu, näyttö.

Tehdään sovellukseen kolme näyttöä. Aloitusnäytöltä näkee kaikki kirjaukset. Kirjauksia voi muokata ja niitä voi lisätä.

Kirjauksen lisäys/muokkaus näyttö on suoraviivainen. Kirjaukset liitetään taloyhtiöön (account) ja luokkaan (category).

Lomakkeelta pääsee tarvittaessa luomaan uuden luokan.

Tältä osin sovelluksen tekemisessä ei ole mitään eroa perinteisen sovelluksen tekemiseen.

Mutta sen käytössä on.

Offline sovelluksen käyttäminen

Jotta käyttäjä voi ylipäätään käyttää offline Power Appsia, tulee hänellä olla olla lukuoikeus Mobile offline profile -tauluun.

Ensimmäisellä käyttökerralla sovellus lataa laitteelle kaikki tiedot, joita sen käyttämiseen tarvitaan. Esimerkkisovelluksemme lataa kaikki tehtävät, tehtäväluokat ja taloyhtiöt.

Ensimmäisten käynnistyskertojen yhteydessä käyttäjää muistutetaan sovelluksen toimivan myös ilman internet-yhteyttä.

Tehdään seuraavaksi muutamia tyypillisiä toimenpiteitä nähdäksemme miten offline-sovellus toimii.

Sovelluksen käynnistäminen (ei verkkoa)

Offline-sovelluksen voi käynnistää ilman verkkoyhteyttä. Kunhan se on joskus käynnistetty verkkoyhteyden kanssa jolloin tarvittavat tiedot on ladattu laitteelle.

Sovellus ilmoittaa verkkoyhteyden puutteesta. Myös oikean yläkulman symboli kertoo saman.

Uuden rivin lisääminen (ei verkkoa)

Lisätään uusi tehtävä puhelimen ollessa offline-tilassa. Nostetaan panoksia hieman. Käydään ensin lisäämässä uusi kategoria (Nurmikko) ja liitetään uusi tehtävä siihen.

Uusi tehtävä ilmestyy päänäytön listalle. Oikean yläkulman symboli kertoo laitteella olevan muutoksia, joita ei ole vielä ladattu Dataverseen.

Oikean yläkulman symbolia painettaessa avautuu dialogi, josta näkee synkronoinnin tilan. Kaksi riviä odottaa vientiä Dataverseen, kunhan yhteys palautuu.

Kun puhelin aikanaan saa yhteyden verkkoon, ladataan muuttuneet tiedot automaattisesti Dataverseen. Ja kyllä. Myös kahden uuden tietueen välinen LookUp-kenttä (Category) on oikein.

Toinen käyttäjä luo uusia rivejä

Käyttäjällä on sovellus auki ja laitteessa on toimiva verkkoyhteys. Mitä tapahtuu kun joku toinen luo uuden tehtävän?

Ei mitään. Uusi rivi ei ilmesty mobiilisovellukseen näkyviin. Ei vaikka käyttäjä päivittäisi Refresh(tasks) -komennolla tietolähdettä. Uusi rivi ei nimittäin ole laitteen paikallisessa tietokannassa. Vaikka sovelluksen käynnistää uudelleen, ei rivi silti ilmesty näkyviin.

Synkronointi tapahtuu taustalla 10min (oletusarvo) välein. Vasta tämän jälkeen uusi rivi on laitteen paikallisessa tietokannassa ja käytettävissä. Mutta se ei edelleenkään ilmesty automaattisesti näkyviin galleriaan.

Sovelluksessa tulee vielä suorittaa Refresh(tasks) -komento, jolloin uusi tehtävä ilmestyy galleriaan. Galleria päivittyy luonnnollisesti myös silloin, kun käyttäjä lisää uuden tai muokkaa olemassa olevaa riviä.

Mikäli 10 minuutin odottaminen on ylivoimaista, voi käyttäjä pakottaa synkronoinnin käynnistymään oikean yläkulman ikonin takaa löytyvällä ”Tarkista päivitykset” -painikkeella.

Tämän voi kuitenkin tehdä vasta kun edellisestä synkronoinnista on kulunut viisi minuuttia.

Sama logiikka pätee muiden käyttäjien poistamiin ja muokkaamiin riveihin.

Käyttäjät päivittävät samaa riviä

Kokeillaan seuraavaksi tilannetta, jossa käyttäjä päivittää rivin otsikon suoraan Dataverseen.

Tämän jälkeen toinen käyttäjä päivittää saman rivin otsikkoa mobiilisovelluksella.

Kumpi muutoksista jää voimaan? Se kumpi on ehditty tallentamaan Dataverseen asti ensimmäisenä.

Käyttäjä päivittää poistettua riviä

Käyttäjä poistaa Dataversestä rivin. Tämän jälkeen toinen käyttäjä muokkaa samaa riviä mobiilisovelluksellaan, jonka omassa tietovarastossa poistetttu rivi vielä on.

Mitä tapahtuu synkronoinnissa?

Ensiksi Dataverseen tehty toiminto (rivin poisto) voittaa. Eli rivi katoaa myös mobiilisovelluksesta. Samalla katoaa käyttäjän siihen tekemät muutokset.

Yhteenveto

Meillä on vihdoin toimiva pohja offline-käyttöä tukevien mobiili Power Appsien tekoon. Muista kuitenkin seuraavat:

  • Aivan kaikkia Power Fx -komentoja ei tueta
  • Ainoastaan Dataverse-taulut toimivat offlinena. Sovellukseen voi lisätä muitakin tietolähteitä, mutta ne eivät luonnollisesti toimi ilman verkkoa
  • Et voi käynnistää cloud flow’ta Power Appsista offline-tilassa
  • Laitteen paikallinen tietovarasto kasvaa helposti suureksi. Onkin tärkeää optimoida, mitä sinne ylipäätään ladataan. Tästä lisää seuraavassa osassa.