Top
Photo by airfocus on Unsplash

Jak automatycznie kończyć zadania zatwierdzania w Power Automate i Microsoft Teams

Table of Contents


Pisząc mój poprzedni post dotyczący pracy z zadaniami w Power Automate, zdałem sobie sprawę, że w tabeli Flow Approval istnieje kolumna o nazwie Flow Notification URI, której do tej pory naprawdę nie doceniałem. Pokażę teraz, jaka drzemie w niej moc!

Do dziś byłem prawie pewien, że nie da się automatycznie ukończyć zadania w Power Automate/Microsoft Teams, a także wznowić procesu, który czeka na zatwierdzenie. Okazuje się, że naprawdę się myliłem.

Trochę podstaw

Za każdym razem, gdy przepływ pracy zawierający akcję, która przypisuje zadanie i czeka na jego zakończenie, jest wykonywany, nie tylko tworzy wpisy w tabelach Approval i Approval Request, ale także w Flow Approval. Co więcej, każdy wpis w tej ostatniej tabeli zawiera wartość w kolumnie o nazwie Flow Notification URI, który po wywołaniu z żądaniem POST po prostu kończy oczekiwanie i wznawia przepływ:

Flow Notification URI column

Adres URL jest zbudowany z następujących składowych (większość z nich pochodzi z innych kolumn tabeli Flow Approval):

https://[instancja].westeurope.logic.azure.com/workflows/[Flow Id]/runs/[Flow Run Sequence Id]/actions/[Nazwa akcji czekającej na zakończenie]/run?api-version=2016-06-01&sp=%2Fruns%2F[Flow Run Sequence Id]%2Factions%2F[Nazwa akcji czekającej na zakończenie]%2Frun%2C%2Fruns%2F[Flow Run Sequence Id]%2Factions%2F[Nazwa akcji czekającej na zakończenie]%2Fread&sv=1.0&sig=[klucz podpisujący żądanie]

Co dalej?

Wiedząc, że wysłanie żądania POST do tego adresu URL kończy oczekiwanie i wznawia przepływ, otwiera zupełnie nowy zakres scenariuszy, które można zbudować wokół podstawowych zadań akceptacji, na przykład przy użyciu niestandardowych aplikacji Power Apps. Wyobraź sobie tylko niektóre z nich:

  1. Zatwierdzanie w imieniu innej osoby,
  2. Oczekiwanie na większość odpowiedzi, nie wszystkich,
  3. Kończenie zatwierdzania w dowolnym momencie,
  4. I wiele, wiele innych!

Celem jest, aby najpierw zapisać i zaktualizować dane we wszystkich innych tabelach, z których korzystają Approvals (o których mowa w moim poście tutaj), uzyskać wszystkie informacje potrzebne do wysłania w odpowiedzi, a następnie wykonać POST do Notification URI.

Ponadto, wykonując taki POST, upewnij się, że jest zgodny z oczekiwanym formatem JSON i że umieściłeś „Content-Type: application/json” jako nagłówek:

{
   "responses":[
      {
         "responder":{
            "id":"GUID z tabeli Users",
            "displayName":"Imię kończącego zadanie",
            "email":"Mail kończącego zadanie",
            "tenantId":"Tenant ID",
            "userPrincipalName":"Principal name kończącego zadanie"
         },
         "requestDate":"Timestamp",
         "responseDate":"Timestamp",
         "approverResponse":"Wynik zadania",
         "comments":"Komentarz"
      }
   ],
   "responseSummary":"Tekst będący zlepkiem informacji o każdym zadaniu, kto, kiedy i z jakim wynikiem.",
   "completionDate":"Timestamp",
   "outcome":"Ogólny wynik zatwierdzania",
   "name":"Approval ID z tabeli Approval",
   "title":"Nazwa zadania",
   "details":"Opis zadania",
   "requestDate":"Timestamp",
   "expirationDate":"Timestamp"
}

Po wysłaniu takiego POST akcja zakończy oczekiwanie i wyświetli wszystkie dane jako dynamiczne wyniki, tak jakby została zakończona za pomocą interfejsu zadania:

Completed task in Power Automate

Mam nadzieję, że ten post cię tak saom podekscytował, jak mnie, gdy odkryłem tę możliwość. Daj znać w komentarzach, jakie scenariusze jesteś w stanie teraz zrealizować!


Tomasz Poszytek

Cześć! Nazywam się Tomasz. Jestem ekspertem w dziedzinie automatyzacji procesów i budowaniu rozwiązań dla biznesu z użyciem Power Platform. Jestem Microsoft MVP i Nintex vTE.

Brak komentarzy

Wyślij komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.