API Walidatorów skryptowych

Przykładowy kod walidatora

Poniżej znajduje się przykładowy kod, który pokazuje w jaki sposób można korzystać z wejścia oraz jak należy zwrócić dane:

function callService(context) {
    let input1 = context.getFirstParameter("input1");
    if (input1 === "api") {
        return [{
                'key': 'pl.error',
                'parameters': [input1, "parametr {0} jest błędny"]
            }
            ];
    } else if (input1 != null && input1 !== "") {
        return [{
                'key': 'pl.error',
                'parameters': [input1, "inny hardcode parameter"]
            }];
    } else {
        return [];
    }
}

Wejście do walidatora skryptowego

Jako wejście (parametr context w powyższym kodzie) znajduje się obiekt, który udostępnia następujące metody:

  • List<String> getParameters(final String name) - pobiera konkretną listę z mapy danych wejściowych,

  • String getFirstParameter(final String name) - pobiera pierwszy element z konkretnej listy z mapy danych wejściowych lub zwraca wartość "null",

  • String getFirstParameter(final String name, final String defaultIfEmpty) - pobiera pierwszy element z konkretnej listy z mapy danych wejściowych, a jeśli go nie ma lub jest pusty to zwraca wartość "defaultIfEmpty",

  • Map<String, List<String>> getInputParameters() - zwraca całą mapę danych wejściowych, którą przechowuje,

  • String isVisible(final String id) - pobiera informację, czy komponent o wskazanym id jest widoczny,

  • String getValue(final String id) - pobiera wartość komponentu (również zmiennej sesyjnej) o wskazanym id,

  • String getData(final String id, final String attribute) - pobiera wartość konkretnego atrybutu dla komponentu o wskazanym id (UWAGA! Możliwe do pobrania atrybuty są zależne od komponentu),

  • List<Map<String, String>> callService(String name, Map<String, List<String>> input) - umożliwia wołanie ServiceProxy,

  • ValidatorOutput validate(String name, Map<String, List<String>> input) - umożliwia wołanie walidatora,

Przykład pobrania listy (np. dla pól w sekcji powtarzalnej):

function callService(context) {
    let inputFromRepeatableSection = context.getParameters("inputFromRepeatableSection").toArray();
}

Wyjście z walidatora

  1. Lista map: tablica obiektów zawierających pola "key" oraz "parameters".

  2. Opcjonalne pola:

    1. type - typ walidatora domyślnie ustawiony jest INLINE, inna opcja to POPUP,

    2. parameters - zmienne które możemy wysłać do komunikatu walidacyjnego skryptu

    3. attributes - np. atrybuty POPUPa dodający przycisk 'dalej' oraz zmieniający np. wartość komponentu po naciśnięciu 'dalej':

return [{
          'key': 'pl.errorPopup',
          'parameters': [input, 'Podana wartość jest błędna'],
          'type': 'POPUP',
          'attributes': {
              'componentUpdateId': componentID,
              'componentUpdateValue':'ziemniak'
          }
      }];

np. atrybuty dla walidacji wiersza GesTable:

Przykładowa walidacja typu INLINE - wiersze GesTable

return [{
          'key': 'pl.errorGesTable',
          'parameters': [input, 'Podana wartość jest błędna'],
          'type': 'INLINE',
          'attributes': {
              'colName': 'nazwaKolumny',
              'rowId':id
          }
      }];

Logowanie

Logowanie danych wejściowych jest automatyczne.

Logowanie ręczne powinno być zgodne z opisem w Logowanie w ScriptCode

Rzucanie wyjątków biznesowych

Istnieje możliwość rzucenia wyjątku biznesowego z poziomu skryptu. Przykładowy kod:

function callService(context) {
    let firstArgument = context.getFirstParameter('firstArgument');
    let builder =  context.getErrorPageDefinitionBuilder();  
    builder.bodyTextContent("textContentName-*"); // komponent Treść (TextContent) jako strona błędu
    builder.logobarTitleKey("form.title"); // Treść górnej belki (jeśli występuje)
    context.throwBusinessException(builder);
    ...
}

Możliwe metody, które można wywołać na obiekcie 'context':

context.getErrorPageDefinitionBuilder()
.body(string)
.styleName(string);
.msg(string)
.pageTitle(string)
.pageTitleKey(string)
.sidebarSlot2TextContent(string);
.sidebarSlot2(string);
.sidebarSlot1TextContent(string);
.sidebarSlot1(string);
.retryButtonAvailable(string)
.retryButtonAvailable(boolean);
.logobarTitle(string);
.logobarTitleKey(string)
.logobarDescription(string);
.bodyTextContent(string);
.parameter(String key, String value)
.cause(Throwable cause)
.redirectUrl(string)
.redirectDelayInMillis(string)
.businessFormIdentifier(string)

Przykłady walidatorów:

demoEmailWalidator, demoPESELWalidator, demoDowodWalidator, demoMinMaxWalidator

Last updated

Was this helpful?