Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 23 Next »

Możliwe jest dodanie do systemu akcji zmiennych formularza (AUTO_UPDATE), data chooser'ów (dynamiczne listy), zadań automatycznych, narzędzi systemowych, walidatorów przycisków akceptacji, klas ustawiających zmienne, które zostaną wykryte podczas uruchamiania modułu edytora procesów. Dodatkowo moduł próbuje zaczytać pliki js z biblioteki CUF, które definiują parametryzowane funkcje dla przycisków tabeli dynamicznej, przycisków akceptacji. Możliwe będzie ich wykorzystanie podczas definiowania poszczególnych komponentów. Konieczne wtedy będzie uzupełnienie tylko konkretnych wartości (najczęściej wybranie zmiennych procesu/formularza z listy).

 

1. Data chooser (dynamiczna lista):

Klasę będącą data chooser'em umieszczamy w classpath projektu. Oznaczamy ją adnotacją @StandardDataChooser:

Data chooser
@StandardDataChooser( conf = DataChooserExampleConf.class )
public class DataChooserExample
    implements DataChooser
{
...
}

Adnotacja ta posiada właściwość conf, która przechowuje informację o klasie opisującej definicję danego data chooser'a w zależności od wersji językowej (pochodzącej z java.util.Locale np. pl, en). Klasa ta musi implementować interface StandardDataChooserDef. Posiada on następujące metody:

  • getIds - identyfikator data chooser'a, musi być unikalny w ramach wszystkich definicji
  • getDef - zwraca definicję data chooser'a, czyli nazwę, opis, ścieżkę do klasy
  • getFormCriteria - zwraca kryteria formalne (zmienne przekazywane z formularza), zawiera także ich opisy w celu ułatwienia użytkownikowi wyboru odpowiednich zmiennych procesu
  • getMappings - zwraca mappingi data chooser'a (id w implementacji, mapowaną zmienną z formularza itd.), zawiera także ich opisy w celu ułatwienia użytkownikowi wyboru odpowiednich zmiennych procesu
  • getCustomKeys - zwraca klucze własne, zawiera także ich opisy w celu ułatwienia użytkownikowi podania właściwych wartości

 

 

2. Auto update (akcja zmiennej formularza):

Klasę będącą auto update'em umieszczamy w classpath projektu. Oznaczamy ją adnotacją @StandardAutoUpdate:

Data chooser
@StandardAutoUpdate( conf = AutoUpdateExampleConf.class )
public class AutoUpdateExample
    extends HttpServlet
{
...
}

Adnotacja ta posiada właściwość conf, która przechowuje informację o klasie opisującej definicję danego auto update'u w zależności od wersji językowej (pochodzącej z java.util.Locale np. pl, en). Klasa ta musi implementować interface StandardAutoUpdateDef. Posiada on następujące metody:

  • getId -  identyfikator auto update'u, musi być unikalny w ramach wszystkich definicji
  • getDef - zwraca definicję data chooser'a, czyli nazwę, opis, typ, ścieżkę do servletu
  • getDataSources - zwraca źródła danych (zmienne z formularza, których wartości są przekazywane jako parametry wywołania), zawiera także ich opisy w celu ułatwienia użytkownikowi wyboru odpowiednich zmiennych procesu
    getDestinations - zwraca zmienne docelowe (zmienne formularza, których wartości mają zostać ustawione na podstawie danych zwróconych przez servlet), zawiera także ich opisy w celu ułatwienia użytkownikowi wyboru odpowiednich zmiennych procesu

 

 

3. Narzędzia systemowe:

Klasę będącą narzędziem systemowym umieszczamy w classpath projektu. Pozwala dodać narzędzie systemowe w jednym kroku (dodaje aplikację na poziomie procesu i zadania). Wymagane jest tylko określenie aktualnych parametrów w zadaniu. Klasę oznaczamy adnotacją @StandardTool:

Narzędzie systemowe
@StandardTool( id = "exampletool", name = "Przykladowy", category = "Examples", description = "Opis tool'a", icon = "img/tool.png",
type = Type.JAVA_APPLICATION_WITH_TRANSACTION )
public class ToolExample
{
...
}

