Yksi kevään kiinnostavimmista uusista ominaisuuksista on perinteisen (canvas) PowerApps:in upottaminen osaksi model-driven PowerAppsia.

Kuulostaa sekavalta?

Niin kuulostaa. Katsotaan mitä tämä tarkoittaa käytännössä.

Esimerkki – Myymälöiden auditointi

Teimme aiemmin mobiilisovelluksen myymälöiden tarkastajille. Tietovarastona oli Common Data Service (CDS) for Apps ja mobiilisovellus tehtiin PowerAppsilla.

Erittäin toimiva ratkaisu liikkuvalle työntekijälle.

 

Varsinaisten myymälöiden, niiden tarkastusten sekä tarkastusjaksojen hallinta toteutettiin model-driven Appsina. Tämä on mahdollista, kun tietovarastona käytettiin CDS for Apps:ia.

Screen Shot 2018-10-06 at 14.39.33Screen Shot 2018-10-05 at 23.24.40

Model-driven Apps sopii tähän erinomaisesti. Sitä käyttäen ratkaisua olisi luontevaa (ja helppoa) laajentaa esimerkiksi toteuttamalla

  • prosessi uuden myymälän lisäämiseksi
  • prosessi myymälän poistamiseksi
  • prosessi huonoja arvosanoja jatkuvasti saaneiden myymälöiden käsittelemiseksi
  • jne

Ikäväksemme kaikki tieto ei aina ole tallennettu CDS:ään. Tai model-driven appsin käyttöliittymästä loppuvat muokkausmahdollisuudet kesken.

Tällöin apuun tulee PowerApps.

Myymälään liittyvien palautteiden esittäminen

Esimerkkiyrityksemme on kerännyt jo vuosia loppuasiakkailtaan palautetta myymälöistä. Täydellisessä maailmassa palautteet olisi tallennettu Dynamics 365:een / CDS for Appsiin.

Mutta maailma harvoin on täydellinen. Palautteet on kerätty SharePoint-listaan.

Täydennetään aiemmin tehtyä myymälöiden hallinnointisovellusta siten, että myymälän perustietojen yhteydessä näytetään myös myymälää koskevat palautteet.

Tämä tehdään tietenkin PowerAppsilla.

PowerAppsin upottaminen model-driven Appsiin

Miten tämä upottaminen käytännössä tehdään? Aloitetaan avaamalla tarkastusten hallinnointisovellus (StoreAudit).

storeaudit canvas 1

Haluamme esittää palautteet myymälän tiedot esittävällä näytöllä (Store). Valitaan se (Store -> Forms -> New Form -> edit).

storeaudit-canvas-2.png

Esiin ilmestyy Dynamicsin vanha lomake-editori.

storeaudit canvas 3.png

Editori saattaa näyttää hieman sekavalta. Olemme käytännössä muokkaamassa allaolevaa sivua, jonka avulla katsotaan / muokataan / lisätään myymälän tietoja.

storeaudit canvas 4.png

Sivu on yksipalastainen. Muokataan sitä siten, että General-osio jaetaan kahteen sarakkeeseen. Alkuperäiset kentät jäävät vasemmalle. Varataan oikea reuna PowerAppsille.

storeaudit canvas 6.png

Raahataan oikean reunan kenttä-listasta Name-kenttä paikkaan, johon haluamme sijoittaa PowerAppsin.

storeaudit canvas 7.png

Muokataan lisätyn kentän ominaisuuksia (change properties).

Ensimmäisenä otetaan ”Display label on the Form” -valinta pois päältä. Muutoin PowerAppsin viereen tulisi kentän otsikko.storeaudit canvas 8.png

Siirrytään Controls-välilehdelle. Liitetään kenttään uusi kontrolli Add Control -linkkiä painamalla.

storeaudit canvas 9.png

Olemme liittämässä Canvas app:ia. Valitaan se ja painetaan Add.

storeaudit canvas 10.png

Haluamme PowerAppsimme näkyvän web-liittymässä teksikentän tilalla. Eli Canvas app -riville ruksi kohtaan Web.

Painetaan lopuksi Customize.

storeaudit canvas 11.png

Napista avautuu PowerApps, jossa on luotuna yhteys model-driven Appsiin (ModelDrivenFormIntegration).

storeaudit canvas 12.png

Konsepti on sama kuin Power BI:n kanssa.

Käytännössä PowerAppsista pääsee nyt käsiksi siihen model-driven appsin entiteettiin, josta lähdimme liikkeelle (Store). Ja nimenomaan siihen tietueeseen, joka model-driven appsissa parhaillaan on näkyvillä.

storeaudit canvas 13.png

 

Ei tehdä vielä mitään muokkauksia PowerAppsiin.

Laitetaan PowerAppsin asetuksista ”Enable app embedding user experience” päälle.

storeaudit canvas 14.png

Näin PowerAppsimme näyttää hieman paremmalta upotettuna.

Tallennetaan ja suljetaan PowerApps.

Avoimeen dialogiin on ilmestynyt luodun PowerAppsin Id.

storeaudit canvas 15.png

Painetaan OK. Ja Save. Ja Publish.

Avataan model-driven apps ja avataan joku myymälä.

