Edellisessä kirjoituksessa kävimme läpi miten Flow:n ja Microsft Graphin avulla voi luoda tiimejä. Ratkaisu jäi osin vajaaksi, joten täydennetään sitä tällä kertaa seuraavin tavoin
- Ei odoteta 15:tä minuuttia, vaan kytätään tiimin valmistumista 30 sekunnin välein
- Lisätään luoduille tiimille luokka (classification)
- Lisätään projekti-tiimin general-välilehdelle linkki projektityökaluun. Linkkiä klikkaamalla avautuu kyseisen projektin tiedot (url-parametrina projektin id)
- Toteutetaan vanhentuneiden tiimien poisto
Onko tilattu tiimi jo valmis?
Alunperin odotimme työnkulussa kiltisti 15 minuuttia kloonauksen käynnistämisen jälkeen, jotta uusi tiimi on varmasti luotu.
15 minuuttia on ikuisuus. Muutetaan toteutusta hieman.
Luodaan Flow:n alussa muuttuja, jossa säilytetään tietoa onko tiimi jo luotu vai ei.
Kloonauksen aloittamisen jälkeen käynnistämme silmukan (do until), joka päättyy muuttujan TeamStatus jonkun muun arvoin kuin running.
Silmukan alussa odotetaan 30 sekuntia, jonka jälkeen tarkistetaan onko tiimi valmis. Tätä voi kysyä osoitteesta (location), jonka saimme tiimin kloonaus -komennon paluuarvona.
Tarkistuskutsun paluuarvo parsitaan Parse JSON -toiminnolla. Tämän jälkeen on helppo tarkistaa, onko luonnin tila jotain muuta kuin ”käynnissä” (running).
Mikäli tila on muuta kuin ”käynnissä” (Succeeded tai Failed), päivitetään muuttujan arvoksi uusi tila.
Silmukan suorittaminen keskeytyy ja Flow jatkaa matkaa normaalisti. Mikäli kloonaus päätyy johonkin muuhun tilaan kuin Succeeded, keskeytetään Flow:n suoritus.
Kokonaisuudessaan silmukka näyttää tältä.
Tiimien luokittelu
Lisätään tilauslistalle sekä PowerAppsiin kenttä, joka kertoo mihin luokkaan (Classification) tiimi kuuluu.
Flowssa käyttäjän valitsema luokka asetetaan parametriksi tiimin kloonaavaan REST API -kutsuun.
Kas näin uusi tiimi on luokiteltuna oikein!
Tiimin luokka voitaisiin myös päätellä käyttäjän tilauslomakkeella antamien arvoen perusteella.
Uuden välilehden lisääminen
Haluamme lisätä luotavan projekti-tiimin General-kanavaan linkin projektityökaluun. Vieläpä siten, että linkin url-parametriksi tulee projektin id. Näin työkalu avautuu aina tiimiä vastaavan projektin tietojen kohdalta.
Linkki lisätään General-kanavaan, joten tarvitsemme kyseisen kanavan id:n. Aloitetaan hakemalla kaikki juuri luomamme tiimin kanavat.
Käydään läpi kaikki kanavat ja katsotaan osuuko kohdalle General-kanava. Mikäli osuu, tarkistetaan olemmeko luomassa projekti-tiimiä.
Jos olemme, luodaan kyseiselle kanavalle uusi välilehti (tab), jossa on linkki projektityökaluun.
Ja siellä se lopulta on!
Myös linkin osoite on haluamamme. Tiimin tilauslomakkeella annettu projektinumero on linkissä url-parametrina.
Vanhojen tiimien automaattinen poistaminen
Poistaminen on helpompaa, kun tiedämme poistettavan tiimin id:n. Tallennetaan se luonti Flow:ssa tilauslistalle
Tehdään uusi Flow, joka käynistyy kerran viikossa. Flow hakee tilauslistasta kaikki tilaukset, joissa tiimin viimeinen voimassaolopäivä (expiration date) on mennyt. REST API -kutsua varten lisäämme muuttujiin tarvittavat tiedot (TenantId, ClientId, Client secret) tunnistautumista varten.
Käynnistetään hyväksyntätyönkulku (approval), jolla varmistetaan että tiimin todellakin saa poistaa. Hyväksyntäpyyntö lähtee tiimin alkuperäiselle tilaajalle sekä adminille. Alkuperäinen tilaaja kun on saattanut jo poistua organisaatiosta.
Mikäli jompi kumpi hyväksyy poiston, niin tiimi poistetaan.
Yhteenveto
Tiimien käsittelyyn julkaistut Microsoft Graph -rajapinnat ovat mainioita. Mutta eivät vielä lähellekkään täydellisiä. Lyhyen leikin aikana on selvinnyt muun muassa seuraavaa.
- Kloonaaminen REST API -kutsulla ei kloonaa (vielä) välilehtiä.
- Mikäli kloonaaminen tulee toimimaan, kuten käyttöliittymästä tehtävä kloonaaminen (Create a team using an existing team as a template), on se välilehtien osalta aika hyödytön. Se tuo mukanaan vain otsikot. Linkkien kohteet pitää kloonaamisen jälkeen käydä laittamassa käsin kuntoon.
- Linkit voi kuitenkin luoda automaattisesti Flow:ssa (kuten teimme projektityökalun kanssa). Tällä tavoin ei kuitenkaan ole (vielä) mahdollista luoda natiivilinkkejä esim. PowerAppsiin
PS. Valmiit Flow:t näyttävät kokonaisuudessaan tällaisilta.