Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij podzimní akce 30% výuky zdarma!
Pouze tento týden sleva až 80 % na e-learning týkající se JavaScript
JavaScript týden

Lekce 6 - Objekty systému ObjectGears - Třídy a Dotazy

V minulé lekci, Objekty systému ObjectGears - Model, jsme si popsali objekt Model, který je základní pro vytváření "aplikací" v systému ObjectGears.

Už víme něco o modelu, jakožto "aplikační schránce". Dnes se budeme věnovat třídám a dotazům. Tyto dva objekty mají dost společného a mají podobná nastavení. Proto si je popíšeme najednou.

Třída

Třída je objekt, do kterého se ukládají uživatelské záznamy. Jde o ekvivalent databázové tabulky. Každá třída má sloupce (text, číslo, datum, odkaz,...) a řádky.

Dotaz

Dotaz neobsahuje vlastní data jako třída, ale obsahuje předpis (SQL příkaz), který umožní získat data z jiných tříd či dotazů, transformovat je a vytvořit z nich vlastní záznamy, které si může uživatel zobrazit. Tyto záznamy se nikde neukládají. Načtení záznamů z tříd a dotazů a jejich transformace probíhá pokaždé, když se dotaz zobrazuje.

Zobrazení seznamu tříd/dotazů

Na seznam tříd se dostanete z levého menu Správa / Modely / Třídy, na dotazy pak Správa / Modely / Dotazy. Dále v detailu modelu je na toolbaru odkaz Třídy a Dotazy pro rychlé přepínání mezi třídami a dotazy:

Seznam tříd

Seznam tříd

Na seznamu tříd/dotazů je v horní části filtrovací blok. Vyhledávat můžete podle modelu nebo kódu/názvu třídy/dotazu. Vyberete model a tlačítkem Filtrovat spustíte daný filtr. Vždy tak vidíte třídy/dotazy pouze pro jeden vybraný model. Tlačítkem Vymazat filtr si zobrazíte všechny třídy/dotazy.

Na toolbaru jsou tlačítka:

  • Nový - pro vytvoření nové třídy/dotazu
  • Vytvořit číselníky – (jen u tříd) slouží pro hromadné vytváření podobných tříd
  • Dotazy - (jen u tříd) pro rychlý přechod na dotazy stejného modelu
  • Třídy - (jen u dotazů) pro rychlý přechod na třídy stejného modelu

Vytvořit číselníky

Na seznamu tříd je na toolbaru tlačítko Vytvořit číselníky. Tato funkce nám umožní hromadně vytvořit třídy, které mají podobnou strukturu, například číselníky. Po kliknutí na tlačítko se zobrazí stránka, kde do pole Hodnoty pro číselníky zadáte na každý řádek kód a název pro jednu třídu. Hodnoty oddělte středníkem takto:

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

Pomocí checkboxů pod tímto polem vyberte předdefinované sloupce, které se mají do každé třídy vytvořit. Kliknutím na tlačítko Vytvořit číselníky se požadované třídy i se sloupci vytvoří. Tato funkce je vhodná právě pro číselníky, které většinou obsahují jen sloupce id, kód, název a příznak povoleno, či některou z těchto kombinací. Díky přednastaveným sloupcům tak vytvoříte kompletní třídy nebo alespoň část tříd velmi rychle. Specifické sloupce si pak již doplníte po jednom:

Hromadné vytvoření číselníků.

Hromadné vytvoření číselníků.

Nová třída

Kliknutím na tlačítko Nový na seznamu tříd se zobrazí stránka pro zadání nové třídy. Nastavení třídy má mnoho parametrů, my si ale popíšeme jen ty nejdůležitější. Na ostatní se dostaneme v některém dalším díle, až budeme popisovat další funkcionalitu a objekty systému ObjectGears.

Sekce Základní vlastnosti

Sekce se nachází v záložce Základní vlastnosti a má následující pole k vyplnění:

  • Model – Model, ve kterém bude třída vytvořena.
  • Kód – Kód třídy pro práci ve skriptech.
  • Jméno – Název třídy, je možné jej zadat lokalizovaně.
  • Poznámka – Poznámka pro vývojáře. Nikde se nezobrazuje.

Sekce Správa záznamů

Zde nastavíme operace, které budou moci uživatelé se třídou provádět pomocí GUI:

  • Povolit vložení záznamů – uživatelé mohou vytvářet nové záznamy
  • Povolit změny záznamů – uživatelé mohou měnit záznamy
  • Povolit zobrazení seznamu dat – je povoleno zobrazení záznamů formou seznam záznamů
  • Povolit zobrazení detailu dat – je povoleno zobrazení detailu jednoho vybraného záznamu
  • Povolit zobrazení detailu dat v seznamu – je povoleno zobrazit detailní seznam záznamů (karty se všemi sloupci)

Detail nové třídy vypadá následovně:

Detail nové třídy

Detail nové třídy

