Funkce a pravidla: Základní kameny automatizací

Avatar
Martin Večeřa

Funkce a pravidla jsou klíčovými částmi automatizace v Lumeerovi. S jejich použitím můžete Vy i celý Váš tým ušetřit značné množství času. Budete se moci zbavit mnoha aktualizačních e-mailů a schůzek.

Automatizace pro vás mohou udělat spoustu práce jako je odesílání pravidelných zpráv, připomenutí vašich úkolů, přesunutí procesu do jiného stavu, upozornění kolegy atd.

Funkce a pravidla v Lumeerovi se nastavují velmi snadno. Jsou konfigurovány vizuálním způsobem, který je pro lidi přirozený, takže každá funkce a pravidlo jsou snadno pochopitelné. Funkce a pravidla v Lumeerovi sdílejí stejné koncepty a existuje jen několik obecných zásad, které je dobré znát.

Kde lze použít funkce a pravidla?

Jak možná víme, existuje pět typů automatizačních nástrojů:

  1. Odkazy, které jsou automaticky vytvářeny mezi tabulkami na základě odpovídajících hodnot záznamů.
  2. Funkce, které vypočítávají hodnoty ve sloupci v tabulkách i v odkazech,
  3. Pravidla, která provádějí akce na základě určitých událostí (vytvoření, aktualizace, odstranění) záznamů v tabulce a nebo propojení mezi dvěma záznamy.
  4. Akce, které jsou podobné pravidlům, ale jsou prováděny, když uživatel klikne na akční tlačítko.
  5. Časovače, které jsou opět podobné pravidlům, ale jsou prováděny na základě předdefinovaných podmínek časování.

Podívejme se, kde jsou tyto automatizace nakonfigurovány.

1. Odkazy

Automatizované odkazy jsou nejjednodušší z automatizací. Ve skutečnosti nepotřebují žádné níže uvedené bloky. Můžete k nim přistupovat v nastavení tabulky. Vše, co musíte udělat, je zadat:

  1. Typ odkazu, který chcete použít pro automatické vytváření odkazů,
  2. dva odpovídající sloupce z propojené tabulky.

Pokud je v odpovídajících sloupcích v obou tabulkách stejná hodnota, vždy se automaticky vytvoří nový odkaz mezi záznamy (řádky tabulky).

pravidlo automatické vazby

2. Funkce

Funkce lze použít k výpočtu hodnot záznamů v tabulkách nebo v odkazech (odkazy mohou mít také hodnoty). Ty jsou obvykle konfigurovány v záhlaví tabulky. Existuje však několik dalších míst, kde lze konfigurovat funkce, jako je zobrazení detailu, dialog s detailem nebo panel s detailem záznamu.

konfigurace funkce tabulky
Upravit funkci: Položka nabídky v záhlaví tabulky

Funkce používají bloky, které jsou popsány níže. V rámci funkcí máte přístup k aktuálnímu záznamu (řádek) a všem jeho atributům (sloupcům). Pomocí odkazů můžete také získat hodnoty z propojených záznamů.

Jedna důležitá věc, kterou je třeba poznamenat, je, že funkce se počítají pouze tehdy, když se změní některé z hodnot, na kterých závisí. Můžete být v pokušení vypočítat relativní hodnoty, jako je počet dní ode dneška. Tyto hodnoty však nebudou aktualizovány, když se datum změní.

Místo funkcí můžete v takovém případě použít časovač.

konfigurace funkce typu odkazu
Upravit funkci: Položka nabídky v záhlaví atributu odkazu

Výsledkem funkce musí být hodnota, která je automaticky přiřazena ke konkrétnímu atributu (sloupci) záznamu. Sada bloků ve funkcích je proto omezena na ty, které jsou schopné vracet hodnoty.

Pokud potřebujete například složitější výpočty s cykly, doporučujeme použít pravidla.

Stejná funkce je vždy použita na celý sloupec, aby se zabránilo chybám kvůli neúplným rozsahům.

3. Pravidla

Pravidla jsou podobná funkcím a lze je také použít v tabulkách i v odkazech. Reagují na různé události a vždy pracují s celými záznamy. Těmito událostmi jsou vytváření, aktualizace a mazání záznamů nebo odkazů.

konfigurace pravidel v nastavení tabulky
Pravidla tabulky v nastavení tabulky

