Organisaatiot pohtivat parhaillaan pitäisikö PowerAppseille ja Flow:lle rakentaa hallintamalli ja millainen se olisi. Ennen sitä on kuitenkin hyvä selvittää nykytila.
Mutta mistä näen montako PowerAppsia ja Flow:ta tenanttiin on jo luotu? Ketkä niitä ovat tehneet?
Tiedon saa kaivettua esille PowerAppsin (tai Flow:n) Admin center:istä (https://admin.powerapps.com). Kunkin ympäristön (Environment) kohdalta löytyvät sen resurssit (Resources), jonka alta näet kaikki ympäristön PowerAppsit ja Flow:t.
Mikäli ympäristöjä on useita ja niihin on luotu useita ratkaisuja, on tällä menetelmällä hankalaa muodostaa yleiskuvaa tilanteesta.
Toteutetaan yksinkertainen ratkaisu, joka autaa tilannekuvan muodostamisessa. Ratkaisussa
- Haetaan Flow:n avulla tiedot tenantin kaikista ympäristöistä, PowerAppseista ja Flow:sta
- Tallennetaan haetut tiedot omiksi JSON tiedostoikseen
- Rakennetaan Power BI raportti, joka käyttää tietolähteenään muodostettuja tiedostoja
Aloitetaan!
Tietojen kerääminen – Flow
Luodaan manuaalisesti käynnistyvä Flow, joka kerää tenantista tarvitsemamme tiedot. Luodaan PowerAppseja, Flow:ta sekä Flow:n tekijöitä varten omat taulukkomuuttujat. Yksittäisen Flow:n tekijää varten riittää merkkijonomuuttuja.
Seuraavaksi haetaan ympäristö kerrallaan PowerAppsit ja Flow:t. Tähän käytetään Get Apps as Admin ja List Flows as Admin yhdistimiä. Flow:n suorittajalla tulee olla kaikkiin ympäristöihin hallinnointioikeudet.
Flow:den kerääminen
Tenantissa voi olla useita ympäristöjä, joista jokaisen Flow:t saadaan ulos omana JSON -muotoisena merkkijononaan (List Flows as Admin). Muodostetaan näistä Power BI:tä varten yksi JSON-tiedosto (flows.json).
Luvassa on merkkijonoaskartelua.
Käytännösssä teemme seuraavaa.
Saamme tiedot ensimmäisen ympäristön Flow:sta omana JSON:ina.
[ {"flowname": "flow 1 on environment 1"}, {"flowname": "flow 2 on environment 1"} ]
Sekä toisen ympäristön Flow:t vastaavana omana JSON:ina.
[ {"flowname": "flow 1 on environment 2"}, {"flowname": "flow 2 on environment 2"} ]
Yhdistämme nämä yhdeksi merkkijonoksi.
[ {"flowname": "flow 1 on environment 1"}, {"flowname": "flow 2 on environment 1"}, {"flowname": "flow 1 on environment 2"}, {"flowname": "flow 2 on environment 2"} ]
Poistetaan aluksi kustakin JSON:sta ensimmäinen ja viimeinen merkki ([ ja ]).
Muutetaan ensin List Flows as Admin -toiminnon paluuarvo merkkijonoksi, jotta tulevat (merkijono-)operaatiot toimivat.
Tämän jälkeen poistetaan ensimmäinen merkki.
Toiminnoissa käytetyt kaavat ovat seuraavat.
string(body('List_Flows_as_Admin')?['value'])
substring(outputs('Compose_2'),0,sub(length(outputs('Compose_2')),1))
Seuraavaksi lasketaan jäljelle jääneen merkkijonon pituus ja vähennetään siitä yksi.
Tätä tietoa hyödyntäen napsaisemme merkkinjonon poikki viimeisen merkin kohdalta.
Merkkijonon pituuden laskeminen:
add(length(outputs('Compose_last_char_removed')),-1)
Viimeisen merkin poistaminen:
substring(outputs('Compose_last_char_removed'),1,outputs('Compose_length'))
Näin ensimmäinen ja viimeinen merkki on poistettu ja voimme lisätä muodostuneen JSON:in muuttujan loppuun.
Muuttujan sisältämät JSON:it liitetään myöhemmin vielä yhteen.
PowerAppsien käsittely
PowerAppsit lisätään omaan muuttujaansa täsmälleen samalla tavalla kuin Flow:t.
Flow tekijät
PowerApps JSON sisältää jokaisen PowerAppsin tekijän selkokielisen nimen. Flow JSON taas sisältää tekijästä ainoastaan UserID:n. Haluamme esittää raportilla selkokieliset nimet, joten haetaan omaan JSON-tiedostoon kaikkien Flow:n tekijöiden tiedot.
Käydään Flow:t läpi ja
- Haetaan omistajan profiili
- Tallennetaan omistajan nimi muuttujaan. Mikäli omistajan tietoja ei löydy, asetetaan nimeksi Unknown.
- Lisätään Flow Makers muuttujaan uusi rivi, jossa on JSON muodossa tekijän tiedot (userID ja nimi).
Tiedostojen muodostaminen
Nyt meillä on omissa taulukkomuuttujissaan tarvitsemamme tiedot. Seuraavaksi tallennetaan ne omiin tiedostoihinsa.
Muunnetaan taulukkomuuttuja merkkijonoksi Join -toiminnolla. Erotinmerkkinä käytetään pilkkua eli kukin taulukon alkio erotetaan merkkijonossa toisistaan pilkulla.
Lopuksi merkkijono tallennetaan tiedostoksi OneDriveen. Tässä vaiheessa merkkijonon ympärille laitetaan kaarisulut, jotka vaivalla poistimme aikaisemmin.
Vastaavalla tavalla tallennetaan PowerAppsit ja Flow:den tekijät. Ympäristöt sisältävä JSON tallennetaan sellaisenaan.
Lopputulos
Valmis Flow näyttää tältä.
Kun työnkulun ajaa, ilmestyy tarvittavat JSON-tiedostot OneDrive -kansioon.
Tarvittava aineisto on valmis. Vain se luvattu raportti puuttuu.
Power BI raportti
Tietojen lataaminen
Luodaan tyhjä raportti ja haetaan siihen tiedot PowerAppseista (Get data -> valitaan lähteeksi JSON).
Poimitaan kovalevyltä oikea JSON tiedosto (Apps.json).
Muodostamamme JSON sisältää kasan tietueita. Muutetaan ne taulukkomuotoon (To table).
Tämän jälkeen pääsemme valitsemaan, mitkä tietueen sarakkeista otetaan mukaan. Tietenkin kaikki.
Lähes kaikki kiinnostava tieto löytyy properties -tietueesta. Avataan vielä sekin ja poimitaan mukaan vähintään
- Owner
- CreatedBy
- DisplayName
- CreatedTime
- SharedGroupsCount
- SharedUsersCount
- Environment
- EmbeddedApp
Joudumme vielä avaamaan CreatedBy ja Environment -tietueet omiksi sarakkeikseen. Hengästyttävää kliksuttelua, jonka jälkeen voidaan poistaa sarakkeet joita ei halutakaan mukaan.
Sarakkeiden uudelleennimeämisen jälkeen aineistomme näyttää tältä.
Vastaavalla tavalla tuodaan Flow:t, Flow:den tekijät sekä ympäristöt sisältävät JSON tiedostot mukaan.
Tietomallin muodostaminen
Seuraavaksi rakennetaan tietomalli. Se on yksinkertainen. Flow:t ja PowerAppsit liittyvät ympäristöihin (Environment name) ja Flow:t liittyvät niiden tekijöihin (UserID).
Vihdoin pääsemme tekemään sitä varsinaista raporttia.
Visualisoinnit
Lisätään kortti-visualisoinnit seuraaville lukumäärille
- PowerAppsit
- Flow:t
- PowerAppsien tekijät
- Flow tekijät
Lisätään yksinkertainen pylväskuvaaja, josta näkee ketkä PowerAppseja ovat tehneet ja miten paljon.
Sitten vastaava käppyrä Flow:sta. Tekijän display name löytyy omasta taulustaan. Erotellaan kuvaajassa Flow:t vielä niiden tilan (state) mukaan. Näin näemme jos joku on tehnyt suuren määrän työnkulkuja, jotka ovat stopped tilassa.
Viimeiseksi lisätään kuvaaja ympäristöistä. Kunkin ympäristön kohdalla näkyy, montako PowerAppsia ja Flow:ta se sisältää.
Kun vielä maltamme hieman siistiä raporttia, näyttää se näyttää tältä!
Nyt voit milloin tahansa ajaa Flow:n ja sirtää muodostuneet JSON-tiedostot raportin käyttämien tilalle. Lopuksi päivität raportin (refresh) ja näet, missä menette juuri nyt PowerAppsien ja Flow:den osalta.
Yhteenveto
Tämä on yksinkertainen tapa saada yleiskuva ympäristöstä, johon on tehty paljon ratkaisuja. Raporttiin voi tietenkin lisätä paljon muutakin kiinnostavaa (muokkauspäivät, jaot, mitkä PowerAppseista ovat SharePoint-listojen muokkauksia jne).
Tällainen snapshot ei kuitenkaan ole oikea työkalu jatkuvaan ympäristöjen seurantaan ja hallinnointiin. Sitä varten kannattaa toteuttaa aivan oikea raportointi, esimerkiksi Center of Excellence Starter Kit:iä hyödyntäen.