Odcinek 8. Edward w obłokach – NetSuite jako przykład automatyzacji cloudowych systemów ERP

Dziś chciałbym wraz z Przemkiem opowiedzieć Wam o automatyzacji systemów ERP innych niż JD Edwards czy SAP, bo opartych na rozwiązaniach chmurowych. Jednym z takich systemów jest NetSuite czyli prawdopodobnie najlepszy cloudowy system do zarządzania produkcją. Jako ciekawostkę powiem Wam, że artykuł na temat NS bardzo długo „dojrzewał”. I w sumie, kiedy już powstał, to sam nie wiem dlaczego, tyle czasu nad nim pracowaliśmy z Przemkiem. Przecież ten temat jest taki niesamowity.

Okiem Eksperta:

NetSuite od firmy Oracle jest kompletnym, w pełni skalowalnym rozwiązaniem, zaprojektowanym dla szybko rozwijających się przedsiębiorstw. Jest to jeden z produktów błyskawicznie zwiększających swoje udziały na rynku chmurowych systemów ERP. Rozwiązanie wykorzystuje chmurę do przechowywania danych, w związku z czym jego automatyzacja przebiega nieco inaczej. O różnicach opowiem na przykładzie zrealizowanego dla jednego z naszych klientów procesu: aktualizacja wersji zestawień materiałowych (BOM).

Na wstępie dodam, że pojawiły się już dedykowane rozwiązania w UiPath pozwalające na automatyzację z poziomu backend`u, ale… nie u każdego są one możliwe do zrealizowania ze względów konfiguracyjnych bądź dostępowych. W naszym przypadku rozwiązanie nie umożliwiło zmian w całym NS, a jedynie w części aplikacji. W związku z tym zdecydowaliśmy się na klasyczną automatyzację interfejsu użytkownika.

Pierwszą z różnic pomiędzy klasycznym ERP a NS jest brak bazy danych, co uniemożliwia wyciąganie potrzebnych informacji takich jak np. lista zadań (Work Order) czy komponenty w rewizji (BOM Revision) z poziomu SQL. Aby rozwiązać ten problem wykorzystaliśmy Web Scraping – bezpośredni odczyt danych z ekranu. Następnie przy mechanizmie przechodzenia do kolejnego Work Orderu (kolejnej „transakcji”) – w cloudowym ERP nie można wpisać np. numeru WO w aplikacji, tylko trzeba przejść do WO za pomocą unikalnego linku. To samo dotyczy innych zakładek/aplikacji. Wykorzystując pole Internal ID (domyślnie ukryte, ale opcjonalne pole w NS) oraz stałą część adresu udało nam się stworzyć mechanizm, który pozwala poruszać się po systemie NetSuite bez uciążliwego i długiego klikania po ekranie – czyli bezpośrednią nawigację.

Jedną z ostatnich rozbieżności były selektory. O ile w klasycznych ERP dane pole posiada jeden stały selektor, to w NetSuite napotkaliśmy przypadki, w których pole miało dwa (a czasem nawet trzy) różne selektory, w zależności od tego czy było aktywne (kliknięte) czy nie. Dodatkowo, urokiem aplikacji webowej jest to, że czasem mimo iż jakiegoś wewnętrznego okna/przycisku nie widać na ekranie (wyłączony parametr visible/active na stronie) to de facto dla robota, który szuka selektora jest to widoczne.

Finalny problem z jakim się spotkaliśmy związany był z jednoznacznym wybieraniem nazwy komponentu (produktu), jeśli na liście wartości dla pola znajdowało się kilka pozycji zaczynających się od tych samych znaków. Wynikało to stricte ze specyfiki NS i jego sposobu wyświetlania list. Pomimo początkowych trudności, udało nam się opracować mechanizm sprawdzenia, czy wybór jest niejednoznaczny i w takim przypadku wykorzystaliśmy poszerzone wyszukiwanie z możliwością ustawienia szukania konkretnego tekstu. Spytacie czy nie lepiej było go użyć od początku? Odpowiedź brzmi nie – to wyszukiwanie wymaga otwarcia nowego okna, zaznaczenia kilku pól i poczekania na wynik, co przekłada się na kilka (naście) sekund więcej dla procesowania pojedynczego komponentu (produktu). Wydaje się niedużo, aczkolwiek w kontekście całego procesu wydłużyłoby go znacząco.

Podsumowując, automatyzacja systemów ERP opartych na chmurze ma swoje plusy i minusy. Na pewno w niektórych przypadkach będzie szybsza od automatyzowania tradycyjnych systemów ERP, aczkolwiek wymaga ona znalezienia odpowiednich rozwiązań.

Autor: Przemysław Wal – RPA Developer

Foto: iStock