Microsoft Flow — to narzędzie ułatwi automatyzację serwisów
Dla wielu osób automatyzacja różnych serwisów kojarzy się z ogromną ilością integracji do stworzenia, a co za tym idzie generowania setek, czy nawet tysięcy linijek kodu, który po napisaniu trzeba jeszcze utrzymywać. Pomijając czas stracony na poznanie API, które dane serwisy udostępniają, musimy jeszcze zadbać o to, żeby nasza integracja przebiegała sprawnie i reagowała na błędy. A może by tak zrzucić z siebie trochę odpowiedzialności?
Marcin Tyborowski. Programista .NET w Elastic Cloud Solutions. Student trzeciego roku informatyki na Politechnice Białostockiej, otwarty na nowe technologie, aktywny w społecznościach, przewodniczący koła .NET Politechniki Białostockiej, prywatnie zapalony skateboardowiec oraz fan dobrych książek i filmów.
Wraz ze wzrostem popularności automatyzacji procesów zaczęły powstawać prototypy narzędzi z przyjaznym dla użytkownika interfejsem, który może być obsługiwany bez umiejętności deweloperskich. W kwietniu 2016 Microsoft wypuścił public preview Microsoft Flow, jako element PowerApps, który jeszcze wtedy zawierał niewielką część funkcjonalności w porównaniu do dnia dzisiejszego. Niewiele później, a dokładniej w maju Microsoft udostępnił to narzędzie na platformie Microsoft Azure pod nazwą Logic Apps, które działa dokładnie tak samo jak MSFlow z tą różnicą, że Logic Apps jest częścią platformy Microsoft Azure. Natomiast MS Flow jest udostępnione jako oddzielna usługa. Usługi te różnią się planem rozliczeniowym oraz serwisami, które wspierają.
Spis treści
Po co w ogóle nam automatyzacja?
Zadaję to pytanie w czasach, gdzie przeciętny użytkownik internetu korzysta z 10 aplikacji dziennie i 30 miesięcznie, gdzie jest to około połowa wszystkich aplikacji, które dana osoba posiada na smartfonie. Takie dane udostępnia nam firma App Annie w raporcie zatytułowanym „Spotlight on Consumer App Usage„.
Codziennie nasze aplikacje zabierają nam 2-3 godziny z życia, według statystyk firmy Flurry — to dwa razy więcej niż w 2013 roku.
Wykres przedstawiający średni czas w ciągu 1 dnia, który spędzają użytkownicy telefonów z systemem Android. Źródło: appannie.com
Aplikacji jest coraz więcej, a czasu coraz mniej, jest to maszyna nie do zatrzymania. Istnieje wiele sposobów na redukowanie czasu, który spędzamy przed ekranami smartfonów. Od razu wykluczam tutaj przestanie korzystania z telefonów czy ulubionych aplikacji. Wśród naszych działań w internecie istnieją czynności, które mogą zostać zautomatyzowane dzięki dostępnym już rozwiązaniom, wśród których znajduje się właśnie Microsoft Flow. (Pod koniec artykułu znajdziecie krótkie zestawienie Microsoft Flow na tle innych narzędzi do automatyzacji procesów.)
Redukcja czasu poświęcanego to tylko jeden z wielu przykładów, gdzie Microsoft Flow przychodzi nam z pomocą. Innym obszarem są po prostu integracje pomiędzy serwisami na potrzeby naszych projektów (mówiąc naszych mam na myśli programistów). Jeszcze innym przykładem jest zbieranie danych na podstawie wytycznych z różnych serwisów społecznościowych.
Scenariuszy do użycia Microsoft Flow jest naprawdę wiele, aby przejrzeć najpopularniejsze rozwiązania warto zajrzeć na stronę Flow i sprawdzić kategorie gotowych do użycia szablonów.
Źródło: flow.microsoft.com
Czym jest Microsoft Flow?
Najprościej mówiąc jest to narzędzie do automatyzacji procesów poprzez przesyłanie informacji pomiędzy aplikacjami. Wszystko odbywa się poprzez tzw. przepływy, które są głównym elementem tego narzędzia. To właśnie tworząc przepływy budujemy naszą sieć połączeń, nad którą sprawujemy pieczę. Pozwala nam w łatwy sposób zintegrować nasze ulubione aplikacje, aby mogły one wykonywać zadania zależnie od siebie.
Microsoft Flow jest częścią platformy Business Application Platform, w której skład wchodzą Power Apps oraz Power BI. Usługa ta jest również dostępna pod nazwą Logic Apps na platformie Microsoft Azure. Rozwiązanie, którego użyjemy jest zależne od naszych potrzeb i przed wyborem dobrze jest się chwile nad tym zastanowić.
Flow jest przeznaczone dla osób nietechnicznych do tworzenia prostych integracji np. synchronizacji dokumentów w różnych serwisach na potrzeby pracowników biurowych. Z drugiej strony Logic Apps pozwala na stworzenie bardziej zaawansowanych integracji, które powinny być tworzone przez programistów. Microsoft w oficjalnej dokumentacji jasno przedstawił zestawienie różnic pomiędzy tymi usługami.
Źródło: docs.microsoft.com
Jak działają przepływy?
Przepływ to nic innego jak ciąg akcji, które wykonują się jedna po drugiej, po wywołaniu określonego wyzwalacza. Przepływ można łatwo porównać do schematów blokowych, które są używane do przedstawienia kolejnych czynności algorytmu, z tą różnicą, że w przepływach nie możemy się cofać.
Takie ciągi składają się z 3 podstawowych elementów.
1. Connectors
Po polsku można je nazywać łącznikami, to nic innego jak aplikacja, z którą nawiązujemy połączenie poprzez zalogowanie się naszym kontem z danego serwisu. Na stronie MsFlow mamy dostępne zestawienie wszystkich serwisów, których liczba stale rośnie. Zapotrzebowania na dany serwis możemy zgłosić na stronie PowerUsers w sekcji Flow Ideas, gdzie użytkownicy wrzucają pomysły na nowe integracje do Microsoft Flow. Zgłoszenia najlepiej oceniane przez użytkowników mają największe szanse na to, że zostaną wkrótce dodane przez Microsoft.
Źródło: flow.microsoft.com
2. Triggers
Są to wyzwalacze, które uruchamiają nasz przepływ. W przepływie jest tylko jeden wyzwalacz, który zawsze znajduje się na samej górze. Jeden serwis udostępnia średnio od kilku do kilkudziesięciu wyzwalaczy. Lista wyzwalaczy jest naprawdę spora, zaczynając od czynności na portalach społecznościowych, przez timery, zmiany w bazie danych, aż po akcje w systemie plików naszego komputera lub maszyny wirtualnej.
3. Actions
Akcje to czynności, z których budujemy pewien schemat bloków, gdzie krok po kroku wykonywane są operacje. Weźmy na przykład sytuację, w której chcemy, aby wszystko co zostanie udostępniane na naszej tablicy na Facebooku zostało zapisane do Sharepointa, ponadto chcemy zostać poinformowani o takiej sytuacji mailem i smsem, wraz z linkami do pliku w Sharepoint oraz linkiem do posta.
Odbiorców maila i smsa ustawiamy w ustawieniach poszczególnych akcji, natomiast w bloku SharePointa definiujemy miejsce oraz sposób w jaki będziemy składować dane. Jak widać blok z akcją wysłania maila ma dostęp do danych z poprzednich akcji lub wyzwalaczy. Dane w przepływach działają w taki sposób, że w danym bloku mamy dostęp do zmiennych, które generowane są na wyjściu wszystkich elementów wzwyż, czyli w naszym przypadku Sharepointa oraz Facebooka.
Workflow Definition Language
Każdy przepływ kryje pod sobą plik JSON. Osoby ze znajomością Azure Resource Manager nie będą miały większych problemów ze zrozumieniem „surowego” schematu przepływu. W ten temat nie będę się wgłębiał, ponieważ grzebanie w tych plikach to już wyższa szkoła jazdy, ale warto o tym wspomnieć dla zrozumienia całej idei Flow.
{ "$schema": "...", "contentVersion": "...", "parameters": { "logicAppName": {...}, "logicAppLocation": {...}, "facebook_Connection_Name": {...}, "gmail_Connection_Name": {...}, "sharepointonline_Connection_Name": {...} }, "resources": [ { "properties": { "definition": { "triggers": { "When_there_is_a_new_post_on_my_timeline": {...} } }, "actions": { "Send_email": {...}, "Create_file": {...} }, "outputs": {...} }, "parameters": { "$connections": { "value": { "facebook": {...}, "gmail": {...}, "sharepointonline": {...} } } }, "runtimeConfiguration": {...} }, "dependsOn": [...] } ] }
Przykład przepływu wyeksportowanego do pliku JSON.
Zarządzanie przepływami
W panelu strony Flow mamy dostęp do listy stworzonych przez nas przypływów, gdzie możemy nimi zarządzać. Microsoft Flow zapisuje historie uruchomień danego przepływu z podglądem poszczególnych kroków, analizując wykonanie przepływu w ten sposób łatwo jest znaleźć miejsce, gdzie powstał błąd. W poszczególnych elementach mamy podgląd do danych, jakie miały one na wejściu i wyjściu.
Dla kogo jest to narzędzie?
Microsoft Flow podobnie jak całe Business Application Platform zostało stworzone z myślą o użytkownikach, którzy nie posiadają zaawansowanej wiedzy technicznej, oczywiście tyczy się to wyłącznie prostych przepływów. W przypadku kiedy nasze przepływy robią się bardziej skomplikowane, a interfejs graficzny zaczyna nas ograniczać, tworzenie flow sprowadza się do pracy na JSON’ach, gdzie przeciętny zjadacz chleba nie powinien mieć dostępu.
Inne rozwiązania
Microsoft Flow nie jest jedynym rozwiązaniem tego typu, wyróżnia się jednak od reszty możliwością budowania bardziej skomplikowanych przepływów, dzięki wykorzystaniu warunków (if-else), instrukcji (apply-to-each oraz do-until) oraz możliwością tworzenia równoległych gałęzi w zależności od powodzenia akcji poprzedzającej.
Patrząc na rynek narzędzi do automatyzacji, możemy wyłonić dwie najczęściej pojawiające się pozycje, jest to IFTTT oraz Zapier. To, które narzędzie wybierzemy zależy tak naprawdę od naszych potrzeb. Moim zdaniem wskazane jest używanie tych rozwiązań zamiennie w zależności od dostępnych połączeń czy akcji, które chcemy wykonać.
IFTTT — if this then that, jest dosyć popularną usługą ze względu na swoją prostotę, oraz przyjazny użytkownikowi interfejs. Działanie IFTTT jest analogiczne do Microsoft Flow z tą różnicą, że wraz z prostotą idą ograniczone możliwości konfigurowania szczególnych przypadków dla procesu automatyzacji.
Alternatywa dla MSFlow oraz IFTTT jest Zapier, który jest często wybierany ze względu na wsparcie niszowych konektorów oraz rozbudowane możliwości konfigurowania. Żadna z tych usług nie obejdzie się bez wad, a w Zapierze jedną z największych jest mała liczba konektorów oraz ograniczone możliwości konfiguracyjne.
Każde z tych narzędzi stosuje swoje nazewnictwo, Microsoft daje nam przepływy (flows), IFTTT aplety (aplets) oraz Zapier — zapy. Mimo nazewnictwa oraz różnych konektorów wspieranych przez poszczególne rozwiązania, każde z nich opiera się na tym samym mechanizmie — Webhooks.
Webhooks
Coraz więcej aplikacji i serwisów internetowych udostępnia swoim użytkownikom webhooki. Jest to metoda komunikacji pomiędzy aplikacjami, działającą na zasadzie wysłania zapytania pod ustalony wcześniej adres URL. Zapytanie wysyłane jest bezpośrednio po wykonaniu jakiegoś zdarzenia w systemie, np. rejestracja, złożenie zamówienia, otrzymanie wiadomości itd. Webhooki są często określane mianem Reverse API, ponieważ nie wymagają reakcji od strony klienta.
Webhooki są ostatnią deską ratunku w przypadku, gdy we Flow nie znajdziemy potrzebnych nam konektorów lub wyzwalaczy. Microsoft Flow pozwala na ustawienie nasłuchiwania na określonym adresie URL, gdzie przychodzące zapytanie uruchomi nasz przepływ. Gdy ustawimy nasz HTTP listener otrzymamy wygenerowany adres, który należy wpisać podczas definiowania webhooka. Webhooki w zapytaniu mogą przesyłać dane dotyczące zdarzenia, które je wywołało. Teraz podczas wykonania określonej akcji, wysłane zostanie zapytanie, które uruchomi nasz przepływ.
Przykład odebrania requestu HTTP w Microsoft Flow.
W tym przepływie po otrzymaniu zapytania dodawany jest tweet. W HTTP listenerze możemy określić schemat danych w formacie JSON, które otrzymamy w zapytaniu. Pozwala to nam korzystać z tych danych w następnych krokach przepływu. Format danych zazwyczaj jest opisany na stronie, gdzie definiujemy webhooki.
Podsumowanie
Microsoft Flow posiada wiele zastosowań w automatyzacji procesów w firmie, jak i w życiu prywatnym. Na tle innych rozwiązań Microsoft Flow wypada najlepiej, jednak nie jest kompletnie pozbawiony wad. Osobiście używam różnych narzędzi zamiennie w zależności od aktualnych potrzeb czy serwisów, które te narzędzia wspierają. Flow jest rozwiązaniem na wiele problemów i rozwiązuje naprawdę dużo scenariuszy, zwalnia nas też z pisania i utrzymywania kodu. Używając Flow zrzucamy odpowiedzialność za niezawodność naszej integracji na dostawcę usługi, czyli w tym przypadku Microsoft. Dodam od razu, że SLA nie jest dostępne w darmowym planie Microsoft Flow. Jeżeli nasze wymagania idą w stronę integracji na potrzeby projektu lub korzystamy z Microsoft Azure, to bez zastanowienia powinniśmy wybrać Logic Apps.