1. Filosofie návrhu frameworku
NET Genium není jen low-code nástroj, ale aplikační operační systém, který:
- sjednocuje práci s daty, uživateli, oprávněními a historií,
- zajišťuje transakční bezpečnost bez nutnosti psát aplikační kód,
- odděluje konfiguraci chování aplikace od programového kódu.
Zásadním principem je:
Správce definuje strukturu a chování aplikace, runtime zajišťuje technickou realizaci.
2. Automaticky spravované databázové vrstvy
2.1 Databázová abstrakce formuláře
Každý editační formulář:
- reprezentuje jednu databázovou tabulku,
- vlastní životní cyklus záznamu (create / update / delete),
- má automaticky generovanou historii.
Správce:
- nikdy neupravuje databázovou strukturu ručně,
- pracuje výhradně na úrovni formuláře a ovládacích prvků.
Tím je zajištěna:
- konzistence databáze,
- zpětná kompatibilita při upgradech,
- možnost automatických migrací.
2.2 Systémové sloupce jako nositelé aplikační logiky
Sloupce id, userid, pid, pform, system nejsou technickým detailem, ale základem aplikační logiky:
- userid – vlastnictví a editovatelnost
- pid + pform – stromové a hierarchické vazby
- system – ochrana kritických záznamů
Díky tomu lze:
- řídit oprávnění bez explicitních ACL tabulek,
- vytvářet hierarchie bez joinových tabulek,
- aplikovat jednotná pravidla napříč celým systémem.
3. Vlastnictví a spoluvlastnictví jako bezpečnostní model
NET Genium používá datově orientovaný bezpečnostní model, nikoliv roli-based model známý z klasických aplikací.
3.1 Záznam jako primární bezpečnostní jednotka
Práva nejsou definována jen:
- „k formuláři“ nebo
- „k tabulce“,
ale ke konkrétnímu databázovému záznamu.
To umožňuje:
- sdílené pracovní záznamy,
- individuální odpovědnost,
- auditní stopu bez další konfigurace.
3.2 Spoluvlastnictví jako nástroj týmové práce
Spoluvlastnictví:
- není atributem záznamu,
- je vlastností formuláře.
Tím je zajištěno, že:
- bezpečnostní pravidla jsou konzistentní,
- nedochází k fragmentaci oprávnění,
- změna politiky se projeví okamžitě.
4. Skript jako deterministický procesní jazyk
4.1 Skript není programovací jazyk
Skript:
- neobsahuje bloky,
- neobsahuje lokální scope,
- neobsahuje výjimky v programátorském smyslu.
Je to:
deterministický procesní zápis nad daty a událostmi.
4.2 Skript jako transakční orchestr
Každý skript:
- běží v kontextu jedné databázové transakce,
- buď proběhne celý, nebo se neprovede nic,
- nemůže „napůl uložit“ data.
Tím je zajištěno:
- konzistentní stav databáze,
- předvídatelné chování,
- bezpečné zpracování i složitých procesů.
5. Oddělení runtime odpovědnosti
NET Genium striktně odděluje:
- co se má stát (konfigurace, skript, dotaz),
- jak se to provede (runtime, engine, C#).
Důsledky:
- správce řeší logiku, ne implementaci,
- vývoj externích funkcí řeší výkon a výjimky, ne aplikační kontext,
- aktualizace frameworku nevyžaduje změny aplikací.
6. Koncepce synchronizace a distribuovaných instalací
Synchronizace není replikace databáze, ale:
přenos změnových operací.
Díky tomu:
- lze provozovat více aktivních instancí (multiple master),
- nedochází ke konfliktům na úrovni databázových engine,
- lze oddělit provozní, mobilní a archivní prostředí.
7. Konfigurační soubory jako systémové přepínače
Konfigurační soubory:
- nejsou nastavením aplikace,
- ale řízení chování runtime prostředí.
Jejich existence má binární význam:
- bezpečnostní režimy,
- provozní omezení,
- diagnostické chování.
Tento přístup umožňuje:
- změnu chování bez restartu databáze,
- jasnou auditovatelnost,
- oddělení provozu od konfigurace aplikací.
8. Pro koho je tato příručka určena
Tento dokument je určen pro:
- systémové architekty NET Genium,
- administrátory navrhující rozsáhlé aplikace,
- vývojáře externích funkcí,
- technickou podporu a onboarding nových partnerů.
Není určen pro:
- běžné administrátory,
- koncové uživatele,
- marketingové účely.
Závěrečné shrnutí
NET Genium je navrženo jako stabilní, deterministický a auditovatelný aplikační framework, kde:
- data jsou primární,
- procesy jsou konfigurovatelné,
- runtime zajišťuje bezpečnost a konzistenci.
Tato příručka slouží jako most mezi dokumentací „jak se to používá“ a znalostí „jak to funguje“.