IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

6. diel - Objekty systému ObjectGears - Triedy a Otázky

V minulej lekcii, Objekty systému ObjectGears - Model , sme si popísali objekt Model, ktorý je základnou pre vytváranie "aplikácií" v systéme ObjectGears.

Už vieme niečo o modeli, ako "aplikačné schránke". Dnes sa budeme venovať triedam a otázkam. Tieto dva objekty majú dosť spoločného a majú podobné nastavenia. Preto si ich popíšeme naraz.

Trieda

Trieda je objekt, do ktorého sa ukladajú užívateľské záznamy. Ide o ekvivalent databázovej tabuľky. Každá trieda má stĺpce (text, číslo, dátum, odkaz, ...) a riadky.

Dotaz

Otázka neobsahuje vlastné dáta ako trieda, ale obsahuje predpis (SQL príkaz), ktorý umožní získať dáta z iných tried alebo otázok, transformovať ich a vytvoriť z nich vlastné záznamy, ktoré si môže používateľ zobraziť. Tieto záznamy sa nikde neukladajú. Načítanie záznamov z tried a otázok a ich transformácia prebieha zakaždým, keď sa dotaz zobrazuje.

Zobrazenie zoznamu tried / otázok

Na zoznam tried sa dostanete z ľavého menu Správa / Modely / Triedy, na otázky potom Správa / Modely / Otázky. Ďalej v detaile modelu je na toolbaru odkaz Triedy a Otázky pre rýchle prepínanie medzi triedami a otázky:

zoznam tried - Systém ObjectGears

zoznam tried

Na zozname tried / otázok je v hornej časti filtrovacie blok. Vyhľadávať môžete podľa modelu alebo kódu / názvu triedy / dotazu. Vyberiete model a tlačidlom Filtrovať spustíte daný filter. Vždy tak vidíte triedy / otázky len pre jeden vybraný model. Tlačidlom Vymazať filter si zobrazíte všetky triedy / otázky.

Na toolbaru sú tlačidlá:

  • Nový - pre vytvorenie novej triedy / dotazu
  • Vytvoriť číselníky - (len pri tried) slúži pre hromadné vytváranie podobných tried
  • Otázky - (len pri tried) pre rýchly prechod na otázky rovnakého modelu
  • Triedy - (len pri otázok) pre rýchly prechod na triedy rovnakého modelu

Vytvoriť číselníky

Na zozname tried je na toolbaru tlačidlo Vytvoriť číselníky. Táto funkcia nám umožní hromadne vytvoriť triedy, ktoré majú podobnú štruktúru, napríklad číselníky. Po kliknutí na tlačidlo sa zobrazí stránka, kde do poľa Hodnoty pre číselníky zadáte na každý riadok kód a názov pre jednu triedu. Hodnoty oddeľte bodkočiarkou takto:

stav;Stavy úkolů
sekce;Sekce úkolů

Pomocou checkboxov pod týmto poľom vyberte preddefinované stĺpce, ktoré sa majú do každej triedy vytvoriť. Kliknutím na tlačidlo Vytvoriť číselníky sa požadovanej triedy i so stĺpci vytvorí. Táto funkcia je vhodná práve pre číselníky, ktoré väčšinou obsahujú len stĺpce id, kód, názov a príznak povolené, či niektorú z týchto kombinácií. Vďaka prednastaveným stĺpcom tak vytvoríte kompletné triedy alebo aspoň časť tried veľmi rýchlo. Špecifické stĺpce si potom už doplníte po jednom:

Hromadné vytvorenie číselníkov. - Systém ObjectGears

Hromadné vytvorenie číselníkov.

Nová trieda

Kliknutím na tlačidlo Nový na zozname tried sa zobrazí stránka pre zadanie novej triedy. Nastavenie triedy má mnoho parametrov, my si ale popíšeme len tie najdôležitejšie. Na ostatné sa dostaneme v niektorom ďalšom diele, až budeme popisovať ďalšiu funkcionalitu a objekty systému ObjectGears.

Sekcia Základné vlastnosti

Sekcia sa nachádza v záložke Základné vlastnosti a má nasledujúce polia k vyplneniu:

  • Model - Model, v ktorom bude trieda vytvorená.
  • Kód - Kód triedy pre prácu v skriptoch.
  • Meno - Názov triedy, je možné ho zadať lokalizované.
  • Poznámka - poznámka pre vývojárov. Nikde sa nezobrazuje.

Sekcia Správa záznamov