Adnotacja narzędzia systemowego posiada następujące właściwości:

  • id - identyfikator narzędzia systemowego, należy zadbać, by był unikalny w ramach wszystkich systemowych narzędzi, pole wymagane
  • name - nazwa narzędzia systemowego, a także aplikacji w procesie, pole wymagane
  • category - kategoria zadań, do których należy narzędzie systemowe, niezbędne do grupowania zadań po typie, pole wymagane
  • description - opis narzędzia systemowego, wartość domyślna: ""
  • icon - ścieżka na serwerze do ikony symbolizującej narzędzie systemowe, wartość domyślna: ""
  • type - typ narzędzia systemowego, możliwe wartości to: aplikacja Java, aplikacja Java z transakcją, wartość domyślna: aplikacja Java
  • actualParametersForm - rodzaj formularza parametrów aplikacji, możliwe wartości to: DEFAULT (domyślny - tabela z parametrami aplikacji i odpowiadającymi im aktualnymi parametrami), FIELDS (zestaw pól - formularz budowany na podstawie szablonu xml), wartość domyślna: default
  • formTemplateLocation - lokalizacja szablonu xml definiującego pola na formularzu parametrów aplikacji, ma znaczenie, gdy właściwość actualParametersForm ma wartość FIELDS, właściwość ta przyjmuje wartości typu classpath:/..., file:/..., wartość domyśna: ""

 

Następnie należy zaimplementować statyczną, publiczą metodę o nazwie execute i oznaczyć jej parametry typu org.enhydra.shark.api.internal.toolagent.AppParameter (o ile posiada) adnotacjami @StandardToolParameter:

Metoda execute
public static void execute( @StandardToolParameter( description = "Przykladowy parametr", mode = Mode.IN, type= Type.INTEGER ) AppParameter parameter )
{
...
}

Adnotacja parametru narzędzia systemowego posiada następujące właściwości:

  • id - identyfikator parametru, wartość domyślna: fpX, gdzie X to numer parametru w kolejności liczony od 1
  • description - opis parametru, wartość domyślna: ""
  • mode - tryb parametru (wejściowy, wyjściowy, wejściowo-wyjściowy), wartość domyślna: wejściowo-wyjściowy
  • type - typ parametru (tekstowy, datowy, liczbowy itd.), wartość domyślna: tekstowy

 