V rámci pravidel máte přístup k předchozímu a aktuálnímu stavu záznamu.

Když je pravidlo spuštěno vytvořením záznamu, předchozí stav je prázdný. Na druhou stranu, když je pravidlo spuštěno odstraněním záznamu, aktuální stav je prázdný.

Pravidla jsou vždy provedena po provedení změny. Změnu nelze zakázat ani blokovat pomocí pravidla. Je však možné vrátit hodnoty záznamu do jejich původního stavu.

Pro pravidla je k dispozici úplná sada bloků. Bloky, které nejsou připojeny k vnějšímu zapouzdřovacímu bloku (označený Se záznamem/odkazem v …), se však neprovedou. Takové bloky mohou ve skutečnosti způsobit úplné selhání pravidla.

konfigurace pravidel vazby
Pravidla typu vazby v nastavení tabulky

Změna provedená pravidlem nespustí jiná pravidla, pokud není zaškrtnuto políčko Rekurzivní. Nemůžete ale pokračovat v provádění pravidel neomezeně.

Lumeer vždy vypočítá, které automatizace je třeba provést na základě události, která se stala. Poté provede všechny automatizace v daném pořadí. Na základě rekurzivního parametru může Lumeer vyhodnotit změny ještě jednou, vypočítat novou sadu automatizací a provést je ještě jednou.

V tuto chvíli ale skončí a dál nejsou prováděny žádné další automatizace, aby se zabránilo nekonečným smyčkám.

4. Akce

Akce jsou v zásadě stejné jako pravidla. Pravidlo lze využít zárověň jako pravidlo spuštěné změnou záznamu, tak i jako pravidlo vyvolané pomocí akčního tlačítka.

Jednoduše řečeno, akce jsou pravidla, která nemusí být nastavena na žádné spouštěcí události. Mohou být vyvoláváná čistě pomocí tlačítka.

Pro akce platí stejné podmínky týkající se rekurzivního parametru jako pro pravidla.

5. Časovače

Časovače jsou také stejné jako pravidla. Jsou prováděny za předdefinovaných časovacích podmínek.

Hlavní rozdíl je v tom, že časovač musí načíst záznamy, se kterými bude pracovat. Důvodem je, že časovače nejsou spouštěny v důsledku změny dat.

pravidla časovače

Můžete buď určit zobrazení, které se používá k získání všech dat, nebo můžete použít odpovídající blok ke čtení záznamů.

Důrazně doporučujeme vždy vytvořit pohled s velmi jemnými a úzce specifikovanými filtry. Tím je zajištěno, že do časovače jsou předávány pouze potřebné záznamy.

To je důležité ze dvou důvodů – spotřeba paměti a doba provádění. Všechny funkce a pravidla, včetně akcí a časovačů, mají omezenou dobu provádění 3 sekundy a dokážou přečíst maximálně 1 000 dokumentů.

Pokud pro vás byla tato omezení zásadní, kontaktujte nás.

Pokročilé ladění

Pro technické uživatele a správce je k dispozici několik nástrojů pro ladění ve funkcích a pravidlech.

ladicí nástroje ve funkcích a pravidlech

Zleva doprava můžete vidět zaškrtávací políčko pro zapnutí běhu na nečisto. Tímto způsobem je pravidlo provedeno jako obvykle, ale nejsou zapsány žádné datové operace. K výsledkům běhu na nečisto se pak dostanete pomocí druhé ikony zprava.

Další je ikona, která vám ukazuje poslední chybu zaznamenanou během provádění pravidla. Všimněte si prosím doby, kdy byla hlášena, abyste se ujistili, že opravdu vidíte nedávnou výjimku.

Následuje ikona, která vám ukazuje zdrojový kód pravidla. Bloky jsou interně přeloženy do JavaScriptu a zdrojový kód může pokročilým technickým uživatelům poskytnout nápovědu k tomu, co se pokazilo.

Můžete také vypočítat řádky ve zdrojovém kódu, abyste získali přibližné místo, kde dochází k chybě.

Jak vytvořit pravidlo?

Nyní se detailně podíváme na to, jak bloky pravidel fungují.

Na Obrázku 1 můžeme vidět příklad poměrně komplexního pravidla. Jak si můžete všimnout, podobá se skládačce (puzzle).

Obrázek 1.

