
Obsługa błędów podczas przetwarzania grupowego elementów
Jakiś czas temu klient zgłosił zapotrzebowanie na rozwiązanie umożliwiające częste tworzenie kopii zapasowych kluczowych danych transakcyjnych w systemie…
Opis wyzwania
Jakiś czas temu klient zgłosił zapotrzebowanie na rozwiązanie umożliwiające częste tworzenie kopii zapasowych kluczowych danych transakcyjnych w systemie SAP jako dodatkowy środek bezpieczeństwa. Pomysł był prosty – co kilka godzin bot miał uruchamiać określone transakcje w SAP, eksportować dane do określonego formatu i przechowywać je w zabezpieczonej lokalizacji na SharePoint, gdzie pliki byłyby wersjonowane i stanowiły część dalszego procesu tworzenia kopii zapasowych za pomocą dedykowanego narzędzia.
Rozwiązanie
Na pierwszy rzut oka proces wydaje się prosty, co przedstawia poniższy uproszczony diagram BPMN:
Oczywiście każda z powyższych operacji może zakończyć się niepowodzeniem, a wyjątki powinny być obsłużone. Zatem dodajmy obsługę wyjątków:
Voilà! Teraz, jeśli podczas wykonywania procesu wystąpi błąd, nasz bot przechwyci szczegóły, wykona zrzuty ekranu i zamknie SAP przed zgłoszeniem wyjątku do głównego przepływu. Zanim jednak popadniemy w euforię i wdrożymy nasze rozwiązanie z entuzjazmem, weźmy głęboki oddech i wróćmy do początku. Jaki jest cel tego procesu? Celem jest tworzenie kopii zapasowych danych. A co się stanie, jeśli przetwarzanie jednej z transakcji zakończy się błędem? Pozostałe transakcje zostaną pominięte do następnego uruchomienia, ponieważ każdy błąd w grupowym przetwarzaniu powoduje przejście do bloku obsługi wyjątków, który kończy cały proces. Możemy wyobrazić sobie scenariusz, w którym jedna z transakcji generuje zbyt dużą ilość danych pod zadanymi ustawieniami i nieustannie kończy się błędem, skutecznie uniemożliwiając tworzenie kopii zapasowych pozostałych transakcji. Jak można temu zaradzić?
Po pierwsze, kluczowe jest, aby wszystkie transakcje były archiwizowane – jeśli nie jest to możliwe, bot powinien pomijać te, które powodują błędy, i kontynuować przetwarzanie pozostałych. Po drugie, w przypadku wystąpienia błędu, zespół odpowiedzialny za reakcję powinien otrzymać informację, które kopie zapasowe nie zostały utworzone. Uwzględniając powyższe warunki, możemy dodać dodatkowy blok obsługi wyjątków, który działa wewnątrz procesu grupowego, zatrzymując jedynie przetwarzanie uszkodzonej kopii zapasowej:
Dzięki temu bot obsługuje każde zadanie indywidualnie, nie przerywając całego przepływu. Z drugiej strony, krytyczne błędy – takie jak te występujące podczas logowania do SAP lub jego restartowania – są obsługiwane przez „zewnętrzny” blok obsługi wyjątków, który zatrzymuje dalsze przetwarzanie przepływu.

