Canvas Power Appseissa on tekijältä pyritty häivyttämään kaikki perinteiseen sovelluskehitykseen viittaava. Appsia ei käsitellä kuten kasaa koodia, vaan enemmänkin kuin yhtä PowerPoint-dokumenttia. Tämä on tietenkin kansalaiskehittäjien näkökulmasta mahtavaa.
Entä jos haluaisimme viedä Power Apps -kehityksemme pykälää ammattimaisempaan suuntaan? Ensimmäinen askel on ryhtyä käyttämään versionhallintaa. Tämä mahdollistaa mm. muutosten vertailun kooditasolla eri (versionhallintaan tallennettujen) versioiden välillä.
Käydään lyhyesti miten tämä onnistuu. Ennen aloittamista tarvitset kuitenkin.
- GitHub-tunnukset
- Visual Studio Code:n
- Git-työkalut. Latasin itse Git for Windows:in. VS Code:en löytyy myös oma laajennus (GitHub Pull Requests and Issues extension).
- PASopa.exe:n
- Perusymmäryksen Gitin toiminnasta ja peruskomennoista. Lue esimerkisi tämä.
Ja sitten rohkeasti kokeilemaan!
GitHub säilön (repository) luominen
Käytetään esimerkissämme versionhallintatyökaluna GitHub:ia. Luodaan sinne Power Appsiamme varten oma säilö (repository).

Säilölle annetaan nimi ja kuvaus, sekä määritellään onko se julkinen (public) vai yksityinen (private).

Projektin työskentelykansio
Luodaan omalle työasemalle säilöä vastaava kansio ja avataan se Visual Studio Codella (Open folder).
Tyhjältä näyttää.

Avataan Codessa terminaali, alustetaan (init) avaamamme kansio sekä kytketään (remote add) se GitHubiin luomaamme säilöön.
git init
git remote add origin https://github.com/MyAccount/MyGitHubRepository.git

Seuraavaksi projektimme kaipaa jotain sisältöä.
Power Apps -tiedoston purkaminen luettavaan muotoon
Käytetään esimerkkinä aiemmasta kirjoituksesta tuttua Power Appsia.

Tallennetaan se omalle työasemalle (File -> Save as – > This computer).

Lopputuloksena meillä on msapp-tiedosto. Siirretään se projektin työkansioon.

Ladattu msapp-tiedosto ei sellaisenaan ole kovin hyödyllinen. Haluamme purkaa sen luettavaan muotoon. Tähän käytämme uutta PASopa (Power Apps Source File Pack and Unpack Utility) -työkalua.
pasopa -unpack "Editable grid vol 6.msapp"
Ja näin meillä on Power Apps koko komeudessaan purettuna työskentely kansiossamme! Kiinnostava osuus on src-kansion alta löytyvät yaml-tiedostot. Alla avattuna ProjectAllocationsScreen-näyttöä vastaava yaml-tiedost. Kaikki näytön kontrollit ja niihin liitetyt kaavat ovat luettavissa selkokielisenä.

Voimme esimerkiksi etsiä kaikki paikat, jossa käsittelemme muuttujaa varShowPreloader.

Tämähän on mukavaa.
Koodin vienti versionhallintaan
Meillä on nyt kansiossa kasa tiedostoja, joista Git ei ole vielä mitenkään tietoinen. Lisätään ne kyytiin Add-komennolla.
git add --all
Näin uudet tiedostot ovat mukana.

Merkitään muutokset valmiiksi commit-komennolla, jonka jälkeen kaikki on kunnossa omalla työasemalla.
git commit -m "Add first version"
Lopuksi tiedosto viedään GitHubin säilöön push-komennolla.
git push -u origin master
Vasta tämän jälkeen Power Appsimme koodi näkyy GitHub-palvelussa.

Uuden version tekeminen
Power Appsistamme on valmiina uusi versio (Version2.0). Luodaan sitä varten uusi haara (branch) ja siirrytään työskentelemään siihen (checkout) .
git branch Version2.0
git checkout Version2.0
Tallennetaan uusi versio Power Appista (se msapp-tiedosto) työskentelykansioon vanhan päälle. Näemme heti VS Codessa yhden tiedoston on päivittyneen.

Puretaan ladattu msapp-tiedosto PASopa-työkalulla. Aivan kuten teimme ensimmäiselläkin kerralla.
Mikä uudessa versiossa on sitten muuttunut verrattuna edelliseen? Näemme kaikki muutokset ymmärrettävässä muodossa VS Codessa.

Siistiä!
Uusi versio liitetään lopuksi master-haaraan ja viedään GitHubiin.
git commit -a
git checkout master
git merge Version2.0
git push -u origin master
Ja siellähän se möllöttää.

Muutosten tekeminen VS Codella
Tehdään vielä lopuksi muutama muutos Power Appsiimme suoraan VS Codella. Villiä!
Tehdään tätä varten oma haaransa.
git branch Version3.0
git checkout Version3.0
Vaihdetaan kaikkialta sovelluksessa punainen väri siniseksi. Toisin kuin Power Apps -editoissa, VS Codessa tämä on helppoa. Yksi etsi ja korvaa -komento.

Tämän jälkeen luomme työkansioomme puretusta ja muokatusta koodista uudelleen msapp-tiedoston.
pasopa -pack "Editable grid vol 6.msapp" pathToEditableGridSourceCode
Avataan muodostunut tiedosto Power Appsissa.

Ja kyllä. Kaikki punaiset elementit on korvattu sinisillä!

Yhteenveto
Vaikka kaikki edellä esitetty on todella siistiä (ainakin minusta), huomaa nopeasti mikä tässä on vielä pielessä.
Kyllä. Aivan liikaa manuaalisia toimenpiteitä.
Mutta tämä onkin vasta alkusoittoa. Kevyttä lämmittelyä. Hiljattain julkaistu PowerOps kertoo suunnan mihin olemme menossa. Tulemme pian näkemään päivän, jolloin yhtä nappia painamalla kehitysympäristössä omassa ratkaisupaketissaan oleva canvas Power Apps
- Puretaan luettavaan muotoon
- Koodit siirretään versionhallintaan omaan haaraansa
- Ratkaisupaketti siirtyy testiympäristöön testattavaksi
- Testissä oleva paketti hyväksytään
- Ratkaisupaketti siirtyy tuotantoon
- Paketin koodit yhdistetään versionhallinnassa projektin päähaaraan
Ja sama koskee luonnollisesti Dataversen tietomallia, flow’ta, model-driven appseja, virtual agentteja. Kaikkea mitä nyt ratkaisupakettiin saakaan sisällytettyä.
Hyvä tästä tulee.