Dále máme k dispozici vybalovací menu, popíšeme si, co dělá každá položka z nich:

  • Způsob mazání záznamů
    • Fyzicky mazat záznamy – záznam bude kompletně vymazán z databáze
    • Logické mazání záznamů – záznam bude pouze označen příznakem, že je smazán
    • Nepovolit mazání záznamů – záznamy není možné mazat
  • Typ dotazu před smazáním záznamů
    • Bez potvrzení – smazání záznamu proběhne okamžitě po kliknutí na tlačítko Smazat
    • S potvrzením – uživatel bude nejdříve dotázán, zda chce záznam opravdu smazat
  • Povolit zobr. smazaných záznamů v seznamu – při povolení této položky bude v seznamu záznamu (v sekci s filtrem) zobrazen checkbox pro zobrazení i smazaných záznamů.
  • Omezení mazání
    • Bez omezení
    • Záznam nelze smazat, pokud je odkazován – při nastaveném logickém mazání, před vlastním smazáním proběhne kontrola, zda na mazaný záznam není odkaz z jiné třídy. Při fyzickém mazání nelze záznam smazat, pokud na něj odkazuje jiný záznam. Nejprve je třeba smazat odkazující se záznam nebo ho aktualizovat, aby neodkazoval na záznam, který chceme smazat.

Záložka Role a zobrazení

V záložce Role a zobrazení můžeme nalézt tyto nastavení:

  • Zobrazit ve výchozím menu – Pokud pro model použijete výchozí nastavení menu, pak při zaškrtnutí tohoto nastavení bude třída zobrazena v menu.
  • Řadit dle sloupce X – Nastavení řazení se projeví při zobrazení seznamu záznamů. Řadit můžete dle libovolného sloupce a vzestupně nebo sestupně.
  • Povolit navigaci na formuláři – Toto nastavení zobrazí v detailu jednoho záznamu navigační prvek, pomocí kterého můžete přecházet na předchozí a následující záznamy.
  • Zobrazit číslování řádek v seznamu – V zobrazení seznamu záznamů bude každý řádek očíslován (od 1.).

Formát záznamu

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Každý záznam má krátký popis (ShortDescrip­tion) a do něj je uložen textový popis záznamu. Ten může být složen z libovolných sloupců třídy daného záznamu. Definice určující, jak bude ShortDescription vytvořen, se zadává do pole Formát popisu. Tento ShortDescription se pak používá jako textový identifikátor záznamu, např. při výběru záznamů v ComboBoxech nebo vyhledávacích formulářích.

Do Formátu popisu se do dvou složených závorek {{…}} píší kódy sloupců, ze kterých chceme krátký popis vytvořit. Text mimo závorky bude vložen do výsledku také. Předpokládejme, že máme třídu se státy a se sloupci code a name. Pak můžeme vytvořit třeba tyto 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

Pokud formát nevyplníme, tak bude zobrazeno FULLID, což je kombinace ID třídy a ID záznamu, které je jedinečné přes celou instanci systému ObjectGears. Pokud je ID třídy 100 a ID záznamu 200, pak by FULLID bylo <100-200>.

Sekce Seznam rolí

Zde si popíšeme pouze nastavení Role a Operace. ObjectGears umožňuje detailní nastavení oprávnění na jednotlivé záznamy využívající organizačních struktur a přebírání oprávnění z odkazovaných záznamů, ale o tom si povíme až někdy příště.

Pro každou roli můžeme vybrat operace, které chceme povolit. Tlačítkem Přidat roli ke třídě přiřadíme roli. Nezapomeňme nakonec ještě kliknout na tlačítko Uložit, aby se vše uložilo do databáze:

Seznam rolí ve třídě

Záložka Doplňující nastavení

V této záložce máme zaškrtávací pole, popíšeme si pouze ty první dvě:

  • Povolit hromadné změny – po zaškrtnutí bude moci uživatel (bude-li mít oprávnění) hromadně měnit více záznamů najednou
  • Povolit hromadné smazání - tohle dělá to samé, ale namísto změny je bude moct mazat
Doplňující informace na třídě

Sekce Archivace

V této sekci můžeme nalézt další zaškrtávací pole:

  • Povolit archivaci dat – po zaškrtnutí se budou všechny změny ve třídě logovat do archivační tabulky
  • Zobrazit archivační tlačítko v seznamu dat – na stránce se seznamem záznamů bude tlačítko pro prohlížení archivních záznamů
  • Zobrazit archivační tlačítko v detailu dat – na stránce s detailem záznamu bude tlačítko pro prohlížení archivních záznamů pro konkrétní záznam

Sekce vypadá takto:

Archivace na třídě

Všimněte si, že pouhým zaškrtnutím checkboxu získáme historii změn ve třídě.

Zapnutá historie u tabulek, které se často mění může způsobit velmi rychlý nárůst velikosti databáze. Používejte tedy historii uvážlivě a jen tam, kde má opravdu smysl. V ObjectGears můžete využít také automatické čištění logů, které umožňuje nastavit promazávání starých záznamů.

