Minua on aina viehättänyt miten saman ongelman voi Power Platformilla ratkaista usealla tavalla. Pelkästään canvas Power Appsissa toteutustapoja on lukemattomia. Kun työkalupalettiin lisää loputkin Power Platformin työkalut, alkaa vaihtoehtoja todella löytymään.

Havainnollistetaan tätä käytännön esimerkillä.

Meillä on eri alueilla (area) sijaitsevia yksiköitä (unit). Yksiköihin kohdistuu erilaisia tapahtumia (event). Tiedot tallennetaan Dataverseen. Haluamme visualisoida käyttäjälle mitä tapahtumia milloinkin on

  • kokonaisuudessaan
  • tietyllä alueella
  • tietyssä yksikössä

Miten tämän voisi toteuttaa?

Mallipohjainen sovellus (model-driven app) ja kalenterinäkymä

Aloitetaan vakio-ominaisuuksilla. Koska tapahtumilla on alku- ja loppuaika sekä otsikko, osaa mallipohjainen sovellus esittää ne kalenterissa.

Lisätään tapahtuma-taululle kalenterinäkymä. Tämän joutuu tekemään ns. classic näkymässä. Eli tässä hirveän rumassa.

Lomakkeelle voi lisätä uusilla työkaluilla listan (subgrid), joka esittää tiedot kalenterinäkymässä. Lisätään vain listalle uusi komponentti (component).

Ja määritellään mitä kenttää käytetään alkuaikana, otsikkona jne.

Näin.

Nyt voimme tarkastella yksikön tapahtumia sen lomakkeella. Kalenterissa on päivä-, viikko- ja kuukausinäkymät.

Voimme toki tarkastella kerralla kaikkia tapahtumia. Niitä voi suodattaa (filter) tai vaikka tehdä omia näkymiä eri alueille.

Mutta ei tämä järin toimiva ole esimerkkimme käyttötapauksessa.

Tapahtumaa klikkaamalla saa esiin yhteenvedon. Sen sisältöön emme voi vaikuttaa.

Hyvä aloitus, muttei vielä päästy aivan maaliin.

Katsotaan jotain muuta.

Visualisointi PCF-komponentila

Power Appseissa voi käyttää itse tehtyjä komponentteja. Näitä kutsutaan PCF (PowerApps Component Framework) -komponenteiksi. Toteutuksesta riippuen niitä voi hyödyntää mallipohjaisissa sovelluksissa, canvas sovelluksissa tai molemmissa.

Emme ala toteuttamaan tarvittavaa komponenttia itse, mutta tarkistetaan olisiko joku sellaisen jo tehnyt.

PCF Gallery:stä voi etsiä eri tekijöiden toteuttamia PCF-komponentteja. Ja sieltähän löytyy heti muutama lupaavannäköinen ehdokas.

Mutta.

Ensimmäistä näistä on päivitetty viimeksi 2 vuotta sitten.

Toinen mallipohjaisessa sovelluksessa toimivista vaihtoehdoista on vielä tätäkin vanhempi.

En halua asentaa ympäristööni komponenttia, jota ei ole päivitetty vuosiin. Ja kuka asentaa tuotantoympäristöönsä komponentin, jonka joku konsultti on löytänyt netistä? Ja jonka tekijästä ja hänen osaamistasostaan ei ole mitään tietoa.

Hylätään tämäkin vaihtoehto ja keksitään jotain muuta.

Power Appsiin upotettu Power BI -raportti

Hetkinen. Power BI -raportilla voi visualisoida tapahtumia Gantt-kaavion tyylisesti. Tehdäänkin tapahtumista raportti. Kaikki Power BI:n herkut ovat käytössämme! Voimme suodattaa tehtäviä mielin määrin eli näkökulmista.

Raportti lukee tiedot suoraan (Direct Query) Dataversestä. Näin tapahtumien muutokset ovat aina heti nähtävillä.

