Versions Compared

Key

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

...

  1. Adnotację 
    Javadoc
    displayValue@Actions@Validator
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.actionvalidator.annotation.ActionsValidator
     (jeżeli akcja nie jest definiowana we wtyczce, musi ona pochodzić z pakietu com.suncode)
  2. Adnotację 
    Javadoc
    displayValue@ActionsScript
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.action.annotation.ActionsScript
    przekazującą ścieżkę do skryptu (z classpath) zawierającego implementację w języku JavaScript lub ścieżkę wraz z fragmentami, w których skrypt zostanie umieszczony (np. w przypadku umieszczenia akcji w historii procesów). W pierwszym przypadku podajemy tylko ścieżkę, w drugim ścieżka ląduje w parametrze value, zaś fragmenty w obiekcie fragments. Dostępne wartości dla fragmentów można znaleźć w klasie
    Javadoc
    displayValueActionUIFragment
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.action.ActionUIFragment
    .
  3. Publiczną metodę oznaczoną adnotacją 
    Javadoc
    displayValue@Define
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.component.annotation.Define
     z jednym parametrem
    Javadoc
    propertyjavadoc.plusworkflow
    classNamecom.suncode.pwfl.workflow.form.actionvalidator.ActionDefinitionBuilder
    (w jednej klasie @Actions może być zdefiniowanych wiele różnych akcji)

Akcja może również dostarczać skrypt, który buduje wygląd parametrów podczas jej definiowania w PWE. W tym celu należy dodać kolejną adnotację dla klasy 

Javadoc
displayValue@ActionsFormScript
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.workflow.form.action.annotation.ActionsFormScript
 z przekazaną  ścieżką do skryptu (z classpath).

  1. ValidatorDefinitionBuilder

Przykładowa definicja przedstawiona jest poniżej:

Code Block
languagejava
linenumberstrue
@Actions
@ActionsScript( "actions/example.js" )
@ActionsFormScript( "actions/example-form.js" )
@Validator
public class ExampleActionsPeselValidator
{
	@Define    private publicfinal void action( ActionDefinitionBuilder action )String PESEL_REGEX = "^\\d{11}$";
    
{ 		action   @Define
    public void definition( ValidatorDefinitionBuilder  .id( "hide-variables" builder )
    {
       .name( "action.hide-variables.name" ) builder
             .descriptionid( "action.hide-variables.descpesel-validator" )
            .iconname( SilkIconPack"validator.EYEpesel" )
            .categorydescription( Categories.TEST"validator.pesel.desc" )
            .destinationcategory( ActionDestinationCategories.button()TEST )
            .parameter()
                .id( "variablespesel_param" )
                .name( "actionvalidator.hide-variablespesel.variablesparameter.name" )
                .description( "actionvalidator.hide-variablespesel.variablesparameter.desc" )
                .type( Types.VARIABLE_ARRAY )
                .create();
	} }

Przykładowa definicja dla akcji umieszczonej zarówno na formularzu, jak i w historii:

Code Block
@Actions
@ActionsScript(    }
 
    //Metoda walidująca
    public void validate( @Param( value = "actions/example.js", fragments = { ActionUIFragment.FORM, ActionUIFragment.HISTORY } )
public class ExampleActions

Elementy docelowe (destination)

Elementy docelowe wskazywane są na etapie tworzenia definicji akcji w metodzie destination(). Określają one, do jakich elementów formularza może być dodana akcja:

ElementOpisPrzykłady akcjiWybór w PWE
ActionDestination.form()

Formularz

Akcja dodana do formularza inicjowana jest metodą formInit.

Akcje w których nie można wskazać głównego elementu np.

  • ukrywanie wielu zmiennych jednocześnie
Image Removed
ActionDestination.variable()

Zmienna

Akcja dodana do zmiennej formularza inicjowana jest metodą variableInit w parametrze otrzymując obiekt tej zmiennej (

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.form.variable.Variable
).

Akcje w których można jednoznacznie wskazać zmienną, której akcje dotyczy (w największym stopniu) np.

  • ukrywanie zmiennej
  • walidacja zmiennej na żywo (np. pokazanie komunikatu bez akceptacji)
Image Removed
ActionDestination.variableSet()

Tabelka dynamiczna

Akcja dodana do zmiennej formularza inicjowana jest metodą variableSetInit w parametrze otrzymując obiekt tabelki dynamicznej (

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.form.field.VariableSet
).

Akcje które dotyczą tabelki dynamicznej i potrzebują jej identyfikator np.

  • nadanie tytułu tabelce na podstawie obliczeń
  • import danych do tabelki (akcja dodaje przycisk do tabelki)
Image Removed
ActionDestination.button()

Przycisk

Akcja dodana do przycisku formularza inicjowana jest metodą buttonInit w parametrze otrzymując obiekt przycisku (

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.form.button.Button
).

Akcje których źródłem jest przycisk np.

  • dodawanie komentarza przed akceptacją
  • wyświetlanie komunikatów po kliknięciu przycisku
Image Removed

Przypisanie elementu docelowego do parametru (bindTo)

Wybrany element docelowy akcji może zostać przekazany do parametru akcji poprzez podanie w parametrze bindTo identyfikatora parametru docelowego. Np. 

Code Block
languagejava
ActionDestination.variable( "text" );  // 'text' to identyfikator parametru akcji

Z tak skonfigurowaną akcją, jeżeli dodamy ją do dowolnej zmiennej, zmienna to zostanie automatycznie ustawiona jako wartość parametru. W zależności od elementu docelowego w parametr wpisane zostaną:

Element docelowyPrzypisana wartość
Zmienna
Zmienna
Tabelka dynamiczna
Identyfikator tabelki dynamicznej
Przycisk
Identyfikator przycisku (nazwa akcji)
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 akcji

Zdefiniowana na serwerze akcja formularza musi zostać zarejestrowana i zaimplementowana po stronie przeglądarki. Rejestrację umożliwia klasa 

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.form.action.Actions
 za pomocą metody 
Jsdoc
displayValuecreate
propertyjsdoc.plusworkflow
classNamePW.form.action.Actions.html#method_create
. Pierwszym parametrem metody jest id akcji (id musi odpowiadać tej akcji, która została zdefiniowana na serwerze), drugim parametrem jest obiekt implementacji akcji:

...