Každá reálná aplikace má vrstvu pravidel, která nepohodlně balancuje mezi "konfigurací" a "kódem". Zobraz toto pole jen tehdy, když je zákazníkem firma, ne fyzická osoba. Předvyplň datum faktury na konec aktuálního čtvrtletí. Spočítej celkovou částku jako množství krát jednotková cena minus sleva. Nejde o technické otázky, ale o otázky produktové. A lidé, kteří jim rozumí nejlépe, obvykle nejsou ti, kdo píšou kód. Vložené výrazy dávají odpovědi na tyto otázky přímo do jejich rukou.
Náš výrazový jazyk je součástí platformy od jejích úplných začátků a od té doby postupně roste. Navrhli jsme ho tak, aby byl srozumitelný každému, kdo někdy použil vzorec v tabulce nebo napsal řádek v nějakém běžném skriptovacím jazyce. Zvládá operace, které byste čekali – počítání, práci s textem, datum a časové intervaly, podmínky, práci se seznamy a mapami – a poradí si i se situacemi, na které podnikové aplikace opravdu narážejí: přelomy čtvrtletí, počítání termínů splatnosti v pracovních dnech nebo bezpečné zacházení s prázdnými hodnotami napříč řetězcem provázaných objektů.
Z pouhé kalkulačky dělá tento jazyk něco víc kontext. Stejný výraz může v různých situacích znamenat něco jiného a platforma potřebný kontext doplní sama. Ve formuláři je currentObject právě upravovaný záznam. V automatizaci je to záznam, který automatizaci spustil. V řádku opakující se sekce formuláře je to samotný řádek, přičemž dosáhnete i na jeho nadřazený objekt. V šabloně je to ten objekt, pro který se šablona vykresluje. Napíšete krátký, čitelný výraz a platforma si domyslí, čeho se týká.
Za pozornost stojí, kde všude výrazy použijete – právě to z celého mechanismu dělá živou věc. Podmíněná viditelnost pole – jeden výraz a pole se objeví jen tehdy, když má. Výchozí hodnoty – spočítané při vzniku záznamu, ne natvrdo zadané do formuláře. Validační hlášky, které reagují na to, co uživatel právě napsal. Parametry filtrů v uložených dotazech, takže jeden dotaz může pro jednoho uživatele znamenat "moje úkoly" a pro druhého "úkoly mého týmu". Podmínky automatizací, které rozhodnou, jestli má spuštění pokračovat. Proměnné v šablonách e-mailů a PDF. Řazení v pohledech a vzorce ve sloupcích. Napříč celou platformou tak stejný jazyk umožňuje jednomu člověku nastavit to všechno.
Pár příkladů napoví, jak to vypadá v praxi. Nastavit dueDate na dva týdny od dneška je otázka jednoho řádku. Skrýt pole invoiceVAT, když je zákazník označen jako neplátce DPH, je podmínka viditelnosti daného pole. Spočítat total = quantity * unitPrice - discount je vzorec ve sloupci s celkovou částkou. Ověřit, jestli je přihlášený uživatel v určité roli, než se zobrazí tlačítko, je jedno volání do kontextu uživatele. Omezit nabídku Projects jen na ty, kde je vybraný Customer členem, je vyhledání přes jednu vazbu. To všechno jsou pravidla, která by jinak skončila v backlogu vývojáře – takhle je do pole zadá někdo, kdo má blíž k byznysu.
Vyhledávání napříč typy si zaslouží vlastní zmínku. Protože vazby jsou v datovém modelu plnohodnotnou součástí, výrazy je umí procházet: customer.country.region.name je zcela běžný zápis. Každý krok se vyhodnotí bezpečně a vrátí null, pokud se řetězec někde přeruší, takže chybějící mezihodnota neshodí celý výraz. Právě tahle nenápadná spolehlivost drží logiku na úrovni konfigurace použitelnou i ve velkém.
Výrazy běží v izolovaném prostředí (sandboxu). Nedostanou se k citlivým vnitřnostem systému, nemohou volat vnější síť a mají pevně dané limity času i paměti. Je to záměr: výrazy představují tu méně rizikovou část možností rozšíření – zkušení uživatelé s nimi mohou bezpečně experimentovat a platforma je může bez obav vyhodnocovat i tisíckrát při vykreslení jedné stránky.
Existuje bod, kdy výrazy přestávají být tou správnou odpovědí. Dlouhé řetězce podmínek, koordinace mezi několika záznamy, cokoli, co potřebuje oslovit vnější systém – to už patří automatizacím, případně skriptování na straně serveru. Ta hranice ale leží dál, než většina lidí čeká. Překvapivě velká část reálné aplikační logiky se pohodlně vejde do jediného výrazu, a každý takový případ je o jeden požadavek na vývojáře méně.
Tvůrce automatizací i stránkový nástroj Canvas na tomto jazyce silně stavějí. Nejlepší způsob, jak získat představu, kolik toho lze zvládnout jen konfigurací, je přečíst si o nich spolu s tímto článkem.