Tapahtumien kohdalle muodostetaan linkki, josta sitä pääsee muokkaamaan.

Lisätään mallipohjaiseen sovellukseen mukautettu sivu (Custom page), joka on käytännössä canvas Power Apps.

Mukautettu sivumme sisältää ainoastaan kaksi elementtiä.

  • Painikkeen uuden tapahtuman lisäämiseksi (Navigate(Defaults(nameoftable)))
  • Upotetun Power BI -raportin

Nopeasti tekemämme ratkaisu ei ole kovin houkuttelevan näköinen. Voimme sen avulla kuitenkin testata idean toimivuuden.

New-painikkeella avautuu uuden tapahtuman luontilomake.

Tapahtuman tallennuksen (Save & Close) jälkeen sovellus palaa takaisin muokatulle sivulle. Ja siellähän uusi tapahtuma jo näkyy!

Olemassaolevia tapahtumia pääsee muokkaamaan Power BI-raportin linkistä.

Mutta.

Power BI:ssä olevat linkit avautuvat aina uudelle välilehdelle. Eikä tähän voi vaikuttaa. Sekoittaa käyttäjiä melkoisesti.

Lisäksi mallipohjaisen sovelluksen ja Power BI -raportin ulkoasuja on yllättävän työlästä saada yhdenmukaiseksi.

Jos kuitenkin vielä keksittäisiin jotain muuta.

Power Apps -visualisointi Power BI:lle

Entäpä jos koko työkalun toteuttaisi Power BI -raporttina? Tapahtumat meillä on jo visualisoituna. Tarvitaan vain raportille upotettu Power Apps -visualisointi, jolla tapahtumia luodaan ja muokataan.

Lisätään raportilta käsin uusi Power Apps -visualisointi ja lisätään siihen lomake, jolla päivitetään raportilta suodatetun tietojoukon ensimmäistä riviä.

Tapahtuman muokkaamisen jälkeen päivittämme Power Appsista käsin myös raportin (PowerBIIntegration.Refresh()).

Tämä on kätevää. Käyttäjän ei tarvitse erikseen päivittää raporttia nähdäkseen tekemänsä muutokset.

Nopeasti tehty kokeilu näyttää tältä.

Mutta mutta…

Ratkaisu tuntuu hieman tahmealta. Valittu rivi päivittyy hitaasti Power Appsiin muokattavaksi. Myös muutosten tallennus sekä muutosten ilmestyminen takaisin raportille ottaa hetken.

Eniten kuitenkin häirtsee raportille upotetun Power Appsin ulkonäkö. Vaikka sen miten viimeistelisi, näyttää se silti olevan eri paria raportin kanssa.

Canvas Power Apps

Viimeisenä oljenkortena on toteuttaa koko hoito canvas Power Appsina. Enemmän tekemistä mutta tuleepa sitten juuri sellainen kuin halutaan.

Luodaan Gantt-kaavion oloinen galleria, jossa näytetään valitun kuukauden tapahtumat.

Sovellus on responsiivinen ja tapahtumia voi muokata suoraan galleriasta. Lomakkeet voi viritellä juuri halutunlaisiksi.

Mikäli tämäntyyppisen visualisoinnin rakentaminen tuntuu uuvuttavalta haasteelta, voit ottaa mallia esimerkiksi Terho Antilan jakamasta ratkaisusta.

Yhteenveto

Mikä edellämainituista ratkaisuista sitten on paras?

Kaikissa on hyvät ja huonot puolensa. Ennen päätöstä on hyvä miettiä, mitkä ovat todelliset vaatimukset ratkaisun

  • ominaisuuksille (miten tapahtumia halutaan visualisoida, miten kätevää tapahtumien luonti ja muokkaus tulee olla)
  • suorituskyvylle
  • ulkoasulle

Mikäli työ tehdään omin voimin, valintaan saattaa vaikuttaa myös se mihin Power Platformin työkaluihin löytyy valmista osaamista.