Jeżeli właściwość actualParametersForm w adnotacji @StandardTool przyjmuje wartość FIELDS, to edytor procesów buduje formularz parametrów aplikacji na podstawie szablonu w postaci pliku xml. Szablon musi posiadać określoną strukturę. Nadrzędnym elementem jest element Form. Może posiadać on następujące dzieci:

  • LoadConfiguration - element opisujący sposób ładowania formularza po wcześniejszym uzupełnieniu parametrów i ich zapisaniu, wartość domyślna: standardowy sposób ładowania formularza w Ext JS (Type=default). konfiguracja pozwala na zdefiniowanie następujących podelementów:
    • Type - zawiera węzeł tekstowy, określa typ akcji ładowania formularza parametrów aplikacji. Dozwolone są następujące typy akcji: default (standardowy sposób ładowania formularza w Ext JS, polega na zbudowaniu z parametrów obiektu postaci id_parametru:wartość_parametru i załadowaniu nim formularza), custom (ładowanie formularza jest wykonywane przez skrypt zdefiniowany przez twórcę szablonu formularza). Wartość domyślna: default.
    • JavaScriptCode - zawiera węzeł tekstowy zawarty w znacznikach <![CDATA[ i ]]>. Definiuje skrypt wykonywany podczas akcji ładowania formularza typu custom. Podczas wykonywania kodu na globalnym scope dostępne są takie obiekty jak: parameters (obiekt postaci id_parametru:wartość_parametru), formApi (API JS formularza udostępniające zestaw funkcji, opis poniżej), Ext (framework Ext JS). Wartość domyślna: null.
  • Fields - zawiera dowolną ilość elementów Field. Określają one kolejne pola na formularzu parametrów aplikacji. Wartość domyślna: pole tekstowe (Type=text). Element Field posiada następujące podelementy i atrybuty:
    • parameterId - atrybut, określa identyfikator parametru aplikacji. Wartość pola zostanie przypisana do określonego parametru. Pole może być polem pomocniczym, więc określenie atrybutu parameterId nie jest wymagane. Wartość domyślna: null.
    • Id - element, określa identyfikator pola na formularzu (właściwość itemId). Powinien być unikalny w ramach formularza. Pozwala wykonywać operacje na polu za pomocą API JS za pomocą podania identyfikatora. Żadna akcja nie musi być wykonywana na polu, więc nie ma konieczności definiowania elementu Id. Wartość domyślna: null.

    • Active - element, określa, czy pole jest aktywne (nie jest zablokowane i jego wartość jest brana pod uwagę w uzupełnianiu parametrów aplikacji). Właściwość ta pozwala posiadać kilka typów pól przypisanych dla jednego parametru aplikacji, które są aktywowane odpowiednio w zależności od innych okoliczności. Należy jedynie pamiętać, żeby tylko jedno pole dla danego parametru aplikacji było aktywne, gdyż w przeciwnym przypadku pobrana wartość będzie losowa. Wartość domyślna: true.

    • AllowBlank - element, określa, czy wartość pola może pozostać pusta. Pola, które mają tą właściwość ustawioną na true nie zgłaszają błędu podczas standardowej walidacji formularza. Wartość domyślna: true.

    • CustomProperty - element, określa wartość właściwości pola o nazwie customProperty. Pozwala oznaczać pola i grupować je, co ułatwia ich wyszukanie na formularzu. Wartość domyślna: null.

    • DefaultValue - element, określa domyślną wartość pola, którym jest one uzupełnione po otwarciu formularza. Wartość domyślna: null.

    • Description - element, określa opis pola. Dodawana jest ikona w etykiecie, na której po umieszczeniu kursora myszki jest wyświetlana informacja z podanym opisem. Wartość domyślna: właściwość description adnotacji @StandardToolParameter (dopasowanie pola i parametru następuje przez właściwość id adnotacji @StandardToolParameteri atrybut parameterId).

    • Hidden - element, określa, czy pole jest ukryte na formularzu. Wartość domyślna: false.

    • Label - element, określa etykietę pola (gdy pole jest tabelą, określa jej tytuł). Wartość domyślna: null.

    • Table - element, określa, czy pole jest tabelą. Tabela składa się z jednej kolumny Wartość, w której każda komórka zawiera edytor zdefiniowany przez aktualny element Field. Wartość domyślna: false.

    • TimeIncrement - element, określa odstęp w minutach między kolejnymi wartościami na liście dla pola typu time. Wartość domyślna: 30.

    • Type- element, określa typ pola. Wartość domyślna: text. Akceptowane wartości to:
      • text - pole tekstowe
      • textarea - wieloliniowe pole tekstowe
      • float - pole dziesiętne
      • integer - pole całkowite
      • date - pole datowe w formacie Y-m-d
      • time - pole czasowe w formie listy rozwijanej z wartościami w formacie H:i
      • radiobutton - pole jednokrotnego wyboru, wymaga zdefiniowania elementu Values w elemencie Field
      • htmlarea - wieloliniowe pole edycji HTML
      • staticlist - lokalna nieedytowalna lista rozwijana ze stałymi wartościami, wymaga zdefiniowania elementu Values w elemencie Field
      • editablestaticlist - lokalna edytowalna lista rozwijana ze stałymi wartościami, wymaga zdefiniowania elementu Values w elemencie Field
      • dynamiclist - zdalna nieedytowalna lista rozwijana uzupełniana wartościami po stronie serwera, wymaga zdefiniowania elementu DynamicListConfiguration w elemencie Field
      • editabledynamiclist - zdalna edytowalna lista rozwijana uzupełniana wartościami po stronie serwera, wymaga zdefiniowania elementu DynamicListConfiguration w elemencie Field
      • servicecaller - pole wywołujące serwis, wymaga zdefiniowania elementu ServiceCallerConfiguration w elemencie Field
      • variable - lista rozwijana zmiennych procesu
    • Values - element, zawiera dowolną ilość elementów Value. Określają one wartości na potrzeby niektórych typów pól. Element Value posiada następujące podelementy:

      • Id - identyfikator wartości. Stanowi ukrytą wartość pola podczas pobierania jego wartości. Element jest wymagany. Wartość domyślna: null.

      • Value - nazwa wartości. Stanowi widoczną wartość pola. Wartość domyślna: null.

      • Description - opis wartości. Wartość domyślna: "".
    • TableConfiguration- element, określa konfigurację pola w postaci tabeli. Posiada następujące podelementy:
      • CellValuesSeparator - określa separator wartości z poszczególnych komórek w tabeli. Wartość domyślna: ";".
    • DynamicListConfiguration- element, określa konfigurację dynamicznych list rozwijanych. Posiada następujące podelementy:
      • Url - określa url kontrolera, który zwraca dane dla listy. Element jest wymagany. Wartość domyślna: null.
      • Paging - określa, czy lista rozwijana ma implementować stronicowanie. Wartość domyślna: false.
      • PageSize - określa ilość rekordów na danej stronie. Właściwość ma znaczenie, gdy lista rozwijana implementuje stronicowanie. Wartość domyślna: 20.

      • DataFields - element, zawiera dowolną ilość elementów DataField. Określają one właściwości zwróconego obiektu JSON, które są serializowane przez listę rozwijaną. Element DataField posiada następujące podelementy:

        • Id - określa identyfikator właściwości obiektu JSON. Element jest wymagany. Wartość domyślna: null.
        • Name - określa nazwę właściwości obiektu JSON (nagłówek na liście rozwijanej). Wartość domyślna: null.
        • Type - określa typ wartości (string, date, int, auto, boolean itd.). Wartość domyślna: string.
        • Hidden - określa, czy właściwość jest ukryta na liście rozwijanej. Wartość domyślna: false.
      • ValueField - określa identyfikator jednej z właściwości obiektu JSON podany w jednym z DataFields. Wskazana właściwość będzie wartością listy rozwijanej. Wartość domyślna: null.

      • Parameters -  element, zawiera dowolną ilość elementów Parameter. Określają one parametry przekazywane do serwera podczas uzupełniania listy rozwijanej. Element Parameter posiada następujące podelementy:

        • Property - określa nazwę parametru przekazywanego do serwera. Element jest wymagany. Wartość domyślna: null.

        • Constant - określa wartość stałą, która stanowi wartość danego parametru. Wartość domyślna: "".

        • SourceId - określa identyfikator pola, którego wartość stanowi wartość danego parametru. Ma niższy priorytet od Constant (jest ignorowane, jeżeli podane jest Constant). Wartość domyślna: null.

    • ServiceCallerConfiguration- element, określa konfigurację pola wywołującego serwis. Posiada następujące podelementy:
      • Url - określa url kontrolera, który obsługuje serwis. Element jest wymagany. Wartość domyślna: null.
      • Parameters -  element, zawiera dowolną ilość elementów Parameter. Określają one parametry przekazywane do serwera podczas wywołania serwisu. Element Parameter posiada następujące podelementy:

        • Property - określa nazwę parametru przekazywanego do serwera. Element jest wymagany. Wartość domyślna: null.

        • Constant - określa wartość stałą, która stanowi wartość danego parametru. Wartość domyślna: "".
        • SourceId - określa identyfikator pola, którego wartość stanowi wartość danego parametru. Ma niższy priorytet od Constant (jest ignorowane, jeżeli podane jest Constant). Wartość domyślna: null.

      • Actions -  element, zawiera dowolną ilość elementów Action. Określają one akcje wykonane po wywołaniu serwisu ze statusem success o wartości true. Element Action posiada następujące podelementy:

        • Parameters -  element, zawiera dowolną ilość elementów Parameter. Określają one parametry wywołania akcji. Element Parameter posiada następujące podelementy:

          • FieldId - określa identyfikator pola. Wartość domyślna: null.
          • Constant - określa wartość stałą. Wartość domyślna: "".
          • SourceId - określa identyfikator pola źródłowego lub właściwość obiektu JSON. Wartość domyślna: null.
          • Property - określa właściwość obiektu JSON. Wartość domyślna: null.
          • Field - określa definicję pola. Wartość domyślna: domyślna definicja pola.
          • JavaScriptCode - zawiera węzeł tekstowy zawarty w znacznikach <![CDATA[ i ]]>. Definiuje skrypt wykonywany po wywołaniu serwisu. Podczas wykonywania kodu na globalnym scope dostępne są takie obiekty jak: result (obiekt JSON zwrócony przez serwis), formApi (API JS formularza udostępniające zestaw funkcji, opis poniżej), Ext (framework Ext JS). Wartość domyślna: null.

        • Name- określa nazwę akcji. Zdefiniowane są następujące akcje:
          • showFields - pokazuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pokazywanego pola).

          • hideFields - ukrywa pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator ukrywanego pola).

          • activateFields - aktywuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator aktywowanego pola).

          • deactivateFields - dezaktywuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator dezaktywowanego pola).

          • setFieldsValuesFromConstants - ustawia wartości pól na podstawie podanej stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator uzupełnianego pola), Constant (stała wartość).

          • setFieldsValuesFromResult - ustawia wartości pól na podstawie właściwości obiektu JSON zwróconego przez serwis. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator uzupełnianego pola), Property (właściwość obiektu JSON).

          • clearFieldsValues - czyści wartości pól. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator czyszczonego pola).

          • setFieldsStoreParametersFromConstants - ustawia parametry wywołania kontrolera dla dynamicznych list na podstawie wartości stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera), Constant (stała wartość).

          • setFieldsStoreParametersFromResult - ustawia parametry wywołania kontrolera dla dynamicznych list na podstawie właściwości obiektu JSON zwróconego przez serwis. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera), SourceId (właściwość obiektu JSON).

          • removeFieldsStoreParameters - usuwa parametry wywołania kontrolera dla dynamicznych list. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera).
          • focusField - ustawia kursor w polu lub w pierwszej komórce w tabeli dynamicznej. Wymagany jest tylko jeden parametr. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola).
          • setFieldsLabelsFromConstants - ustawia etykiety pól lub tytuły tabel na podstawie podanej stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Constant (stała wartość).

          • setFieldsLabelsFromResult - ustawia etykiety pól lub tytuły tabel na podstawie właściwości obiektu JSON zwróconego przez serwis. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (właściwość obiektu JSON).
          • addFields - dodaje pola do formularza. W parametrach wymagane jest zdefiniowanie elementów: Field (definicja pola).

          • addFieldsFromResult - dodaje pola do formularza na podstawie właściwości obiektu JSON zwróconego przez serwis, ustawia w definicji pola identyfikator, identyfikator parametru oraz etykietę (tytuł tabeli) na podstawie ciągu zmiennych tekstowych umieszczonych w formie listy w określonej właściwości obiektu JSON zwróconego przez serwis. W parametrach wymagane jest zdefiniowanie elementów: Field (definicja pola), Property (właściwość obiektu JSON zawierająca listę zmiennych tekstowych).

          • removeFieldsByCustomProperty - usuwa pola z formularza na podstawie podanej wartości właściwości customProperty. W parametrach wymagane jest zdefiniowanie elementów: Property (wartość właściwości customProperty).

          • customScript - wykonuje skrypt zdefiniowany przez twórcę szablonu formularza. W parametrach wymagane jest zdefiniowanie elementów: JavaScriptCode (kod JavaScript).

    • Listeners - element, zawiera dowolną ilość elementów Listener. Określają one zdarzenia, które mają zostać podpięte do pól. Zdarzenia te są związane ze standardowymi zdarzeniami framework'u Ext JS. Należy dodawać tylko jedno zdarzenie o danej nazwie, w przeciwnym przypadku zostanie ono nadpisane. Niektóre z pól posiadają wstępnie zdefiniowane zdarzenia. Zalecane jest zapoznanie się z nimi (opis poniżej) w celu uniknięcia napisania ich, co może skutkować zmianą działania pól. Jeżeli konieczne jest dodanie kolejnego zdarzenia o tej samej nazwie, należy wykorzystać zdarzenie afterrender i akcję o nazwie customScript w celu dodania nowego zdarzenia za pomocą operacji field.on('nazwa_zdarzenia', function, scope). Element Listener posiada następujące podelementy:

      • EventName - określa nazwę zdarzenia, dokumentacja zdarzeń w dokumentacji Ext JS. Dodatkowo pole wywołujące serwis obsługuje zdarzenie beforeservicecall, które jest wywoływane przed wywołaniem serwisu. Element jest wymagany. Wartość domyślna: null.

      • Actions -  element, zawiera dowolną ilość elementów Action. Określają one akcje wykonane po wystąpieniu danego zdarzenia. Element Action posiada następujące podelementy:

        • Parameters -  element, zawiera dowolną ilość elementów Parameter. Określają one parametry wywołania akcji. Element Parameter posiada następujące podelementy:

          • FieldId - określa identyfikator pola. Wartość domyślna: null.
          • Constant - określa wartość stałą. Wartość domyślna: "".

          • SourceId - określa identyfikator pola źródłowego lub pole rekordu. Wartość domyślna: null.

          • Property - określa właściwość obiektu JSON. Wartość domyślna: null.

          • Field - określa definicję pola. Wartość domyślna: domyślna definicja pola.
          • JavaScriptCode - zawiera węzeł tekstowy zawarty w znacznikach <![CDATA[ i ]]>. Definiuje skrypt wykonywany po wywołaniu serwisu. Podczas wykonywania kodu na globalnym scope dostępne są takie obiekty jak: listenerArgs (tablica parametrów wywołania danego zdarzenia, dostępna w dokumentacji Ext JS), formApi (API JS formularza udostępniające zestaw funkcji, opis poniżej), Ext (framework Ext JS). Wartość domyślna: null.

        • Name - określa nazwę akcji. Zdefiniowane są następujące akcje:

          • showFields - pokazuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pokazywanego pola).
          • hideFields - ukrywa pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator ukrywanego pola).
          • activateFields - aktywuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator aktywowanego pola).
          • deactivateFields - dezaktywuje pola. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator dezaktywowanego pola).
          • setFieldsValuesFromConstants - ustawia wartości pól na podstawie podanej stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator uzupełnianego pola), Constant (stała wartość).

          • setFieldsValuesFromFields - ustawia wartości pól na podstawie wartości innych pól. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator uzupełnianego pola), SourceId (identyfikator pola źródłowego).

          • setFieldsValuesFromRecord - ustawia wartości pól na podstawie wartości określonego pola z wybranego rekordu w liście rozwijanej. Przydatne dla zdarzenia select. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator uzupełnianego pola), Property (pole z wybranego rekordu w liście rozwijanej).

          • clearFieldsValues - czyści wartości pól. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator czyszczonego pola).

          • setFieldsStoreParametersFromConstants - ustawia parametry wywołania kontrolera dla dynamicznych list na podstawie podanej stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera), Constant (stała wartość).

          • setFieldsStoreParametersFromFields - ustawia parametry wywołania kontrolera dla dynamicznych list na podstawie wartości innych pól. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera), SourceId (identyfikator pola źródłowego).

          • setFieldsStoreParametersFromRecord - ustawia parametry wywołania kontrolera dla dynamicznych list na podstawie wartości określonego pola z wybranego rekordu w liście rozwijanej. Przydatne dla zdarzenia select. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera), SourceId (pole z wybranego rekordu w liście rozwijanej).
          • removeFieldsStoreParameters - usuwa parametry wywołania kontrolera dla dynamicznych list. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (parametr kontrolera).
          • focusField - ustawia kursor w polu lub w pierwszej komórce w tabeli dynamicznej. Wymagany jest tylko jeden parametr. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola).
          • setFieldsLabelsFromConstants - ustawia etykiety pól lub tytuły tabel na podstawie podanej stałej. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Constant (stała wartość).

          • setFieldsLabelsFromFields - ustawia etykiety pól lub tytuły tabel na podstawie wartości pól. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), SourceId (identyfikator pola źródłowego).

          • setFieldsLabelsFromRecord - ustawia etykiety pól lub tytuły tabel na podstawie wartości określonego pola z wybranego rekordu w liście rozwijanej. Przydatne dla zdarzenia select. W parametrach wymagane jest zdefiniowanie elementów: FieldId (identyfikator pola), Property (pole z wybranego rekordu w liście rozwijanej).
          • addFields - dodaje pola do formularza. W parametrach wymagane jest zdefiniowanie elementów: Field (definicja pola).

          • addFieldsFromRecord - dodaje pola do formularza na podstawie wartości określonego pola z wybranego rekordu w liście rozwijanej, ustawia w definicji pola identyfikator, identyfikator parametru oraz etykietę (tytuł tabeli) na podstawie ciągu zmiennych tekstowych umieszczonych w formie listy w określonym polu z wybranego rekordu w liście rozwijanej. W parametrach wymagane jest zdefiniowanie elementów: Field (definicja pola), Property (pole rekordu zawierające listę zmiennych tekstowych).

          • removeFieldsByCustomProperty - usuwa pola z formularza na podstawie podanej wartości właściwości customProperty. W parametrach wymagane jest zdefiniowanie elementów: Property (wartość właściwości customProperty).

          • customScript - wykonuje skrypt zdefiniowany przez twórcę szablonu formularza. W parametrach wymagane jest zdefiniowanie elementów: JavaScriptCode (kod JavaScript).

  • Validators - zawiera dowolną ilość elementów Validator. Określają one dodatkowe walidacje (poza standardową walidacją uzupełnienia wartości oraz poprawności formatu danych w polu) podczas zapisywania formularza parametrów aplikacji. Jeżeli przynajmniej jeden z walidatorów nie zwaliduje poprawnie formularza, to zapis parametrów aplikacji jest przerywany. Wartość domyślna: null. Element Validatorposiada następujące podelementy:
    • Name - zawiera węzeł tekstowy, określa nazwę walidatora. Dostępne są następujące walidatory:
      • areNotEmptyValidator - sprawdza, czy wartość określonego pola została podana. Wymaga podania parametru FieldId.
      • customScriptValidator - wykonuje skrypt zdefiniowany przez twórcę szablonu formularza w celu dokonania walidacji. Oczekiwane jest zwrócenie w skrypcie wartości true lub false w zależności od poprawności formularza. Wymaga zdefiniowania elementu JavaScriptCode.
    • Parameters - zawiera dowolną ilość elementów Parameter. Są to parametry przekazywane do walidatora. Element Parameterposiada następujące podelementy:
      • FieldId - zawiera węzeł tekstowy, określa identyfikator pola na formularzu. Wartość domyślna: null.
      • JavaScriptCode - zawiera węzeł tekstowy zawarty w znacznikach <![CDATA[ i ]]>. Definiuje skrypt wykonywany podczas walidacji formularza za pomocą walidatora customScriptValidator. Wykonywany skrypt powinien zwrócić true lub false w zależności od poprawności formularza. Podczas wykonywania kodu na globalnym scope dostępne są takie obiekty jak: formApi (API JS formularza udostępniające zestaw funkcji, opis poniżej), Ext (framework Ext JS). Wartość domyślna: null.

 