Každý jeden dílek skládačky se nazývá Blok. Bloky mají ouška (na svojí levé straně), šipky (na spodním okraji), kulaté otvory pro ouška (na pravo) a trojúhelníkové otvory (na horním okraji). Jako u běžné skládačky, žádné otvory ani ouška nejsou na okraji (na obvodu) skládačky. Celý obvod je krásně rovný.

Tok informací

Vytváření vlastních Funkcí a Pravidel je jednodušší, pokud porozumíte toku informací mezi jednotlivými Bloky.

Hodnoty (tedy obsah jednotlivých buněk v Tabulkové Perspektivě) jsou vždy sbírání na jednom řádku Bloků zprava doleva. Následující Blok poskytuje hodnotu (Záznam) na svojí levé levé straně (proto má vlevo ouško) a musí být připojen k Bloku, který má na své pravé straně příslušný otvor (tedy k Bloku, který očekává vstup).

Obrázek 2.

Jak jsme již zmínili, otvor na pravé straně Bloku očekává připojení nějakého vstupu.  Na následujícím příkladu můžete vidět Blok, který očekává seznam Hodnot, transformuje je na jejich součet a tento vrací na své levé straně.

Obrázek 3.

Ve Funkcích nejsou k dispozici žádné Bloky, které mají šipku nebo otvor na své horní nebo spodní straně. Proto je následující části platná pouze pro Pravidla.

Příkazy

Tato část se vztahuje pouze k Pravidlům.

Existuje druhý typ toku a tím je postup v čase, neboli tok času, který v Pravidlech postupuje shora dolů. Jednotlivé řádky Bloků tvoří příkazy, které se provádějí jeden po druhém shora dolů.

To můžeme pozorovat například na Obrázku 1. Postup je následující:

  1. Je proveden růžový Blok nastavit k na. Tento Blok nastaví proměnnou k na hodnotu Bloku, který je připojen na jeho pravé straně. V tomto případě se jedná o text “Seznam prací: “. Více o proměnných naleznete dále v této kapitole.
  2. Následně je spuštěn červený Blok pro každý záznam i v. Tento Blok přijímá na svém vstupu seznam Záznamů a spouští své vnitřní Bloky opakovaně pro každý Záznam ze vstupního seznamu zvlášť. Na každý Záznam je tedy aplikována následující posloupnost kroků:
    1. Připoj Hodnotu Atributu Titul k proměnné k.
    2. Připoj text “, “ k proměnné k.
  3. Nyní máme seznam všech titulů ze všech ZáznamůTabulce Práce, které jsou připojené k hlavnímu ZáznamuTabulce Studenti. Tento seznam jsme vytvořili v proměnné k. Následující Blok nastav Práce v očekává dva vstupy. Nejdříve Záznam, se kterým budeme pracovat, a dále Hodnotu (obsah proměnné k), kterou vložíme do Atributu Záznamu, který vybereme v rozbalovací nabídce (tedy Atribut Práce).

Proměnné

Tato část se vztahuje pouze k pravidlům, protože ve Funkcích nejsou proměnné k dispozici.

Existují příkazy, které mohou číst a zapisovat proměnné. Proměnnou si můžete představit jako poznámku na papírku vedle vašeho počítače, kam si zapíšete poznámku – obsah proměnné. Každý papírek představuje jednu proměnnou a každý papírek má svůj název/pojmenování, abychom dokázali papírky od sebe snadno odlišit. Proměnné tak zjednodušují zápis Pravidel, abychom nemuseli stejnou Hodnotu získávat opakovaně, pokaždé, když ji potřebujeme. Změna proměnné nemění původní HodnotuZáznamu.

Obálka

Oboje – funkce a pravidla – potřebují svůj obalovací Blok. Vlevo můžeme vidět obalovací Block pro Pravidlo, vpravo pak pro funkci.

Obrázek 4.

Všechny Bloky, které umístíte na plochu musí být ve výsledku spojené k obalovacímu Bloku (buď přímo, nebo přes jiné Bloky). Bloky, které zůstanou rozmístěné a nepřipojené, způsobí, že Funkce nebo Pravidla nebudou fungovat.

Práce s údaji

Pojmy

Abychom snadno porozuměli způsobu práce s údaji, je dobré se shodnout na společných pojmech a jejich významu. Pokud již neznáte pojmy jako Tabulka, Záznam, Atribut, Hodnota apod. doporučujeme vám si nejdříve přečíst kapitolu Práce s údaji v příručce Základní informace.

