Table of Contents |
---|
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:
...
- 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:
...
- 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.
...
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:
Code Block | ||
---|---|---|
| ||
@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:
Code Block | ||
---|---|---|
| ||
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. Element Fieldposiada 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 artybutu parameterId nie jest wymagane. Wartość domyślna: null.
Id - element, określa identyfikator pola na formularzu (właściwość itemId). 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 odszukanie 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, po najechaniu na którą jest on wyświetlany. Wartość domyślna: właściwość description adnotacji StandardToolParameter (dopasowanie pola i parametru następuje przez właściwość id adnotacji StandardToolParameter i 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: ";".
- aaa
- 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.
- Name - zawiera węzeł tekstowy, określa nazwę walidatora. Dostępne są następujące walidatory:
...
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:
...
Code Block | ||
---|---|---|
| ||
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: '' } ] } } } }; |
...
4. 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:
...
Code Block | ||
---|---|---|
| ||
var CUF = { AcceptButtonFunctions: { pl: { checkComment: { handler: 'CUF_checkComment', descr: 'Sprawdza, czy w obecnym zadaniu został dodany komentarz' } } } }; |
setFieldStoreParameter