Podczas budowania formularza niektóre pola mają zdefiniowane zdarzenia, których nie należy nadpisywać w sekcji Lisneters w definicji pola. Są to następujące zdarzenia dla pól:

  • pole tabelaryczne - zdarzenia: afteredit.
  • pole typu dynamiclist - zdarzenia: beforequery.
  • pole typu editabledynamiclist - zdarzenia: beforequery.
  • pole typu servicecaller - zdarzenie: specialkey. Pozwala wywołać serwis za pomocą klawisza ENTER, gdy pole jest w edycji.
  • pole typu textarea - zdarzenie: render. Dodaje do pola menu, za pomocą którego można wstawić w nie wartości charakterystyczne dla pakietu, procesu, zadania (np. identyfikator zmiennej, identyfikator zadania itp.).

 

Obsługa dynamicznej listy po stronie serwera (dostarczenie danych) wiąże się z przygotowaniem kontrolera. Należy stworzyć klasę oznaczoną adnotacją @Controller, która implementuje interfejs DynamicListProvider<T>. Implementowana przez niego metoda getData powinna być oznaczona adnotacją @RequestMapping(value = "url_wywolania", method = RequestMethod.POST) (istotne jest, żeby kontroler oczekiwał żądania wywołanego za pomocą metody POST). Za pomocą DynamicListForm możliwa jest obsługa filtrowania poprzez wykorzystanie właściwości query oraz filtrowania poprzez wykorzystanie właściwości start i limit.

 