Bloky se záznamy

Nejlepší způsob, jakým začít tvořit vaši Funkci nebo Pravidlo, je s Blokem, který představuje aktuální Záznam (také označován jako Dokument). V případě Pravidel máte k dispozici dva takové Bloky. Jeden pojmenovaný newDocument a druhý oldDocument. Tyto Bloky představují stav Záznamu před změnou a po změně, aby je bylo možné například porovnat a zjistit, jestli se sledovaný Atribut změnil. V případě Funkcí je k dispozici jen jeden Blok s názvem thisDocument.

Pokud Pravidlo reaguje na vytvoření Záznamu je oldDocument prázdný, pokud reaguje na smazání Záznamu, je newDocument prázdný.

Obrázek 5.

Blok na Obrázku 5 představuje jeden celý Záznam (tj. řádek v Tabulkové Perspektivě). Tento Záznam je dostupný na levé straně Bloku. Abychom z Bloku zjistili Hodnotu konkrétního Atributu, musíme použít Blok na čtení Atributů.

Obrázek 6.

Nyní jsme získali jednu HodnotuAtributu “Jméno”, která je nyní k dispozici na levé straně Bloku pro čtení. Zkusme něco jiného a podívejme se, jak můžeme získat připojené Záznamy. K tomuto účelu slouží Blok s Vazbou, který připojíme k Bloku se Záznamem.

Obrázek 7.

Všimněme si nyní důležitého rozdílu mezi situacemi na Obrázku 6 a 7. Na levé straně šedého Bloku Vazby na Obrázku 7 se nyní nachází seznam Záznamů. Je to z toho důvodu, že každý Záznam může být připojen na libovolné množství dalších Záznamů. Všimněte si také, jak tok informací postupuje zprava doleva. Je to přesně opačný směr, než jak údaje vidíme v propojených tabulkách. 

Tip: Jaký je důvod opačného směru? Pokud bychom chtěli v Blocích dodržet stejný směr toku informací jako v Tabulkové Perspektivě, museli bychom také otočit obalovací Bloky. Pokud by byly tyto obalovací Bloky obráceně, působily by velmi nepřirozeně a pochopení smyslu Funkce a Pravidla by bylo mnohem náročnější. Funkce by také musely fungovat přesně opačně než v matematice (psali bychom f(y)=x namísto y=f(x)).

Smyčky

Skutečnost, že Blok Vazby získává více Záznamů ovlivňuje fungování další navázaných Bloků. Připojme Blok pro čtení Atributu.

Obrázek 8.

Protože Blok pro čtení začíná se seznamem Záznamů, vrací také seznam, avšak seznam Hodnot vybraného Atributu (“Titul”) ze všech Záznamů. Můžeme nyní použít různé Bloky pro spojení Hodnot do jednoho dlouhého textu, nebo pro výpočet sumy apod.

Je zde však jeden nedostatek. Pokud bychom použili tento přístup pro získání několika seznamů Hodnot, nedokážeme zjistit, které dvě Hodnoty z jednoho a druhého seznamu pocházejí původně z jednoho Záznamu (kdybychom například násobili počet kusů zboží s jeho cenou). Pro tento účel existuje Blok pro procházení seznamů Záznamů. Uvnitř tohoto Bloku můžeme přistupovat ke všem Atributům jednoho Záznamu pěkně popořadě (viz Obrázek 9).

Obrázek 9.

Tato situace je patrná na Obrázku 9. Pravidlo nejdříve nastaví nulu do proměnné crossProduct. Poté prochází všechny Záznamy připojené k ZáznamuTabulky “Zaměstnanci” pomocí Vazby se jménem “umístění”. Bloky uvnitř Bloku pro procházení seznamu (pro každý záznam…) se provádí pro každý připojený Záznam. Bloky přičtou (přidají) výsledek násobení Atributů “Plat”“Měna” do proměnné crossProduct. Proměnná i představuje jeden aktuální Záznam ze seznamu Záznamů, takže když čteme dva různé Atributy této proměnné, vždy jsou ze stejného Záznamu.

Na posledním Obrázku (Obrázek 10) je vizuálně znázorněn význam jednotlivých Bloků a toho, jak pracují s údaji.

Obrázek 10.