Strony błędów możemy podzielić na błędy biznesowe i błędy platformowe.
Błędy platformowe
Błędy platformowe to są błędy które pojawiają się w momencie kiedy na wniosku pojawi się błąd który jest domyślnie obsłużony w platformie np. błąd wygaśnięcia sesji.
W powyższej sytuacji wyświetlana jest strona błędu zawierająca textContent ustawiony w konfiguracji platformy errorPagesConfiguration
Konfiguracja ustawiana jest odgórnie w platformie. Nie mamy możliwości aktualizowania jej low codowo w designerze. W przypadku potrzeby zmian należy kontaktować się z administratorami.
Błąd biznesowy to sytuacja, w której działanie użytkownika, proces systemowy lub interakcja z zewnętrznym systemem narusza przyjęte reguły biznesowe - mimo, że z technicznego punktu widzenia operacja mogłaby zostać wykonana.
Przykłady:
Próba wypłaty kwoty przekraczającej dostępne środki.
Złożenie wniosku przy nieaktywnym koncie klienta.
Wejście na wniosek jako użytkownik niezalogowany, mimo że wymagane jest zalogowanie
Jak wywołać?
Błąd biznesowy można wywołać w serwisach skryptowych oraz walidatorach skryptowych. Najlepiej użyć do tego metody throwBusinessException i getErrorPageDefinitionBuilder.
Metody, które można wywołać w obiekcie context:
W obiekcie context nie należy wywoływać metody build()
Dobrą praktyką jest używanie metody .msg przy wywołaniu błędu biznesowego. Należy przekazywać w niej czytelny komunikat biznesowy - np. .msg("Wniosek niedostępny"). Zdefiniowany komunikat zostanie wypisany w logach, co ułatwia analizę i identyfikację błędów.
function callService(context) {
let option = context.getFirstParameter('option');
if (!option) {
return []
}
let builder = context.getErrorPageDefinitionBuilder() // Metoda przygotowuje ekran błędu, który ma być wyświetlony
switch (option) {
case "1": // Ekran błędu, który pokazuje artefakt Treści 'error_page_default'
builder.bodyTextContent("error_page_default-*")
builder.msg("Wniosek niedostępny") // Komunikat błędu, który zostanie wypisany w logach
break;
case "2": // Ekran błędu dodany za pomocą treści podanej w body
builder.body("Domyślne body w obiekcie")
builder.parameter("type", "info")
builder.msg("Wniosek niedostępny")
break;
case "3": // Ekran błędu, który pokazuje artefakt Treści 'error_page_noAuthorization'
builder.bodyTextContent("error_page_noAuthorization-*")
builder.pageTitle("Tytuł strony")
builder.logobarTitle("Logo tytuł")
builder.retryButtonAvailable(true);
builder.msg("Wniosek niedostępny")
break;
default: // Domyślny ekran błędu wyświetlony w wyniku błędu w skrypcie
throw "Script exception"
}
context.throwBusinessException(builder); // Rzucenie ekranu błędu z przygotowanym obiektem builder
return [{ 'output': '' }];
}