Obsługa pola wywołującego serwis po stronie serwera (zwrócenie statusu, dostarczenie danych) wiąże się z przygotowaniem kontrolera. Należy stworzyć klasę oznaczoną adnotacją @Controller, która implementuje interfejs ServiceCallerProvider<T extends ControllerResult>. Implementowana przez niego metoda getData powinna być oznaczona adnotacją @RequestMapping(value = "url_wywolania", method = RequestMethod.POST) (istotne jest, żeby kontroler oczekiwał żądania wywołanego za pomocą metody POST). Zwracany obiekt dziedziczy z obiektu ControllerResult. Akcje po wywołaniu serwisu są wykonywane jedynie w przypadku, gdy właściwość success zwracanego obiektu jest ustawiona na wartość true. Dodatkowo, gdy właściwość success ma wartość false, możliwe jest wyświetlenie wiadomości o błędzie umieszczonej we właściwości errorMessage.

 

Podczas wywoływania skryptów przygotowanych przez twórcę szablonu formularza parametrów aplikacji możliwe jest wykorzystanie globalnej zmiennej formApi, która stanowi API JS formularza. Udostępnia ono następujące funkcje:

  • getForm - zwraca obiekt panelu formularza.
    • Parametry funkcji: brak
       


    • Rezultat funkcji:

      TypOpis
      Ext.form.FormPanelObiekt panelu formularza
  • getFormFields - zwraca wszystkie pola formularza.
    • Parametry funkcji: brak
       


    • Rezultat funkcji:

      TypOpis
      Ext.Component[]Tablica pól formularza
  • maskForm - maskuje formularz.
    • Parametry funkcji: brak
       


    • Rezultat funkcji: brak

       

  • unmaskForm - usuwa maskę z formularza.
    • Parametry funkcji: brak

    • Rezultat funkcji: brak

       

  • loadForm - ładuje formularz za pomocą obiektu JSON postaci identyfikator_pola:wartość_pola (identyfikator pola, to atrybut parameterId z konfiguracji pola zawartej w elemencie Field).
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      valuesObjectnullObiekt JSON postaci identyfikator_pola:wartość_pola


    • Rezultat funkcji: brak

       

  • getField - pobiera komponent pola.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji:

      TypOpis
      Ext.ComponentKomponent pola
  • isTableField - informuje, czy pole jest tabelą.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      fieldExt.ComponentnullKomponent pola


    • Rezultat funkcji:

      TypOpis
      BooleanTrue, jeżeli pole jest tabelą
  • showField - pokazuje pole.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

       

  • hideField - ukrywa pole.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

       

  • activateField - aktywuje pole.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

       

  • deactivateField - dezaktywuje pole.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

       

  • getFieldValue - pobiera wartość pola.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji:

      TypOpis
      StringWartość pola
  • setFieldValue - ustawia wartość pola.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)
      valueStringnullWartość pola


    • Rezultat funkcji: brak

       

  • clearFieldValue - czyści wartość pola.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

  • setFieldStoreParameter - ustawia parametr wywołania kontrolera dla dynamicznej listy.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)
      parameterNameStringnullNazwa parametru
      parameterValueStringnullWartość parametru


    • Rezultat funkcji: brak

       

  • removeFieldStoreParameter - usuwa parametr wywołania kontrolera dla dynamicznej listy.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)
      parameterNameStringnullNazwa parametru


    • Rezultat funkcji: brak

       

  • focusField - ustawia kursor w polu lub w pierwszej komórce w tabeli dynamicznej.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)


    • Rezultat funkcji: brak

       

  • setFieldLabel - ustawia etykietę pola lub tytuł tabeli.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      idStringnullIdentyfikator pola (element Id z konfiguracji pola zawartej w elemencie Field)
      labelStringnullEtykieta/Tytuł


    • Rezultat funkcji: brak

       

  • getFieldsByCustomProperty - pobiera pola formularza na podstawie podanej wartości właściwości customProperty.
    • Parametry funkcji

      NazwaTyp

      Wartość domyślna

      Opis
      propertyStringnullPoszukiwana wartość właściwości customProperty


    • Rezultat funkcji:

      TypOpis
      Ext.Component[]Tablica pól formularza

 