Tu nastavíme operácie, ktoré budú môcť užívatelia sa triedou vykonávať pomocou GUI:

  • Povoliť vloženie záznamov - užívatelia môžu vytvárať nové záznamy
  • Povoliť zmeny záznamov - užívatelia môžu meniť záznamy
  • Povoliť zobrazenie zoznamu dát - je povolené zobrazenie záznamov formou zoznam záznamov
  • Povoliť zobrazenie detailu dát - je povolené zobrazenie detailu jedného vybraného záznamu
  • Povoliť zobrazenie detailu údajov v zozname - je povolené zobraziť detailný zoznam záznamov (karty so všetkými stĺpci)

Detail novej triedy vyzerá nasledovne:

Detail novej triedy - Systém ObjectGears

Detail novej triedy

Ďalej máme k dispozícii vybalovací menu, popíšeme si, čo robí každá položka z nich:

  • Spôsob mazanie záznamov Fyzicky mazať záznamy - záznam bude kompletne vymazaný z databázy

    Logické mazanie záznamov - záznam bude iba označený príznakom, že je zmazaný

    Nepovoliť mazanie záznamov - záznamy nie je možné mazať

  • Fyzicky mazať záznamy - záznam bude kompletne vymazaný z databázy
  • Logické mazanie záznamov - záznam bude iba označený príznakom, že je zmazaný
  • Nepovoliť mazanie záznamov - záznamy nie je možné mazať
  • Typ otázky pred zmazaním záznamov Bez potvrdenia - zmazania záznamu prebehne okamžite po kliknutí na tlačidlo Zmazať

    S potvrdením - užívateľ bude najskôr požiadaný, či chce záznam naozaj zmazať

  • Bez potvrdenia - zmazania záznamu prebehne okamžite po kliknutí na tlačidlo Zmazať
  • S potvrdením - užívateľ bude najskôr požiadaný, či chce záznam naozaj zmazať
  • Povoliť zobr. zmazaných záznamov v zozname - pri povolení tejto položky bude v zozname záznamu (v sekcii s filtrom) zobrazený checkbox pre zobrazenie aj zmazaných záznamov.
  • obmedzenie mazanie bez obmedzenia

    Záznam sa nedá zmazať, pokiaľ je odkázaný - pri nastavenom logickom mazanie, pred vlastným zmazaním prebehne kontrola, či na mazaný záznam nie je odkaz z inej triedy. Pri fyzickom mazaní nemožno záznam zmazať, pokiaľ naň odkazuje iný záznam. Najprv je potrebné zmazať odkazujúce sa záznam alebo ho aktualizovať, aby neodvolal na záznam, ktorý chceme zmazať.

  • bez obmedzenia
  • Záznam sa nedá zmazať, pokiaľ je odkázaný - pri nastavenom logickom mazanie, pred vlastným zmazaním prebehne kontrola, či na mazaný záznam nie je odkaz z inej triedy. Pri fyzickom mazaní nemožno záznam zmazať, pokiaľ naň odkazuje iný záznam. Najprv je potrebné zmazať odkazujúce sa záznam alebo ho aktualizovať, aby neodvolal na záznam, ktorý chceme zmazať.

Záložka Role a zobrazenie

V záložke Úloha a zobrazenie môžeme nájsť tieto nastavenia:

  • Zobraziť v predvolenom menu - Ak pre model použijete predvolené nastavenia menu, potom pri označenie tohto nastavenia bude trieda zobrazená v menu.
  • Radiť podľa stĺpca X - Nastavenie radenia sa prejaví pri zobrazení zoznamu záznamov. Radiť môžete podľa ľubovoľného stĺpca a vzostupne alebo zostupne.
  • Povoliť navigáciu na formulári - Toto nastavenie zobrazí v detaile jedného záznamu navigačný prvok, pomocou ktorého môžete prechádzať na predchádzajúce a nasledujúce záznamy.
  • Zobraziť číslovanie riadok v zozname - V zobrazenie zoznamu záznamov bude každý riadok očíslovaný (od 1.).

Formát záznamu

Každý záznam má krátky popis (ShortDescrip­tion) a do neho je uložený textový popis záznamu. Ten môže byť zložený z ľubovoľných stĺpcov triedy daného záznamu. Definícia určujúce, ako bude ShortDescription vytvorený, sa zadáva do poľa Formát popisu. Tento ShortDescription sa potom používa ako textový identifikátor záznamu, napr. Pri výbere záznamov v ComboBox alebo vyhľadávacích formulároch.

