Robotic Process Automation w skrócie RPA

Marcin Kasiński
Robotic Process Automation oznacza z języka angielskiego Zrobotyzowaną Automatyzację Procesów. System ten pozwala na zautomatyzowanie powtarzalnych procesów, które cechuje niski stopień wyjątków w regule algorytmu. Ma na celu zastąpienie pracy rąk ludzkich systemem komputerowym, oczywiście w obszarze powtarzalnych czynnościach.
Zrobotyzowana automatyzacja procesow

Za pomocą RPA człowiek może zautomatyzować procesy, które:
– cechuje powtarzalność zachowań,
– nie zależą od subiektywnej oceny człowieka,
– opierają się na wielokrotnym, powtarzalnym powielaniu danych, ich przetwarzaniu i ich przesyłaniu,
– wymagają wkładu czasowego.

Zalety RPA:

- emulacja zachowania użytkowników w przeglądarce
- tworzenie procesu nie wymaga dużej wiedzy programistycznej
- zminimalizowanie kosztów zatrudnienia ludzi
- wyeliminowanie błędów
- może pracować 24 na dobę, siedem dni w tygodniu, także w nie handlowe niedziele i święta, gdyż nie jest objęty ochroną prawa pracy, nie potrzebuje przerw od pracy, nie męczy się, nie choruje, nie wyjeżdża na wczasy z rodziną.

Zautomatyzować można procesy, które są przetwarzane w organizacji lub w  konkretnym dziale:
- IT,
- zakupów i zamówień,
- rachunkowości i finansów,
- logistyce,
- marketingu,
- sprzedaży,
- kadrach,
- w dziale prawnym.

Zautomatyzowany system może dokonywać jakich czynności jak:
- wprowadzanie danych kontrahenta do systemu,
- wysyłanie poczty e-mail,
- skanowanie faktury do systemu.

- Symulacja zachowania użytkownika systemu
- Niewymagana znajomość programowania
- Mniejsza ilość czasu potrzebna do przygotowania procesu RPA
- Zarządzanie procesami RPA w przypadku zmiany w modułach aplikacji to edycja sekwencji w procesie

Wykorzystanie RPA w praktyce

Wyobraź sobie system obsługi zgłoszeń serwisowych. Mamy wersje starą, w której nie ma wielu funkcjonalności, które obecnie potrzebujemy. Wdrażamy więc nową wersję.
Bardzo chcemy w nowej wersji pracować na danych również ze starej wersji. Problem polega na tym, że stara wersja naszego systemu nie ma funkcjonalności eksportu danych.
Co zrobić w takiej sytuacji? W wersji ekstremalnej angażujemy osobę / osoby, które będą pracując na starym i nowym systemie ręcznie przenosić dane. Jest to zadanie możliwe do zrealizowania, ale biorąc pod uwagę skalę oraz możliwość popełnienia błędu, jest to rozwiązanie raczej nie rekomendowane.
W takiej sytuacji jedną z możliwych opcji jest wykorzystanie RPA, gdzie zaprogramujemy w łatwy sposób te ręczne kroki (wyciąganie w pętli danych ze starego systemu i zapisywanie ich w nowym systemie za pomocą formularza). Wszystko robimy dokładnie tak samo jakby robił to ktoś ręcznie, z tą różnicą, że te operacje mamy oprogramowane i wielokrotnie powtórzone.

Platforma robotyczna w swoim podstawowym zastosowaniu pozwala w łatwy sposób uruchamiać zadania związane z zasymulowaniem działania człowieka w przeglądarkach internetowych
Czasami  musimy zasilić system danymi z zewnątrz, a system ten nie ma możliwości importu danych lub format danych, jakie chcemy wprowadzić do systemu, zdecydowanie różni się od tego, jaki system oczekuje. Kiedy indziej mamy system, z którego chcemy wyeksportować dane , ale system ten nie ma funkcjonalności pozwalającej na taki export.
Jakie mamy wtedy możliwości? Możemy zaangażować osobę, która dane do systemu wprowadzi ręcznie lub w drugim przypadku ręcznie zbierze dane z systemu poprzez wyszukiwanie, filtrowanie  i umieszczenie ich w innym systemie.
W powyższych przypadkach mamy potencjalny problem z błędami jakie mogą się pojawiać. Drugi problem to czas. Zautomatyzowany proces jest zdecydowanie szybszy niż działanie ręczne.

Tu właśnie jest miejsce dla platformy robotycznej.
Platforma pozwala na uruchamianie z założoną z góry częstotliwością zaimplementowanych automatycznych procesów, śledzenie ich wykonania, odpowiednią obsługę ich ponawiania w przypadku awarii, zbieranie  logów w jednym miejscu oraz wizualizację stanu poszczególnych robotów. Platforma jest na tyle uniwersalna, że potrafi zarządzać każdym procesem o charakterze cyklicznym.

Opis techniczny  platformy do zrobotyzowanej automatyzacji procesów
Wszystkie komponenty platformy bazują na rozwiązaniach opensource. Posiadają one duże wsparcie społeczności i duża ilość dokumentacji i materiałów w Internecie. Oznacza to, że wdrażając rozwiązanie na tych produktach nie ma obaw, że nagle zostaniemy sami z problemem.

Sercem platformy jest Apache Airflow - silnik do zarządzania cyklicznymi operacjami, pozwalający na obsługę ponowień i SLA.
W łatwy sposób, za pomocą przyjaznego interfejsu użytkownika, można w nim mieć podgląd na istniejące procesy, ustalić miejsce gdzie nastąpił błąd oraz ewentualnie ponowić dany krok, jeśli jest taka potrzeba.

Uruchamiane w nim aplikacje / roboty to odpowiednio przygotowane kontenery docker, w których uruchamiany jest kod python wykorzystujący bibliotekę selenium do obsługi przeglądarki.

Celem ułatwienia szczegółowej analizy działania robotów wykorzystany jest stack EFK, ElasticSearch do przechowywania logów, FluentD do parsowania lokalnie plików logów i przesyłania ich do centralnego repozytorium oraz Kibana do wizualizacji i parsowania centralnych logów. Jeśli wizualizacja dostępna w głównym produkcie nam nie wystarcza, dodatkowo możemy zbierane metryki uruchamianych rozwiązań przeglądać w narzędziu Grafana.

Ze względu na uniwersalność należy zaznaczyć, że platforma nie ogranicza się tylko i wyłącznie do zadań robotycznych. Można na niej uruchamiać dowolne rozwiązanie będące jednorazowym zadaniem zamkniętym w obrazie docker.