Olemme onnistuneesti upottaneet canvas PowerApps:in Model-Driven Appsin sisälle!

storeaudit canvas 16.png

Voimme aloittaa varsinaisen työn.

Myymälään liittyvien palautteiden esittäminen

Kaikki myymälöihin liittyvät palautteet on tallennettu yhteen SharePoint-listaan.

Jokainen palaute sisältää

  • palautetta koskevan myymälän nimen (store)
  • palautteen (feedback)
  • palauteluokan (category)
  • käsittelijän (hander)
  • käsittelyn tilan (status)

storeaudit canvas 17.png

Avataan luomamme PowerApps ja lisätään SharePoint-lista tietolähteeksi (Data source).

storeaudit canvas 18.png

Lisätään näytölle galleria, jossa palautteet esitetään.

storeaudit canvas 20.png

Näytetään palautteista seuraavat sarakkeet

  • palaute
  • käsittelyn tila

Sekä lisätään riville kuva-elementt.

storeaudit canvas 21.png

Lisätään tietolähteeksi Office 365 Users. Sen avulla voimme näyttää rivillä palautteen käsittelijän kuvan.

Image: Office365Users.UserPhotoV2(Handler.Email)

storeaudit canvas 22.png

Haluamme näyttää galleriassa ainoastaan parhaillaan katsottavaan myymälään liittyvät palautteet. Suodatetaan (Filter) ne siis myymälän mukaan.

storeaudit canvas 23.png

Tallennetaan, julkaistaan ja avataan jälleen model-driven apps.

storeaudit canvas 24.png

Yllättäen palautetekstin esittävä kenttä on liian lyhyt ja teksti katkeaa kesken.

Syynä on skaalaus. PowerAppsin koko muuttuu model-driven appsin sisällä sen mukaan minkä kokoinen selainikkuna kulloinkin on.

PowerAppsin kentät ovat oletuksena kiinteän levyisiä. Ratkaisu on muuttaa kentän leveys riippumaaan näytön leveydestä.

Width: Screen1.Width - 160

storeaudit canvas 25.png

Nyt palautteen näyttävän kentän leveys riippuu PowerAppsin kulloinkin saamasta tilasta.

storeaudit canvas 26.png

Viilataan ratkaisua vielä hieman

  • Lisätään otsikko (Palautteet)
  • Lisätään mahdollisuus suodattaa palautteita tilan mukaan (kaikki tai ainoastaan käsitellyt)
  • Vaihdetaan gallerian värit sopimaan paremmin model-driven värimaailmaan
  • Vaihdetaan palautteen avaava ikoni paremman näköiseksi
  • Määritellään palaute avautumaan nuolesta: Launch(ThisItem.’Link to item’)
  • Määritetään nuolen paikka dynaamisesti: X = Screen1.Width – 90

Palautteen avaava nuoli:

storeaudit canvas 27.png

Palauuteiden suodattaminen:

Näyttökuva 2019-4-25 kello 20.59.15.png

Kelpaa.

Näyttökuva 2019-4-25 kello 20.56.33.png

 

Nuolta klikkaamalla palaute avautuu SharePointissa.

Myymälän esittäminen kartalla

Kun kerran aloitettiin, niin leikitään vielä lisää. Lisätään PowerAppsiin kartta, josta näkee missä kyseinen myymälä on.

Tarvitsemme ensin avaimen Bing Maps:in API:iin. Kun se on hankittu, lisätään PowerAppsiin BingMaps -yhdistin.

storeaudit canvas 29.png

Lisätään näytölle kuva-kontrolli (image), jossa esitettävä kuva haetaan Bing-palvelusta.

BingMapin GetMapV2-kutsun parametrit ovat

  • kuvassa esitettävä karttatyyppi (imagerySet)
  • miten paljon karttaa on zoomattu (zoomLevel)
  • leveysaste (latitude)
  • pituusaste (longitude)
  • kartalla näytettävän pinnin sijainti, otsikko jne

Muutaman kokeilun jälkeen päädyin seuraavaan.

BingMaps.GetMapV2(
  "CanvasLight",
  13,
  Value(First(ModelDrivenFormIntegration.Data).crd01_Latitude),
  Value(First(ModelDrivenFormIntegration.Data).crd01_Longitude),
  {
    pushpinLatitude: Value(First(ModelDrivenFormIntegration.Data).crd01_Latitude),
    pushpinLongitude: Value(First(ModelDrivenFormIntegration.Data).crd01_Longitude)
  }
)

storeaudit canvas 30.png

Kuvan leveys on syytä asettaa dynaamiseksi, ettei käy kuten palautetekstin kanssa.

Width: Screen1.Width

storeaudit canvas 31.png

Valmis!

Näyttökuva 2019-4-25 kello 21.12.45.png

Yhteenveto

PowerAppsin hyödyntäminen model-driven Appsin sisällä on konseptina hyvin samanlainen kuin PowerAppsin käyttäminen Power BI:n sisällä.

Molemmissa tapauksissa PowerApps voi lukea isäntäsovelluksesta kulloiseenkin kontekstiin liittyviä tietoja.

Upottamalla PowerAppsin model-driven appsin sisään voi hyödyntää ratkaisussa molempien teknologioiden parhaita puolia.