4. Akcje przycisków tabeli dynamicznej:

Ich definicja znajduje się w pliku CUFdefs.js w projekcie CUF w lokalizacji scripts/external/CommonUsedFunctions. Plik js zawiera zmienną CUF, która jest obiektem. Posiada on właściwość DTButtons, który także jest obiektem. Kolejne właściwości definiują obiekty zawierające tłumaczenia (np. pl, en). Wewnątrz nich znajdują się właściwości określające akcje przycisków przycisków (nazwa właściwości jest identyfikatorem przycisku). Obiekt definicji akcji przycisku tabeli dynamicznej zawiera następujące pola:

  • name - typ String, nazwa akcji przycisku, wartość domyślna: ""
  • descr - typ String, opis akcji przycisku, wartość domyślna: ""
  • buttonId - typ String, id przycisku na formularzu, wartość domyślna: ""
  • text - typ String, tekst umieszczony na przycisku, wartość domyślna: ""
  • icon - typ String, ścieżka na serwerze do ikony, która zostanie umieszczona na przycisku, wartość domyślna: ""
  • tooltip - typ String, tekst podpowiedzi wyświetlany po umieszczeniu kursora myszki nad przyciskiem, wartość domyślna: ""
  • handler - typ String, nazwa funkcji js wykonywanej po kliknięciu na przycisk, wartość domyślna: ""
  • params- typ array, lista parametrów akcji przycisku, parametry są podawane w formie obiektu o następujących właściwościach, wartość domyślna: []:
    • viewName - typ String, nazwa parametru (etykieta pola), wartość domyślna: ""
    • realName - typ String, identyfikator parametru, wartość domyślna: ""
    • type - typ String, typ parametru (typ pola), dozwolone wartości to: string, boolean, int, docclass, wartość domyślna: string
    • defaultValue - typ zależny od wartości parametru type, wartość początkowa pola wartości parametru, wartość domyślna zależna od wartości parametru type
