Mercury to repozytorium wiedzy dla metadanych o obiektach wraz z definicjami kontrolek WWW umożliwiające generowanie formularzy WWW. Metadane to ustrukturalizowane informacje stosowane do opisu obiektów (spraw) - opisują logiczny i fizyczny związek pomiędzy częściami złożonego obiektu (zobacz Opisywanie obiektów cyfrowych, 21 października 2016 [dostęp 2020-07-01]. Mercury DB w swoich strukturach umożliwia również przechowywanie niezbędnych danych pozwalających na generowanie formularzy edycji oraz stron prezentacji składowanych obiektów. Metadane składowane są w relacyjnej bazie danych (SQL). Synonimem definicji metadanych spraw jest typ sprawy. Poniżej opis encji.
TypeCase
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | TypeCase |
Encja reprezentująca typ sprawy. Obiekt wykorzystywany w usługach warstwy logicznej. Poniżej przedstawiony jest diagram powiązań TypeCase z innymi encjami, które opisane są w niniejszym dokumencie.
Lista i znaczenie poszczególnych pól:
TypeParam
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | TypeParam |
Obiekt reprezentujący parametr typu. Obiekt wykorzystywany w usługach warstwy logicznej. Poniżej przedstawiony jest diagram powiązań obiektu TypeParam z innymi encjami, które opisane są w niniejszym dokumencie.
Lista i znaczenie poszczególnych pól:
TypeParamPK
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | TypeParamPK |
Klucz główny encji TypeParam (parametru typu) wiążący identyfikator typu oraz pozycję, na którym występuje dany parametr.
Pola sterujące dla mechanizmów generacji formularzy
Poniżej zostaną wyszczególnione pola, których znaczenie sterujące nie wynika z opisu umieszczonego w tabeli z opisem obiektu. Niektóre akcje generacji są uzupełnieniem dla pól sterujących zdefiniowanych w powiązanej encji ParamDefinition.
isRequired
Informacja o tym czy pole jest wymagane. Jeżeli z ParamDefinition wynika, że pole reprezentuje kontrolkę SELECT
(tag HTML <select>
) lub MULTI (tag HTML <select multiple>
) na formularzu WWW, a wartość pola przyjmuje false
to do listy opcji zostanie dodana pozycja "--- wybierz ---"
z pustą wartością.
arg1
Pole reprezentuje uniwersalny argument nr 1. W zależności od tego jakie dane zawarte są w ParamDefinition
pole uzyskuje różne znaczenie sterujące:
- Dla kontrolek
SELECT
lubMULTI
to informacja czy z elementu opcji ma być wyciągana wartość (value), czy nazwa (name). Wartość ‘true’ oznacza pobranie atrybutu ‘value’. - Dla kontrolki reprezentującej
TEXTAREA
, to liczba kolumn (znaków w poziomie). - Dla kontrolki reprezentującej prosty input, to jego typ: ‘text’ lub ‘password’
- Dla kontrolki reprezentującej wprowadzaną datę to javascript’owy format daty np. ‘yyyy MM dd’
- Dla kontrolki reprezentującej wprowadzaną liczbę to format liczby.
- Dla kontrolki reprezentującej plik to wartość reprezentująca typ ładowanego pliku. Możliwe wartości to
img|doc|xls|pdf|unknown
arg2
Pole reprezentuje uniwersalny argument nr 2. W zależności od tego jakie dane zawarte są w ParamDefinition
pole uzyskuje różne znaczenie sterujące:
- Dla kontrolek
SELECT
lubMULTI
to informacja reprezentująca atrybut ‘size’. - Dla kontrolki reprezentującej
TEXTAREA
, to liczba wierszy (znaków w pionie). - Dla kontrolki reprezentującej prosty input, to rozmiar tego pola.
- Dla kontrolki reprezentującej wprowadzaną datę to położenie ikonki z kalendarzem (wartość ‘left’ – po lewej stronie pola formularza, ‘right’ – po prawej stronie)
- Dla kontrolki reprezentującej plik to rozmiar pola
arg3
Pole reprezentuje uniwersalny argument nr 3. W zależności od tego jakie dane zawarte są w ParamDefinition
pole uzyskuje różne znaczenie sterujące:
- Dla kontrolek
SELECT
lubMULTI
to informacja czy z listy ma być wyciągana konkatenacja wartości i nazwy (value{separator}name), wartość ‘true’ oznacza, że tak. - Dla kontrolki reprezentującej prosty input, to maksymalna liczba znaków.
arg4
Pole reprezentuje uniwersalny argument nr 4. W zależności od tego jakie dane zawarte są w ParamDefinition
pole uzyskuje różne znaczenie sterujące:
- Dla kontrolek reprezentujących dane typ LOB są to dane dotyczące metadanych opisujących ten obiekt (wykorzystywane do prezentacji podglądu obiektu):
JSON
,ANY
,FILE
,XML
,HTML
,TEXT
.
arg5
Pole reprezentuje uniwersalny argument nr 5. W zależności od tego jakie dane zawarte są w ParamDefinition
pole uzyskuje różne znaczenie sterujące:
- Dla kontrolek reprezentujących dane typ LOB są to dane mimeType obiektu (wykorzystywane do prezentacji podglądu obiektu:
public String getDefaultContentType() { switch (this) { case JSON: return "application/json"; case XML: return "application/xml"; case HTML: return "text/html"; case FILE: return "application/octet-stream"; default: return "text/plain"; } }
actions
Lista akcji/funkcji JavaScript przypisanych do pola na formularzu WWW. Zobacz opis encji TypeParamAction.
TypeCode
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | typeCode |
Kod grupujący różne wersje tego samego typu.
- Sławomir Cichy Podaj przykłady wykorzystania pól TypeCode - najlepiej z portalu
TypeKind
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | TypeKind |
Rodzaj / kategoria typu.
SubType
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | SubType |
Dane dotyczące typu sprawy zależnej oraz pozycji formularza sprawy zależnej na formularzu głównym (sprawy nadrzędnej).
TypeParamAction
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | TypeParamAction |
Zbiór akcji wraz z kodem JavaScript, które powiązane są z polami formularza WWW.
ParamDefinition
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | ParamDefinition |
Encja reprezentująca podstawowe informacje o nazwie pola, jego typie prostym lub złożonym. ParamDefinition jest elementem wielokrotnie wykorzystywanym jako definicja parametru typu sprawy, może występować w wielu różnych typach. Jest predefinicją parametru typu sprawy. Na przykład pole o nazwie ‘name’ może być wykorzystane w wielu różnych typach definiujących obiekt użytkownika, samochód, samolot, komputer.
ParamDefinitionPK
Warstwy, w których użyty | Logic |
Rodzaj | Encja |
complexType | ParamDefinitionPK |
Definicja klucza głównego encji ParamDefinition.
Rozszerzenia definicji pól dla mechanizmów generacji formularzy
Poniżej opisano enumeratory, których dane są zawarte w opisie encji ParamDefinition, a o które oparto reguły budowania kontrolek HTML podczas generacji formularza.
HtmlSupportedControl
Lista wartości mających wpływ na wybór odpowiedniej kontrolki formularza WWW
Wartość | Opis |
---|---|
TEXT | długi tekst, prezentowany w TEXTAREA |
INTEGER | Liczba całkowita. Pole input z walidacją formatu liczby całkowitej |
CURRENCY | Liczba zmiennoprzecinkowa z dodatkową informacją o walucie (kod waluty np. PLN, USD, GBP itd.) |
NUMBER | Liczba zmiennoprzecinkowa. Pole input z walidacją formatu liczby całkowitej |
STRING | krótki tekst, prezentowany w zwykłym polu INPUT TYPE="text" |
CHECK | typ prezentowany jako pole CHECKBOX |
RADIO | Typ prezentowany jako pole RADIO |
DATE | Typ daty, pole z datePicker |
URL | Pole tekstowe, do którego można wprowadzić odnośnik. |
FILE | Pole tekstowe, do którego można wprowadzić położenie lokalnego (na stacji roboczej) pliku. |
SELECT | Lista rozwijalna z pojedynczym wyborem, ale można zrobić z niego pole z wieloma wyborami poprzez ustawienie odpowiedniej wartości. |
MULTI | Lista rozwijalna z możliwością wyboru wielu wartości |
GROUPEDSELECT | Lista rozwijalna z pojedynczym wyborem, z tym, ze na liście prezentowane są pogrupowane pary nazwa-wartość |
GROUPEDMULTI | Lista rozwijalna z możliwością wyboru wielu wartości, z tym, ze na liście prezentowane są pogrupowane pary nazwa-wartość, ale można zrobić z niego pole z wieloma wyborami poprzez ustawienie odpowiedniej wartości. |
LOVSELECT | Pole z listą rozwijalną, z pojedynczym wyborem, ale lista jest prezentowana w osobnym oknie (LOV - List OF Values) |
LOVMULTI | Pole z listą rozwijalną, z możliwością wyboru wielu wartości, ale lista jest prezentowana w osobnym oknie (LOV - List OF Values), ale można zrobić z niego pole z wieloma wyborami poprzez ustawienie odpowiedniej wartości. |
GROUPEDLOVSELECT | Pole z listą rozwijalną, z pojedynczym wyborem, ale lista jest prezentowana w osobnym oknie (LOV - List OF Values), z tym, ze na liście prezentowane są pogrupowane pary nazwa-wartość, ale można zrobić z niego pole z wieloma wyborami poprzez ustawienie odpowiedniej wartości. |
GROUPEDLOVMULTI | Pole z listą rozwijalną, z możliwością wyboru wielu wartości, ale lista jest prezentowana w osobnym oknie (LOV - List OF Values), z tym, ze na liście prezentowane są pogrupowane pary nazwa-wartość |
SUBFORM | Obsługa pod formularzy, dla spraw zależnych {AttributeType#SUBCASE} |
SUBTABLE | Obsługa list/tablic, dla list spraw zależnych {AttributeType#SUBCASE} |
AttributeType
Lista wartości mających typ danych odpowiedniej kontrolki formularza WWW
Wartość | Nazwa Typu | Implementacja Java | Opis |
---|---|---|---|
BOOLEAN | Boolean | java.lang.Boolean | Lista wartości odpowiadających prawdzie i fałszowi; |
BOOLEAN_INTEGER | BooleanInteger | java.lang.Integer | Lista wartości odpowiadających prawdzie i fałszowi z wartością liczbową; |
TEXT | Text | java.lang.String | Tekst długi - znaki (słowa, zdania itp.); |
STRING | String | java.lang.String | Tekst krótki - znaki (słowo, zdanie itp.) |
PASSWORD | Password | java.lang.String | krótki tekst, prezentowany w zwykłym polu z maską zasłaniającą wprowadzaną wartość |
NUMBER | Number | java.lang.Double | Liczba zmiennoprzecinkowa; #########0.#### |
DECIMAL | Decimal | java.lang.Double | Liczba zmiennoprzecinkowa;#########0.#### |
DOUBLE | Double | java.lang.Double | Liczba zmiennoprzecinkowa;#########0.#### |
FLOAT | Float | java.lang.Float | Liczba zmiennoprzecinkowa;#########0.#### |
CURRENCY | Currency | pro.ibpm.mercury.attrs.javax.CurrencyValue | Liczba w formacie waluty, z dwoma miejscami po przecinku; #########0.## |
INTEGER | Integer | java.lang.Long | Liczba całkowita |
DATE | Date | pro.ibpm.mercury.attrs.javax.DateInString | Data prosta w formacie 'DD-MM-YYYY' |
DATE_LONG | DateLong | pro.ibpm.mercury.attrs.javax.DateInString | Data z czasem (godziną) w formacie 'DD-MM-YYYY HH24:MI:SS' |
TIME | Time | pro.ibpm.mercury.attrs.javax.DateInString | Data z czasem (godziną) w formacie 'DD-MM-YYYY HH24:MI:SS' |
URL | URL | pro.ibpm.mercury.attrs.javax.URLValue | Adres HTTP |
SELECT | n/a | java.util.Collection | Atrybut z przechowujący listy. Pole wielowartościowe. |
COMPLEX | n/a | java.lang.Object | Typ złożony, dla pola takiego typu będzie generowana formatka oparta o dane zdefiniowane w obiekcie spełniającym interfejs {@link ComplexValue}. Typ złożony może być obsługiwany również przez kontrolkę HTML typu SELECT - wtedy ‘value’ zawiera odpowiednio przygotowaną postać reprezentującą wartość (na podstawie metody {@link ComplexValue#encode(Object, String, String)}) |
LOB | Lob | java.lang.String | Large object |
SUBCASE | n/a | java.lang.Object | sprawa zależna |
JSON_NVP | JSONNameValuePair | pro.ibpm.mercury.attrs.sub.JSONNameValuePairSubType | Podtyp reprezentujący obiekt JSON z polami name oraz value (@Deprecated, obecnie NameValuePair) |
NVP | NameValuePair | pro.ibpm.mercury.attrs.sub.NameValuePairSubType | Podtyp reprezentujący obiekt z polami name oraz value |
ENTRY | Entry | pro.ibpm.mercury.attrs.sub.EntrySubType | Podtyp reprezentujący obiekt Entry z polami key oraz value |
MAP | Map | pro.ibpm.mercury.attrs.sub.MapSubType | Podtyp reprezentujący listę obiektów typu Entry |
ANY | ANY | pro.ibpm.mercury.attrs.sub.AnySubType | Podtyp reprezentujący dowolny obiekt |
SourceType
Typy źródeł danych dla kontrolek z listami rozwijalnymi formularza WWW (pochodzenie danych słownikowych wartości pola)
Wartość | Opis |
---|---|
JSON | Sformatowana w postaci JSON lista w polu ‘valueDefinition’ encji ParamDefinition. |
QUERY | Zapytanie SQL w polu ‘valueDefinition’ encji ParamDefinition. JNDI źródła danych powinno być w polu ‘sourceJndiName’ albo JDBC URL w polu ‘source’ |
LOCALDAO | wykorzystanie klas lokalnego DAO (nazwa klasy DAO będzie budowana na podstawie nazwy parametru (ParamDefinition) |
JNDI_RESOURCE | W polu w polu ‘valueDefinition’ encji ParamDefinition jest ścieżka pośrednia prowadząca do listy elementów zdefiniowanych jako plik, a polu w polu SOURCE jest URL kierujący do strony z odpowiednim formatem XML lub JSON - wykorzystanie protokołu HTTP/HTTPS |
WEB | W polu w polu ‘valueDefinition’ encji ParamDefinition jest ścieżka pośrednia prowadząca do chronionej listy elementów zdefiniowanych jako plik, a w SOURCE jest URL kierujący do strony z odpowiednim formatem XML lub JSON - wykorzystanie protokołów HTTP i HTTPS. Strona serwera, na której znajdują się dane zabezpieczona jest mechanizmem FORM |
HTTP | W polu w polu ‘valueDefinition’ encji ParamDefinition jest ścieżka pośrednia prowadząca do chronionej listy elementów zdefiniowanych jako plik, a w SOURCE jest URL kierujący do strony z odpowiednim formatem XML lub JSON - wykorzystanie protokołów HTTP i HTTPS. Strona nie jest zabezpieczona, lub zabezpieczona jest mechanizmem BASIC, OAuth. |
FILE | W polu w polu ‘valueDefinition’ encji ParamDefinition jest ścieżka pośrednia prowadząca do listy elementów zdefiniowanych jako plik, a polu w polu SOURCE jest URL kierujący do pliku z odpowiednim formatem XML lub JSON |
WS | W polu w polu ‘valueDefinition’ encji ParamDefinition jest nazwa klasy interpretującej wynik, a polu SOURCE jest adres WebService po protokole HTTPS |
DEFAULT | Domyślne pochodzenie danych - dla pól typu Integer, Number, Date |
SAVEDVALS | wartości zapisane w bazie danych w tablicy. Tablica zawiera wiersze z polami nazwy atrybutu oraz zapisanej wartości, a jej dane uzupełniane są wraz z wprowadzanymi, różnymi wartościami pochodzącymi z formularza WWW |