Obsługa błędów
Zostało wyróżnionych kilka rodzajów sytuacji nieprawidłowych – planowane i nieplanowane.
Błędy planowane to:
- błędy odwzorowania wartości, powodujące odrzucanie rekordów (ustawienie SKIP w parserach czy słownikach, złamanie wymagalności pól i rekordów itp.),
- błędy odwzorowania wartości powodujące zatrzymanie pakietu (ustawienie ERROR w parserach czy słownikach),
- reguły krytyczne walidacji rekordów – fragmenty kodu sprawdzającego zajście pewnych warunków zdefiniowanych przez twórcę pakietu.
Błędy nieplanowane to głównie wyjątki – krytyczne sytuacje nieprawidłowe wykryte w trakcie działania pakietu, na które pakiet nie był zaprojektowany. Obejmują one zarówno błędy komponentów zewnętrznych używanych w pakietach (np. błędy usług, kodu zewnętrznego, łączności z bazami danych, uprawnień do katalogów i plików, ilości miejsca na dyskach itp.), jak i błędy samej platformy archITekt.
Każda sytuacja błędna występuje w kontekście przetwarzania danego bloczka. Powoduje ona zgłoszenie błędu, które podlega wypisaniu do logu (co tysięczny element danej klasy) oraz opracowaniu statystycznemu (zliczanie ilości w klasach).
- Z informacją o błędzie powiązany jest rekord danych, który był przetwarzany przez bloczek w momencie wystąpienia błędu. Pełna treść rekordu jest dostępna w logu błędu (co tysięczny na podstawowym poziomie logowania).
- Informacja o błędzie jest podłączana do tego rekordu danych – służą do tego techniczne pola Level oraz rekord wielokrotny Errors, występujące w każdym rekordzie.
- Aby włączyć widoczność rekordu Errors wybierz na schemacie danych opcję Pokaż pola techniczne.

Nie każda informacja o błędzie ma skojarzony rekord danych. W przypadku przetwarzania danych paczkami zawierającymi więcej elementów (np. szybkie metody zapisu danych) mogą powstawać błędy bez konkretnych rekordów. Wówczas licznik błędów na porcie błędów wskaże błąd, ale nie zostanie wygenerowany rekord. Błąd taki będzie ujęty w statystyce błędów (klasy, źródła).
Przykładowo jeśli próbujemy zapisać do bazy danych metodą szybką (pracującą w paczkach po 1000 elementów) około 1500 rekordów, a pierwszy i ostatni rekord paczki powoduje błąd zapisu i wycofanie paczki, zostaną wygenerowane 2 błędy (po jednym dla paczki) nieskojarzone z żadnym rekordem danych, a żadne dane nie trafią do bazy.
- Rekordy danych powodujące błędy wraz z informacją dotyczącą samego błędu są przekazywane na port błędów bloczka (port czerwony).
- Aby zapobiec konieczności podłączania portów błędów dla wszystkich bloczków, w celu ich późniejszej obsługi, został zdefiniowany specjalny bloczek o nazwie Zbieracz błędów, który zbiera z całej fazy przetwarzania wszystkie rekordy błędów (albo z portów pozostawionych niepodłączonych, albo wszystkich). Na wyjściu takiego bloczka jest dostępny schemat danych powstały przez nałożenie schematów wszystkich rekordów wejściowych i wyjściowych bloczków danej fazy. Jest to wystarczające w typowym sposobie obsługi polegającym na zalogowaniu pełnej treści wszystkich rekordów błędnych do np. pliku XML (z włączonym zapisem pól technicznych: Level oraz rekordu Errors).
- W ramach obsługi błędów można podłączyć dowolne komponenty powodujące np. klasyfikację błędów czy ich zapis do innych miejsc docelowych, np. do bazy danych.

Rysunek przedstawia typowy, prosty schemat obsługi błędnych rekordów – zebranie ich i zapis do pliku XML. Należy pamiętać, że podgraf zajmujący się zbieraniem błędów również potrzebuje ustawienia wątku roboczego.
Watchdog
Pakiety przetwarzania w specyficznych okolicznościach mogą ulec zablokowaniu na różnych długotrwałych timeoutach (głównie do usług lub baz danych). Wówczas system wygląda, jakby się zawiesił choć w środku działa zgodnie z tym, co sobie założył autor pakietu.
- Aby pomóc w diagnozie tego typu sytuacji można na pakietach włączyć funkcjonalność watchdoga - strażnika, który po skonfigurowanym czasie bezczynności zaloguje swój stan w postaci nadającej się do analizy graficznej wraz z informacją o stosach wszystkich wątków roboczych. Dodatkową opcją jest możliwość przerywania pracy zablokowanych pakietów.