Definicja akcji przycisku tabeli dynamicznej
var CUF = {
    DTButtons: {
        pl: {
            importFromXls: {
                name: 'Import pliku Excel',
                descr: 'Import linii tabeli z pliku Excel',
                buttonId: 'CUF_import_from_xls_button',
                text: 'Importuj',
                icon: 'style/img/fam/page_excel.png',
                tooltip: 'Importuj linie z pliku',
                handler: 'CUF.table.service.TableButton.importFromExcel',
                params: [ {
                    viewName: 'Uwzględnij ukryte kolumny',
                    realName: 'showHidden',
                    type: 'boolean',
                    defaultValue: false
                },{
                    viewName: 'Zapisz dane po wczytaniu',
                    realName: 'saveData',
                    type: 'boolean',
                    defaultValue: true
                }, {
                    viewName: 'Przycisk wyboru pliku',
                    realName: 'fileButtonLabel',
                    type: 'string',
                    defaultValue: 'Wybierz plik'
                }, {
                    viewName: 'Przycisk importowania',
                    realName: 'loadButtonLabel',
                    type: 'string',
                    defaultValue: 'Importuj'
                }, {
                    viewName: 'Tytuł okna',
                    realName: 'windowTitle',
                    type: 'string',
                    defaultValue: 'Import pliku Excel'
                }, {
                    viewName: 'Dodatkowa funkcja',
                    realName: 'functionName',
                    type: 'string',
                    defaultValue: ''
                } ]
            }
		}
	}
};

 

5. Akcje przycisków akceptacji:

Ich definicja znajduje się w pliku CUFdefs.js w projekcie CUF w lokalizacji scripts/external/CommonUsedFunctions. Plik js zawiera zmienną CUF, która jest obiektem. Posiada on właściwość AcceptButtonFunctions, który także jest obiektem. Kolejne właściwości definiują obiekty zawierające tłumaczenia (np. pl, en). Wewnątrz nich znajdują się właściwości określające akcje przycisków (nazwa właściwości jest identyfikatorem przycisku). Obiekt definicji akcji przycisku tabeli dynamicznej zawiera następujące pola:

  • descr - typ String, opis akcji przycisku, wartość domyślna: ""
  • handler - typ String, nazwa funkcji js wykonywanej po kliknięciu na przycisk, wartość domyślna: ""
Definicja akcji przycisku akceptacji
var CUF = {
    AcceptButtonFunctions: {
        pl: {
            checkComment: {
                handler: 'CUF_checkComment',
                descr: 'Sprawdza, czy w obecnym zadaniu został dodany komentarz'
            }
		}
	}
};

 

setFieldStoreParameter

  • No labels