Do Formátu popisu sa do dvoch zložených zátvoriek {{...}} píšu kódy stĺpcov, z ktorých chceme krátky popis vytvoriť. Text mimo zátvorky bude vložený do výsledku tiež. Predpokladajme, že máme triedu so štátmi a so stĺpci code a name. Potom môžeme vytvoriť potrebné tieto formáty:

{{column.code}}: {{column.name}}                        ČR: Česká republika
{{column.code}} – {{column.name}} (Id:{{column.id}})    ČR - Česká republika (Id:100)
{{column.name}}                                         Česká republika

Ak formát nevyplníme, tak bude zobrazené FULLID, čo je kombinácia ID triedy a ID záznamu, ktoré je jedinečné cez celú inštanciu systému ObjectGears. Ak je ID triedy 100 a ID záznamu 200, potom by FULLID bolo <100-200>.

Sekcia Zoznam rolí

Tu si popíšeme iba nastavenie Úloha a Operácia. ObjectGears umožňuje detailné nastavenie oprávnení na jednotlivé záznamy využívajúce organizačných štruktúr a preberanie oprávnenia z odkazovaných záznamov, ale o tom si povieme až niekedy nabudúce.

Pre každú rolu môžeme vybrať operácie, ktoré chceme povoliť. Tlačidlom Pridať úlohu k triede priradíme úlohu. Nezabudnime nakoniec ešte kliknúť na tlačidlo Uložiť, aby sa všetko uložilo do databázy:

Zoznam rolí v triede - Systém ObjectGears

Záložka Doplňujúce nastavenia

V tejto záložke máme zaškrtávacie pole, popíšeme si len tie prvé dve:

  • Povoliť hromadné zmeny - po zaškrtnutí bude môcť užívateľ (ak bude mať oprávnenie) hromadne meniť viac záznamov naraz
  • Povoliť hromadné zmazanie - toto robí to isté, ale namiesto zmeny ich bude môcť mazať
Doplňujúce informácie na triede - Systém ObjectGears

Sekcia Archivácia

V tejto sekcii môžeme nájsť ďalšie zaškrtávacie polia:

  • Povoliť archiváciu dát - po zaškrtnutí sa budú všetky zmeny v triede logovať do archivačné tabuľky
  • Zobraziť archivačné tlačidlo v zozname dát - na stránke so zoznamom záznamov bude tlačidlo pre prehliadanie archívnych záznamov
  • Zobraziť archivačné tlačidlo v detaile dát - na stránke s detailom záznamu bude tlačidlo pre prehliadanie archívnych záznamov pre konkrétny záznam

Sekcia vyzerá takto:

Archivácia na triede - Systém ObjectGears

Všimnite si, že jednoduchým zaškrtnutím checkboxu získame históriu zmien v triede.

Zapnutá histórie u tabuliek, ktoré sa často menia môže spôsobiť veľmi rýchly nárast veľkosti databázy. Používajte teda históriu uvážlivo a len tam, kde má naozaj zmysel. V ObjectGears môžete využiť aj automatické čistenie logov, ktoré umožňuje nastaviť premazávanie starých záznamov.

Sekcia Jedinečnosť stĺpcov

V tejto sekcii máme na výber tri ComboBox a jedno textové pole:

  • Stĺpec 1, 2, 3 - nastavenie kombinácia až troch stĺpcov, ktoré musia byť v triede jedinečné
  • Popis chyby - textové hlásenia, ktoré sa zobrazí užívateľovi pri pokuse o uložení duplicitného záznamu

Sekcia vyzerá nasledovne:

Jedinečnosť stĺpcov na triede - Systém ObjectGears

Táto funkcia je vhodná, ak potrebujeme v triede nastaviť jedinečnosť záznamov podľa 1-3 stĺpcov. Pokiaľ má byť jedinečnosť zložitejšie, potom máme k dispozícii objekt Pravidlá.

Toto je základný prehľad vlastností, s ktorými si zatiaľ vystačíme. Kliknutím na tlačidlo Uložiť už len novú triedu uložíme do databázy.

Nový dotaz

Pre otázky si popíšeme len nastavenia, ktoré sú špecifické pre dopyt. Ostatné polia zhodná sa triedou tu preskočíme.

Kliknutím na tlačidlo Nový na zozname otázok sa zobrazí stránka pre zadanie nového dotazu.

Záložka Definícia dotazu

SQL - SQL príkaz s definíciou dotazu.

