Proces akceptacji z wykorzystaniem narzędzi Power Platform.
Organizacje o charakterze komercyjnym zakładane są dla zysku. Niezależnie od specyfiki działalności, każda firma jest zmuszona funkcjonować w warunkach konkurencji rynkowej. Jednym z kluczowych czynników wpływających na ogólną, dobrą kondycję firmy jest jakość podejmowanych decyzji. Efektem tego są satysfakcjonujące wyniki finansowe.
Wypracowane przez organizacje procesy decyzyjne oraz narzędzia wspomagające te procesy należy traktować jako jeden z obszarów, wokół którego można budować przewagę nad konkurencją. Dobrze skonstruowany proces decyzyjny – chrakteryzujący się przejrzystością dla wszelkich jego uczestników w połączeniu z prawidłowo dobranymi narzędziami informatycznymi to fundamenty sprawnego przepływu informacji wewnątrz organizacji oraz komunikacji na zewnątrz.
Najpierw proces, potem aplikacja
Wiele firm zakłada, że aplikacje usprawnią procesy, które w firmie kuleją. Jest to oczywiście założenie słuszne. Chciałbym jednak zwrócić uwagę, że żadna aplikacja nie naprawi problemu, jeśli nie wiemy, gdzie on konkretnie występuje.
Każda organizacja wypracowuje własne mechanizmy radzenia sobie z potrzebą akceptacji pewnych etapów procesów biznesowych. Poprzez mechanizmy rozumiem przyjęte i ogólnie znane kryteria oceny oraz matrycę, która określa ścieżkę akceptacji. Ścieżka akceptacji może przebierać bardzo różne formy. W ramach jednego poziomu może być wyznaczona jedna lub wiele osób odpowiedzialnych za akceptację. Zatwierdzenie może być wymagane przez jedna dowolna osobę z grupy decyzyjnej, przez wszystkich członków tej grupy lub ich określona liczbę. Proces może również różnić się ścieżką akceptacji w zależności od pewnych parametrów wybranych na początku procesu. (np. typ wniosku urlopowego, typ oferty wysyłanej do klienta lub wartość zamówienia). Dodatkowo w tworzeniu procesu akceptacyjnego można zastosować wiele poziomów. Na przykład wniosek po zatwierdzeniu przez 1 grupę decyzyjna na 1 poziomie podlega jeszcze jednej weryfikacji (2 poziom) przez zarząd.

