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)

orders.png

Haluamme tilausrivin päivittyessä

  1. Hyväksyjän vaihtuessa – Lähettää uudelle hyväksyjälle ilmoitus
  2. Tilauksen tilan päivittyessä – Lähettää ilmoituksia tilaajalle ja/tai hankintaan, riippuen uudesta tilasta
  3. 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.

orders prevoious.png

Käyttäjän tehdessä uuden tilauksen, luodaan vastaava rivi historialistaan.

orders create history row.png

Ja sama käytännössä. Kun luomme uuden tilauksen, syntyy uusi rivi tilauslistalle.

orders-create-history-row-example-1.png

Sekä vastaava rivi historialistalle.

orders create history row example 2.png

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ä.

modify order

Nyt voimme selvittää onko tilauksen tilaa muutettu. Eli onko muokatun tilausrivin tila (status) eri kuin historialistalla tallessa oleva tila.order is status changed.png

Mikäli tilaa on muutettu, teemme eri toimenpiteitä riippuen mikä uusi tila on (approved tai rejected).

orders modify item 3.png

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.

orders modify item 4

Työnkulun lopuksi päivitetään uudet arvot historialistaan.

orders modify item 5.png

Niin suoraviivaista että melkein hävettää. Ja vähän hävettääkin.

Koko Flow näyttää tältä.

order history flow.png