1. Principy, na kterých NET Genium stojí
NET Genium je aplikační operační systém, který se řídí třemi klíčovými principy:
- Automatická kontrola práv
NET Genium automaticky zajistí, že každý uživatel vidí jen ta data a sloupce, ke kterým má oprávnění. Administrátor se o to nemusí starat, protože systém sám skryje vše, k čemu uživatel nemá přístup.
- Automatická transakční bezpečnost
Veškeré operace probíhají v rámci jedné databázové transakce. Aplikační logika tak nemůže zanechat databázi v nekonzistentním stavu a není možné ukládat data pouze částečně.
- Plně konfigurovatelné chování aplikace
Chování aplikace je určeno konfigurací aplikačních skupin, aplikací, editačních formulářů, nahlížecích stránek a skriptů. Veškerá aplikační logika je tak popsána konfiguračně a není realizována úpravami interního kódu frameworku.
2. Databázové tabulky a editační formuláře
V NET Geniu se databáze nenavrhuje přímo. Místo toho se vše navrhuje pomocí editačních formulářů a framework sám z těchto formulářů automaticky vytvoří a spravuje databázi. Každý editační formulář odpovídá jedné databázové tabulce a stará se o to, co se s jejími záznamy děje – od jejich vytvoření přes úpravy až po automatické ukládání historie změn.
Administrátor v NET Geniu nikdy neupravuje databázovou strukturu ručně, ale pracuje výhradně na úrovni editačních formulářů a jejich ovládacích prvků. Tím je zajištěna dlouhodobá konzistence databáze, zpětná kompatibilita při upgradech aplikací i frameworku a možnost automatických migrací bez ručních zásahů do databáze.
Každá databázová tabulka, která vznikne vytvořením editačního formuláře, obsahuje automaticky základní systémové sloupce:
- Sloupec id je primární klíč záznamu.
- Sloupec userid určuje, který uživatel záznam vlastní.
- Sloupec pid (parent id) obsahuje odkaz na rodičovský záznam a umožňuje vytvářet hierarchické vazby.
- Sloupec pform určuje editační formulář, ve kterém rodičovský záznam vznikl.
- Sloupec system označuje záznamy, které jsou systémové a chráněné.
Díky těmto systémovým sloupcům je možné jednotným způsobem řídit vlastnictví záznamů, hierarchické vazby a ochranu systémových dat napříč celým systémem, bez nutnosti pomocných tabulek nebo dodatečné aplikační logiky.
3. Vlastnictví databázových záznamů a jejich úpravy
V NET Geniu má každý databázový záznam svého vlastníka a podle nastavení editačního formuláře může mít i spoluvlastníky. Uživatelé mohou upravovat nebo mazat pouze ty záznamy, u kterých jsou vlastníky nebo spoluvlastníky.
Zobrazení záznamů se řídí nastavením databázových dotazů u konkrétních ovládacích prvků. Uživatelé tak mohou vidět i záznamy, u kterých nejsou vlastníky nebo spoluvlastníky, typicky například v nahlížecí tabulce. Jakmile však záznam otevřou v editačním formuláři za účelem jeho úpravy, systém vždy uplatní pravidla vlastnictví a umožní zásah pouze do záznamů, ke kterým má uživatel odpovídající práva.
4. Skripty a události
V NET Geniu se skripty spouštějí vždy v konkrétních okamžicích práce uživatele s aplikací. Skript se může spustit při otevření editačního formuláře, při uložení nebo smazání záznamu, případně při kliknutí na tlačítko v editačním formuláři nebo na nahlížecí stránce.
Při otevření editačního formuláře za účelem úpravy záznamu se spustí skript OnAfterOpen. Při ukládání záznamu se postupně spouští skripty OnBeforeSave a OnAfterSave. Při mazání záznamu se obdobně spouští skripty OnBeforeDelete a OnAfterDelete. Tyto události jsou pevně dané a vždy probíhají ve stejném pořadí.
Skript v NET Geniu slouží k provedení konkrétních akcí v těchto bodech, například ke kontrole hodnot, úpravám dat, dopočtům nebo spuštění návazných operací. Skript tak doplňuje chování aplikace v přesně určených okamžicích, aniž by bylo nutné zasahovat do struktury aplikace nebo její konfigurace.
Skript administrátor definuje v grafickém návrháři, a je tvořen posloupností jednotlivých řádků, které se vykonávají shora dolů. Celý skript se vždy vykonává v rámci jedné databázové transakce – buď se provede celý, nebo se neprovede nic. Tím je zajištěno, že skript nemůže zanechat data v neúplném nebo nekonzistentním stavu.
5. Synchronizace dat mezi oddělenými instalacemi
Synchronizace v NET Geniu je řešena na úrovni editačních formulářů, nikoliv na úrovni databází. Přenos dat mezi oddělenými instalacemi tak nevyžaduje sdílenou databázi ani databázovou replikaci.
Na úrovni editačního formuláře je možné nastavit automatickou synchronizaci záznamů do jiných instancí NET Genium. Každý uložený nebo smazaný záznam se může automaticky synchronizovat do jednoho nebo více vzdálených editačních formulářů, a to bez zásahu administrátora a bez nutnosti řešit technické detaily přenosu.
Synchronizace probíhá plně na pozadí jako součást frameworku. Administrátor pouze určí cílové NET Genium a cílový editační formulář, do kterého se mají změny přenášet. Přenášejí se pouze změny vzniklé při uložení nebo smazání záznamů, nikoliv samotné databázové struktury.
Díky tomuto přístupu lze oddělit provozní, mobilní, pobočkové nebo archivní instalace NET Genium a přitom zachovat automatický a řízený přenos dat mezi nimi. Synchronizace je plně řízena frameworkem a nezasahuje do databázové vrstvy jednotlivých instalací.
6. Dlouhodobý provoz a rozšiřitelnost
NET Genium je navrženo jako platforma pro dlouhodobý provoz aplikací, které se v čase přirozeně vyvíjejí. Architektura systému umožňuje rozšiřovat a upravovat aplikace bez nutnosti zásahů do jejich technického základu a bez přerušení provozu.
NET Genium pracuje s jednotným runtime modelem, ve kterém jsou editační formuláře, skripty, transakce i synchronizace vykonávány konzistentním způsobem. Díky tomu je chování aplikací předvídatelné, opakovatelné a nezávislé na konkrétní technické implementaci.
Rozšiřování aplikací probíhá konfiguračně – přidáváním editačních formulářů, úpravou jejich struktury, doplněním skriptů a změnou vazeb mezi jednotlivými částmi aplikace. Tyto změny nevyžadují úpravy databázové struktury ručně ani zásahy do interního kódu frameworku.
Díky oddělení konfigurace aplikace od technické implementace je možné framework průběžně aktualizovat, aniž by bylo nutné měnit existující aplikace. Aplikace si zachovávají své chování a data i při dlouhodobém provozu, zatímco technický základ systému se může vyvíjet nezávisle.
NET Genium tak umožňuje budovat aplikace, které nejsou jednorázovým řešením, ale dlouhodobě udržitelným systémem, schopným růstu, rozšiřování a provozu v řádu let bez nutnosti přepisování nebo nahrazování.
7. Závěrečné shrnutí
NET Genium je navrženo tak, aby aplikace vznikaly popisem dat, chování a vztahů, nikoliv psaním technického kódu. Správce definuje strukturu aplikace pomocí editačních formulářů, nastavuje pravidla vlastnictví, reaguje na události pomocí skriptů a případně propojuje více instalací pomocí synchronizace.
Technické provedení těchto pravidel je plně odpovědností frameworku. Díky tomu zůstávají aplikace stabilní, čitelné a dlouhodobě udržitelné, zatímco technický základ systému se může vyvíjet nezávisle. NET Genium tak slouží jako aplikační operační systém, který umožňuje budovat podnikové aplikace s dlouhou životností bez nutnosti jejich přepisování nebo nahrazování.