Sekce Jedinečnost sloupců

V této sekci máme na výběr tři ComboBoxy a jedno textové pole:

  • Sloupec 1, 2, 3 – nastavení kombinace až tří sloupců, které musejí být ve třídě jedinečné
  • Popis chyby – textové hlášení, které se zobrazí uživateli při pokusu o uložení duplicitního záznamu

Sekce vypadá následovně:

Jedinečnost sloupců na třídě

Tato funkce je vhodná, pokud potřebujeme ve třídě nastavit jedinečnost záznamů podle 1-3 sloupců. Pokud má být jedinečnost složitější, pak máme k dispozici objekt Pravidla.

Toto je základní přehled vlastností, se kterými si prozatím vystačíme. Kliknutím na tlačítko Uložit už jen novou třídu uložíme do databáze.

Nový dotaz

Pro dotazy si popíšeme jen nastavení, která jsou specifická pro dotaz. Ostatní pole shodná se třídou zde přeskočíme.

Kliknutím na tlačítko Nový na seznamu dotazů se zobrazí stránka pro zadání nového dotazu.

Záložka Definice dotazu

SQL – SQL příkaz s definicí dotazu.

Příklad

Tento dotaz vrátí všechny role definované v systému ObjectGears:

SELECT * FROM Role r

Dotaz SQL odpovídá jazyku SQL používaném na SQL Serveru. Je zde ale několik odlišností.

Při odkazu na třídu nebo dotaz použijeme tento příkaz:

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

kde x je pojmenování třídy/dotazu v SQL.

Jako názvy sloupců se nepoužívá vlastnost sloupce Sloupec v DB, ale Kód sloupce:

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

V dotazech můžeme použít i klauzuli WITH:

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

V dotazech můžeme používat přímo tabulky z databáze, třídy (pomocí {{: class.kod_tridy :}}) nebo jiné dotazy (pomocí {{: query.kod_dotazu :}}).

Jako další proměnné lze v dotazu například:

  • {{:model.id:}} – vloží ID aktuálního modelu, ve kterém je dotaz vytvořen
  • {{:class.kod_tridy.id:}} – vloží ID třídy
  • {{:query.kod_dotaz.id:}} – vloží ID dotazu
  • {{app.parameter.kod_parametru}} – vloží hodnotu aplikačního parametru
  • {{model.name}} – vloží název modelu
  • {{model.code}} – vloží kód modelu
  • {{model.parameter.kod_parametru}} – vloží hodnotu parametru z modelu
  • {{column.kod_sloupce.name}} – vloží název sloupce
  • {{column.kod_sloupce}} – vloží hodnotu ze sloupce pro aktuální záznam
  • {{class.name}} – vloží název třídy
  • {{class.code}} – vloží kód třídy
  • {{query.name}} – vloží název dotazu
  • {{query.code}} – vloží kód dotazu
  • {{loginuser.id}} – vloží ID přihlášeného uživatele. Pokud není nikdo přihlášen, pak je vloženo -1.
  • {{loginuser.fullname}} – vloží celé jméno přihlášeného uživatele
  • {{loginuser.account}} – vloží účet přihlášeného uživatele
  • {{loginuser.code}} – vloží kód přihlášeného uživatele
  • {{loginuser.email}} – vloží email přihlášeného uživatele

Vkládání ID do dotazu pomocí výše uvedených formulí je vhodné, pokud v dotazu vytváříme např. URL. Hodnota tak bude dynamicky vytvořena, což je mnohem lepší, než když ID do dotazu napíšeme napevno. Později bychom jinak mohli mít problém při přenosu dotazu na jinou instanci systému ObjectGears (testovací, provozní,...), kde mohou být odlišné identifikátory (ID).

Před uložením dotazu je potřeba vyplnit model, kód, jméno a přiřadit role. Pak již jen stačí kliknout na tlačítko Uložit.

Smazání třídy/dotazu

Pro smazání třídy/dotazu slouží tlačítko Smazat. U složitějších modelů může být problém objekt smazat vzhledem k závislostem mezi objekty. Nemůžeme totiž smazat objekt, pokud se na něj odkazuje jiný objekt. Pro vyhledání závislostí pro daný objekt (zde třídu/dotaz) můžeme použít tlačítko dole na toolbaru Třída / Vazby objektu nebo Dotaz / Vazby objektu.

Přístupová oprávnění

Pro práci s třídami a dotazy musíme mít oprávnění administrátora nebo musíme být nastaveni jako IT vlastník na příslušném modelu. Pokud jsme administrátoři, pak vidíme všechny definované třídy. Jako IT vlastník vidíme jen třídy patřící do modelů, u kterých jsme nastaveni jako IT vlastník.


 

Předchozí článek
Objekty systému ObjectGears - Model
Všechny články v sekci
Systém ObjectGears
Článek pro vás napsal Jan Stodůlka
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor se věnuje programování v C# a MS SQL serveru.
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!