Nie bez znaczenia jest również uzgodniony wewnętrznie sposób podejmowania decyzji. Wiele firm korzysta z tradycyjnych form rejestrowania procesu akceptacyjnego, przy użyciu programów Excel, Outlook lub kartki papieru. Nie są to jednak rozwiązania skalowalne. Wraz ze wzrostem firmy tradycyjne metody mogą okazać nie efektywne i doprowadzić do zbyt dużej asymetrii informacji oraz znacznie wydłużyć proces decyzyjny. Rozwiązaniem skalowalnym, będącym standardem dla globalnych organizacji są programy informatyczne, już dzisiaj najczęściej działające w chmurze.
Jak wykorzystać aplikacje w procesie akceptacji?
Jedną z propozycji, która może okazać się szczególnie atrakcyjna dla organizacji korzystających z programów orfice 365 lub chmurowej wersji Microsoft 365 będą narzędzia Power Automate i Power Apps. Bardzo możliwe, że już dziś w firmach korzystających z usług chmurowych Microsoft w ramach wykupionych licencji znajdują się te programy. Oferują one szerokie możliwości automatyzacji procesów i wielokrotnie zwiększają efektywność wykonywanych zadań. Przykładem narzędzia wspomagającego proces akceptacji w firmie może być rozwiązanie polegające na zbudowaniu aplikacji osadzonej w Power Apps oraz zintegrowanym z nią przepływu pracy programu Power Automate.
Power Apps to platforma low code umożliwiająca tworzenie prostych aplikacji biznesowych bez specjalistycznej znajomości języka programowania. Rozwiązania typu Low-Code zyskują ogromna popularność, dzięki możliwości tworzenia i wdrażania aplikacji bez udziału developerów.
To rozwiązanie charakteryzuje się niskimi kosztami prac programistycznych, szybkim wdrożeniem w warunki produkcyjne oraz możliwością wprowadzania poprawek i nowych funkcji w sposób dynamiczny. Takie narzędzie wspomagające proces akceptacji w wybranym procesie biznesowym może korzystać z bazy danych w formie list programu SP, natywnej bazy danych dla Power Platform – Dataverse lub dowolnym innym magazynie danych On-Premise (kokalnie) lub w chumrze (nie loklanie).
Mechanizm działania każdego z komponentów zostanie przedstawiony na przykładzie bardzo powszechnego procesu, który jest nieodzownym elementem rzeczywistości każdej firmy – procesu zatwierdzania wniosków urlopowych. Takie narzędzie zostało wdrożone w naszej organizacji w niespełna 2 tygodnie. Zespół odpowiedzialny za aplikację składał się z 1 PM i 1 developera. Warto zaznaczyć, że zarzadzanie wnioskami urlopowymi pracowników to tylko jedno z możliwych zastosowań opisywanych technologii. Zbiór narzędzi typu low-code należących do ekosystemu Power Platform ma szerokie zastosowanie nie tylko w procesach akceptacji. Stwarza również możliwości wdrożenia w organizacji innych aplikacji, automatyzacji, AI, chatbotów i wiele innych.
Fundamentem dla każdej aplikacji są dane i wybór sposobu w jaki będą magazynowane. Z uwagi na ograniczenia licencyjne wybór padł na listy programu SP (SharePoint). Dla bardziej rozbudowanych procesów, wymagających ścisłej kontroli danych polecany jest Dataverse. Centralnym elementem rozwiązania jest aplikacji Power Apps, która pełni funkcje łącznika pomiędzy danymi i użytkownikami. Jest graficzną reprezentacją danych i logiki biznesowej. Z uwagi na pełną dowolność w customizacji interface’u użytkownika wybrana została aplikacja typu Canvas. Jest to typ aplikacji, której tworzenie polega na nanoszeniu obiektów (graficznych elementów aplikacji) na pusty szablon (Canvas) za pomocą tzw. „Drag&Drop expirience”.
Dzięki temu możliwe było między innymi zbudowanie komponentu kalendarza widocznego na załączonym zrzucie ekranu.
Alternatywą w tym lub podobnych procesach jest aplikacja typu Model-Driven (aplikacja generowana na podstawie modelu danych), należy jednak pamiętać, że w takim wypadku jedynym możliwym magazynem danych jest Dataverse. W aplikacjach typu Canvas nie jesteśmy ograniczeni w wyborze źródła danych. Aplikacja została podzielona na 4 widoki, pomiędzy którymi można nawigować za pomocą górnego paska Menu
Dzięki pełnej integracji aplikacji typu Canvas z portalem AAD (Azure Active Directory zwiera listę wszystkich użytkowników organizacji) i innymi usługami Microsoft autoryzacja użytkowników przebiega w ten sam sposób jak logowanie do konta Microsoft lub poczty Outlook. Wbudowane funkcje języka Power Fx (składnia wyrażeń podobna do Excel, dedykowany rozwiązaniom Power Platform) pozwalają na napisanie prostych formuł, które zwracają dla przykładu dane zalogowanego użytkownika. Widać to zastosowanie w prawym górnym rogu ekranu, gdzie wyświetlane jest imię i nazwisko zalogowanego użytkownika. Cała aplikacja również działa w sposób dynamiczny w kontekście zalogowanego użytkownika. Na innych ekranach aplikacji zostały utworzone: lista wniosków urlopowych zalogowanego użytkownika, zbiorcze zestawienie wszystkich wniosków urlopowych użytkowników aplikacji oraz komponenty odpowiedzialne za ustawienia uprawnień użytkowników.
Lista wniosków urlopowych jest przedstawiana w formie kontrolki galerii. Jeden wpis zawiera podstawowe dane dotyczące urlopu. Tworzenie nowego wniosku dokonywane jest za pomocą formularza.
Funkcja „Patch” jest odpowiedzialna za dodanie nowych wpisów do listy wniosków urlopowych oraz listy pomocniczej będącej historią zmian. Po utworzeniu nowego wpisu na wspomnianej liście pomocniczej jest wysyłana wiadomość mailowa do przełożonego osoby składającej wniosek. Jest do tego wykorzystywany przepływ pracy programu Power Automate. Power Autmoate posiada wbudowane łączniki (connectory) do rozmaitych usług zarówno środowiska Microsoft jak i z poza niego. Łączniki są to połączenia do wybranych usług (SharePoint, Microsoft Teams, Outlook, Excel Online, Azure, Twitter … i wiele innych), za pomocą których można dokonywać operacji na danych pochodzących z tych usług.
Każdy przepływ chmurowy programu Power Automate można podzielić na 2 sekcję:
- Wyzwalacz (trigger) – jest to pojedynczy kafelek określający kryteria, okoliczności, w których kolejne akcje przepływu powinny zostać uruchomione.
- Akcje – w tej sekcji twórca przepływu określa jakie zadania, akcje mają zostać wykonane.
Wyzwalaczem w przepływie aplikacji do zarządzania wnioskami urlopowymi jest łącznik do list SP: „Po utworzeniu nowego wpisu na liście SP”. Przepływ sprawdza jaki jest typ akcji wykonanej przez użytkownika (przyciski do akceptacji i odrzucenia, opisane na dalszym etapie również dodają wpis wraz z opisem wykonanej akcji do pomocniczej listy – historia zmian):
- Dodanie nowego wniosku
- Akceptacja wniosku
- Odrzucenie wniosku
W usłudze Power Automate można dostosowywać kolejność wykonywanych akcji, ale jednocześnie można uruchamiać wiele akcji równocześnie – niezależnie. W tym przykładzie są wykorzystywane 3 równocześnie wyzwalane bloki warunkowe. Po spełnieniu warunku zostaną wyzwolone pozostałe akcje znajdujące się w danej ścieżce.
Następnie wysyłana jest wiadomość mailowa (łącznik Outlook) zawierająca link do aplikacji (każda aplikacja typu Canvas posiada swój unikatowy adres url) oraz podstawowe dane dotyczące wniosku urlopowego do przełożonego (w przypadku utworzenia nowego wniosku) lub osoby ubiegającej się o urlop (przy akceptacji lub odrzuceniu wniosku). Link zawarty w wiadomościach zawiera również parametry w adresie URL, które są odbierane przez aplikację w momencie jej uruchomienia przy użyciu funkcji „Param” . W zależności od wartości parametru użytkownik jest przekierowywany na odpowiedni ekran, drugi parametr przechowujący unikatowy identyfikator wniosku pozwala przekazać do aplikacji kontekst wniosku.
Użytkownik korzystający z linku z wiadomości mailowej jest przekierowywany na odpowiedni ekran ze szczegółami wybranego wniosku. Przełożony podejmuje decyzję wewnątrz aplikacji na dedykowanym ekranie służącym do podglądu listy wniosków oczekujących na akceptacje.
Po przyciskami „Reject” oraz Approve” kryją się linie kodu odpowiedzialne za aktualizacje wybranego wniosku urlopowego oraz za dodanie nowego wpisu na liście historii zmian. W kolumnie „Akcja” będzie znajdowała się wybrana przez przełożonego decyzja. Ponownie zostanie uruchomiony przepływ usługi Power Automate. Tym razem jednak zostanie wykonana inna ścieżka przepływu, odpowiedzialna za wysłanie maila do osoby ubiegającej się o urlop, wraz z informacją zwrotną od przełożonego, podstawowymi danymi wniosku oraz linkiem do aplikacji. Dla zatwierdzonego wniosku zostaje wysłana następująca wiadomość:
Po wejściu w „Link do aplikacji” osoba, której wniosek został zatwierdzony zostaje przekierowana na ekran potwierdzający zakończenie procesu akceptacji.
W tym miejscu warto dodać, że łączniki wykorzystywane w programie Power Automate są również dostępne z poziomu programu power Apps, co oznacza, że korzystając z dostępnych predefiniowanych funkcji wybranych łączników możemy wchodzić w interakcje z różnymi usługami i serwisami. W opisywanej przykładowej aplikacji zostało utworzone połącznie do usługi Microsoft Teams oraz Outlook. Dzięki temu na koniec procesu użytkownik może za pomocą jednego kliknięcia, na czas nieobecności ustawić swoje odpowiedzi automatyczne, status „Out of Office”, a także wydarzenie w kalendarzu prywatnym oraz grupowym. Dodatkowo zostaje utworzony wpis na kanale Teams. Decyzja wykonaniu tych operacji z poziomu aplikacji zamiast przy użyciu przepływu Power Autmate wynika z różnych kont nawiązujących połączenia w aplikacji i przepływie. W aplikacji każda operacja przy użyciu łączników zostanie wykonana z konta zalogowanego użytkownika. Przepływ natomiast został utworzony z konta technicznego i maile informujące uczestników procesu o podjętej decyzji/ zmianie statusu wniosku są wysyłane ze skrzynki nadawczej konta „Urlopy Microsft Team”. Operacja dodania wydarzenia do prywatnego kalendarza użytkownika musiała zaprogramowana tak, aby połączenie do łącznika było spersonalizowane.
Opisane wybrane narzędzia usługi Power Platform, czyli Power Apps i Power Automate doskonale nadają się do wdrożenia dowolnego procesu biznesowego w organizacji. Przedstawione rozwiązanie prezentuje jedynie niewielką część możliwości tych narzędzi. Warto zapoznać się tą technologią, ponieważ pozwala ona na szybkie tworzenie narzędzi dostosowanych do indywidualnych potrzeb organizacji, bez koniecznej znajomości dziedziny programowania.