Jetstack
Zpět na blog Blog

Objektový model — základ, na kterém platforma stojí

Publikováno 1. března 2021

Technická ilustrace k článku Jetstacku

Většina týmů, které vybírají firemní software, naráží na stejné nepříjemné rozhodování. Na jedné straně stojí hotové řešení z krabice, které pokryje možná šedesát procent vaší práce a zbytek firmy si musíte ohnout kolem něj. Na druhé straně software na míru — měsíce vývoje, vlastní tým a tichá obava, kdo to bude za dva roky udržovat. Obě cesty mají své místo. My jdeme ale jinou.

Naše platforma nabízí třetí možnost: čistý list, na kterém si každý zákazník navrhne vlastní datový model, a k tomu kompletní zázemí — oprávnění, pohledy, formuláře, vyhledávání, API, automatizace —, které se objeví ve chvíli, kdy nadefinujete typ. Právě tady, u objektového modelu, to všechno začíná.

Model stojí na čtyřech jednoduchých stavebních kamenech. Modul je hlavní část aplikace, zhruba odpovídá jedné obrazovce nebo oblasti; moduly se objevují v hlavní navigaci a seskupují související obsah. Typ je definice entity — Zákazník, Faktura, Úkol — a popisuje, jak vypadají záznamy daného druhu. Vlastnost je pole na tomto typu; nese datový typ, pravidla kontroly, nastavení zobrazení, oprávnění i editační prvek. A objekt je jeden konkrétní záznam, tedy skutečná instance typu.

Představte si malou poradenskou firmu, která si staví jednoduché CRM. Vytvoří modul Klienti. V něm nadefinuje typ Zákazník s vlastnostmi pro jméno, e-mail, adresu a stav vztahu. O týden později přidá typ Zakázka — propojený se Zákazníkem přes odkazovou vlastnost —, aby evidovala jednotlivé práce. Pokaždé, když uloží změnu, platforma na pozadí upraví formuláře, seznamy, vyhledávání i API. Žádné nasazování, žádný kód, žádný skript na migraci dat.

Na stejném principu běží i platforma samotná. Uživatelé, role, dotazy i pohledy jsou také objekty — definují je systémové typy, které vypadají a chovají se stejně jako typy, jež si vytvoříte vy. Ta jednotnost má svou hodnotu: když se naučíte pracovat s vlastním datovým modelem, umíte zároveň ovládat i administrativní vrstvu platformy. Nikdy nepůsobí jako dva slepené produkty.

Jakmile typ existuje, spousta věcí přijde sama. Formulář pro vytváření a úpravu záznamů. Tabulkový pohled s řazením a filtrováním. Fulltextové vyhledávání v jeho textových vlastnostech. Oprávnění podle rolí až na úroveň jednotlivých polí. REST endpoint. Webhook, který můžete odebírat. Spouštěč, na který se napojí automatizace. Nic z toho nemusíte propojovat ručně — a právě o to jde. Každý nový typ zdědí funkce, které by se v běžném vývoji musely programovat celé roky.

Klasický vývoj to nenahradí v každé situaci. Systémy s neobvyklými nároky na výkon, se speciálním uživatelským rozhraním nebo s hlubokým napojením na starší infrastrukturu si někdy o řešení na míru řeknou. Ale pro tu velkou skupinu firemních aplikací, které se dají shrnout do "evidovat tyhle věci, nechat s nimi pracovat tyhle lidi a propojit to s támhletěmi systémy", platí jedno: s objektovým modelem to přestává být projekt a stává se z toho práce na jedno odpoledne.

Odsud je dobré pokračovat ke knihovně vlastností — právě volbou správných typů vlastností se z dobrého modelu stává výborný.