Príklad

Tento dotaz vráti všetky role definované v systéme ObjectGears:

SELECT * FROM Role r

Otázka SQL zodpovedá jazyku SQL používanom na SQL Servera. Je tu ale niekoľko odlišností.

Pri odkaze na triedu alebo pripomienka použijeme tento príkaz:

{{: class.kod_tridy :}} x
{{: query.kod_dotazu :}} x

kde x je pomenovanie triedy / dotazu v SQL.

Ako názvy stĺpcov sa nepoužíva vlastnosť stĺpca Stĺpec v DB, ale Kód stĺpce:

SELECT u.id, u.name
FROM {{: class.ukol :}} u

V otázkach môžeme použiť aj klauzulu WITH:

WITH u AS
(
  SELECT * FROM {{:class.ukol:}} uu
)
/* ENDWITH */
SELECT u.id, u.name
FROM u

V otázkach môžeme používať priamo tabuľky z databázy, triedy (pomocou {{: class.kod_tridy :}}) alebo iné otázky (pomocou {{: query.kod_dotazu :}}).

Ako ďalšie premenné možno v dotaze napríklad:

  • {{:model.id:}} - vloží ID aktuálneho modelu, v ktorom je dotaz vytvorený
  • {{:class.kod_tridy.id:}} - vloží ID triedy
  • {{:query.kod_dotaz.id:}} - vloží ID dotazu
  • {{app.parameter.kod_parametru}} - vloží hodnotu aplikačného parametra
  • {{model.name}} - vloží názov modelu
  • {{model.code}} - vloží kód modelu
  • {{model.parameter.kod_parametru}} - vloží hodnotu parametra z modelu
  • {{column.kod_sloupce.name}} - vloží názov stĺpca
  • {{column.kod_sloupce}} - vloží hodnotu zo stĺpca pre aktuálny záznam
  • {{class.name}} - vloží názov triedy
  • {{class.code}} - vloží kód triedy
  • {{query.name}} - vloží názov dotazu
  • {{query.code}} - vloží kód dotazu
  • {{loginuser.id}} - vloží ID prihláseného používateľa. Ak nie je nikto prihlásený, potom je vložené -1.
  • {{loginuser.fullname}} - vloží celé meno prihláseného užívateľa
  • {{loginuser.account}} - vloží účet prihláseného užívateľa
  • {{loginuser.code}} - vloží kód prihláseného užívateľa
  • {{loginuser.email}} - vloží email prihláseného užívateľa

Vkladanie ID do dotazu pomocou vyššie uvedených formúl je vhodné, ak v dotaze vytvárame napr. URL. Hodnota tak bude dynamicky vytvorená, čo je oveľa lepšie, než keď ID do dotazu napíšeme napevno. Neskôr by sme inak mohli mať problém pri prenose dotazu na inú inštanciu systému ObjectGears (testovacie, prevádzkové, ...), kde môžu byť odlišné identifikátory (ID).

Pred uložením dotazu je potrebné vyplniť model, kód, meno a priradiť role. Potom už len stačí kliknúť na tlačidlo Uložiť.

Zmazanie triedy / dotazu

Pre zmazanie triedy / dopytu slúži tlačidlo Zmazať. Pri zložitejších modelov môže byť problém objekt zmazať vzhľadom k závislostiam medzi objektmi. Nemôžeme totiž zmazať objekt, ak sa naň odkazuje iný objekt. Pre vyhľadanie závislostí pre daný objekt (tu triedu / dotaz) môžeme použiť tlačidlo dole na toolbaru Trieda / Väzby objektu alebo Otázka / Väzby objektu.

Prístupové oprávnenia

Pre prácu s triedami a otázky musíme mať oprávnenie administrátora alebo musíme byť nastaveni ako IT vlastník na príslušnom modeli. Ak sme administrátori, potom vidíme všetky definované triedy. Ako IT vlastník vidíme len triedy patriace do modelov, u ktorých sme nastaveni ako IT vlastník.

V ďalšej lekcii, Objekty systému ObjectGears - Stĺpce , si popíšeme stĺpce pre triedu, tj čo sú zač a ako ich vytvoriť.


 

Predchádzajúci článok
Objekty systému ObjectGears - Model
Všetky články v sekcii
Systém ObjectGears
Preskočiť článok
(neodporúčame)
Objekty systému ObjectGears - Stĺpce
Článok pre vás napísal Jan Stodůlka
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v C# a MS SQL serveru.
Aktivity