Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
linenumberstrue
@Validator
public class PeselValidator
{
    private final String PESEL_REGEX = "^\\d{11}$";
    
    @Define
    public void definition( ValidatorDefinitionBuilder builder )
    {
        builder
            .id( "pesel-validator" )
            .name( "validator.pesel" )
            .description( "validator.pesel.desc" )
            .category( Categories.TEST )
            .parameter()
                .id( "pesel_param" )
                .name( "validator.pesel.parameter.name" )
                .description( "validator.pesel.parameter.desc" )
                .type( Types.VARIABLE)
                .create();
    }
 
    //Metoda walidująca
    public void validate( @Param( value = "pesel_param" ) Variable pesel, ValidationErrors errors,
                          Translator translator )
    {
        boolean isPesel = Pattern.matches( PESEL_REGEX, (String) pesel.getValue() );
        if ( isPesel == false )
        {
            errors.add( translator.getMessage( "validator.pesel.invalid" ), pesel.getId() );
        }
    }
}

Implementacja

...

funkcji walidującej

Zdefiniowana na serwerze akcja formularza musi zostać zarejestrowana i zaimplementowana po stronie przeglądarki. Rejestrację umożliwia klasa  JsdocpropertyjsdocWalidator musi posiadać metodę walidującą o nazwie validate. Metoda może posiadać następujące typy parametrów:

  • pojedynczy parametr walidatora - typ parametru musi być zgodny ze zdefiniowanym typem oraz musi być poprzedzony adnotacją 
    Javadoc
    displayValue@Param
    propertyjavadoc.plusworkflow
    className

...

  • com.

...

  • suncode.

...

  • pwfl.component.annotation.Param
    ,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.component.Parameters
     - zawiera wszystkie zdefiniowane parametry walidatora wraz z ich wartościami, jest to alternatywa dla pobierania parametru za pomocą wyżej wspomnianej adnotacji
    Javadoc
    displayValue@Param
    propertyjavadoc.plusworkflow
    className

...

languagejs
linenumberstrue

...

  • com.suncode.pwfl.component.annotation.Param
    ,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.validator.error.ValidationErrors
     - obiekt, w którym ustawiane są wszystkie błędy,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.validator.ValidationContext
     - kontekst walidacji, można z niego odczytać identyfikator procesu i zadania, których dotyczy ta walidacja,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.activity.ActivityContextMap
     - obiekt przechowujący zmienne formularza wraz z aktualnymi wartościami oraz identyfikator procesu i zadania; jest on w całości tylko do odczytu, nie ma możliwości zmiany wartości zmiennych,
  • Javadoc
    propertyjavadoc.plusworkflow
    className com.suncode.pwfl.workflow.component.ContextVariables
     - zmienne kontekstowe dostępne w tym walidatorze. Więcej informacji tutaj,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.translation.Translator
     - translator dla tego komponentu, dzięki któremu wiadomości zwracane przez walidator mogą być tłumaczone. Więcej informacji tutaj,
  • Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.administration.user.UserInfo
     - obiekt zawierający informacje na temat użytkownika akceptującego zadanie.

W celu przerwania akceptacji zadania i wyświetlenia stosownego komunikatu należy dodać wiadomość do obiektu 

Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.validator.error.ValidationErrors
. Jeżeli żadna wiadomośc nie zostanie dodana, to akceptacja zadania przejdzie do kolejnego etapu.

Rejestracja walidatora we wtyczce

Jeżeli walidator jest definiowany we wtyczce to należy dodatkowo zaznaczyć, że wtyczka ta udostępnia komponenty. W tym celu należy w pliku suncode-plugin.xml dodać wpis:

...