Flow + SharePoint -pohjaisia ratkaisuja tehdessä törmää usein samaan ongelmaan. Ratkaisun pitäisi tehdä jotain käyttäjän päivittäessä SharePoint-listan riviä. Mutta tämä ”jotain” riippuu siitä, mitä listan sarakkeista on päivitetty.
Tässä kohtaa loppuu Flow:sta pelimerkit.
Tai eivät ne kokonaan lopu. Valmista toimintoa (Action) tähän käyttötarkoitukseen ei ole. Voit kylläkin kutsua Flow:sta SharePoint Rest API:a ja kaivaa sitä hyödyntäen rivin versiohistoriasta nykyistä edeltävän version. Tämän jälkeen voit selvittää mitä kenttiä käyttäjä on muokannut.
Kuulostaa niin työläältä että päätä särkee jo ajatuskin.
Ratkaistaankin ongelma tylsällä ja suoraviivaisella tavalla. Ryhdytään pitämään (tietenkin Flown:lla) kirjaa listan rivien edellisistä arvoista.
Parhaiten tämä aukeaa esimerkin avulla.
Esimerkki – Tilausten käsittely
Rakennetaan kevyt tilaustenkäsittelyratkaisu. Tietenkin PowerApps + SharePoint + Flow yhdistelmällä. Tilaukset tallennetaan SharePoint-listalle, jonka kentät ovat
- Tilauksen sisältö (Title)
- Tilauksen tila (Status)
- Tilaaja (Created by)
- Hyväksyjä (Approver)
- Tilaukseen liittyvät kommentit (Comments)
Haluamme tilausrivin päivittyessä
- Hyväksyjän vaihtuessa – Lähettää uudelle hyväksyjälle ilmoitus
- Tilauksen tilan päivittyessä – Lähettää ilmoituksia tilaajalle ja/tai hankintaan, riippuen uudesta tilasta
- Muissa tapauksissa (esimerkiksi päivitetään vain kommentteja) – Ei tehdä mitään
Tätä varten luomme toisen listan, jossa ylläpidetään kunkin rivin edeltäviä arvoja. Esimerkkiämme varten tarvitsemme
- Tilauksen tilan (Status)
- Hyväksyjän (Approver)
Sekä tietenkin alkuperäisen rivin id:n (OrderID).
Kaikki sarakkeet kannattaa määritellä tekstikentiksi. Pääsee helpommalla.
Käyttäjän tehdessä uuden tilauksen, luodaan vastaava rivi historialistaan.
Ja sama käytännössä. Kun luomme uuden tilauksen, syntyy uusi rivi tilauslistalle.
Sekä vastaava rivi historialistalle.
Nyt meillä on kaikki tarvitsemamme tieto käytössämme!
Luodaan seuraavaksi työnkulku joka reagoi tilausrivin muuttumiseen. Aivan aluksi haemme luomastamme historialistasta kyseisen tilausrivin edelliset arvot. Tämä onnistuu ODATA filtteriä hyödyntämällä.
Nyt voimme selvittää onko tilauksen tilaa muutettu. Eli onko muokatun tilausrivin tila (status) eri kuin historialistalla tallessa oleva tila.
Mikäli tilaa on muutettu, teemme eri toimenpiteitä riippuen mikä uusi tila on (approved tai rejected).
Samalla tavalla käsitellään hyväksyjän vaihtuminen. Mikäli hyväksyjä on vaihtunut, lähetetään uudelle hyväksyjälle sähköposti-ilmoitus. Mikäli hyväksyjää ei ole vaihdettu, ei tehdä mitään.
Työnkulun lopuksi päivitetään uudet arvot historialistaan.
Niin suoraviivaista että melkein hävettää. Ja vähän hävettääkin.
Koko Flow näyttää tältä.