Změny stavu (přechody)
Tato stránka popisuje změny stavu — povolené cesty mezi stavy workflow — a pořadí, ve kterém se při změně stavu vyhodnocuje navázaná logika (handlery).
O funkci
Změna stavu (přechod) definuje, že záznam smí přejít z jednoho stavu do druhého — například z „Nová" do „Probíhá". Na přechod se věší veškerá aplikační logika: kontroly, které rozhodují, zda je změna možná, a kroky, které se po změně vykonají. Právě konfigurací přechodů se řídí, „co se v systému stane", když uživatel (nebo automatizace) záznam posune dál.
Nastavení přechodu
- Název — zobrazovaný název změny stavu (např. „Zrušit zpracování").
- Kód — identifikátor přechodu.
- Výchozí stavy — stavy, ze kterých přechod vede. Jeden přechod může vést z několika stavů najednou — například změna „Vrátit" ze stavů „Odeslaná" i „Doručená" — takže stejnou logiku nemusíte zakládat pro každý stav zvlášť. Místo konkrétních stavů lze zvolit Jakýkoliv stav (přechod je dostupný odkudkoli) nebo Vytvoření dokladu (úvodní přechod při založení záznamu). Tyto dvě volby stojí samostatně: jejich výběrem se ostatní stavy z pole odeberou a výběrem běžného stavu se naopak odebere ona. Totéž hlídá systém při uložení: přechod bez výchozího stavu, se stejným stavem vybraným dvakrát nebo se systémovou volbou vedle dalších stavů neuloží a ohlásí chybu.
- Smažete-li stav, který je jedním z výchozích stavů přechodu, přechod zůstane a vede dál z ostatních vybraných stavů. Odstraní se jen tehdy, když mu žádný výchozí stav nezbude, nebo když vede do mazaného stavu.
- Cílový stav je dán tím, u kterého stavu přechod spravujete — přechody se v editoru stavu zobrazují jako „Přechody do stavu".
- Priorita — pořadí, ve kterém se přechody nabízejí a vyhodnocují, pokud jich připadá v úvahu více.
- Viditelný přechod — určuje, zda je změna stavu viditelná i mimo administraci (např. pro zákazníka); neviditelné přechody slouží jen internímu zpracování.
- Nastavení layoutu — nastavení zobrazení přechodu, zapsané ve formátu JSON.
Handlery na přechodu
Každý přechod má pět sekcí s logikou; jejich role a pořadí vyhodnocení:
- Podmínky — vyhodnocují se před nabídnutím změny stavu. Pokud některá podmínka není splněna, přechod se vůbec nenabídne — uživatel nevidí chybu, možnost prostě chybí.
- Validace — kontroly spuštěné při pokusu o změnu stavu (spolu s ověřením případných povinných dat přechodu). Pokud validace neprojde, změna stavu se zastaví a uživateli se zobrazí chyba s popisem problému.
- Akce — po úspěšné změně stavu se vykonají navázané kroky (generování dokladů, e-maily, skladové operace…), v pořadí podle priority. Každá akce může mít navíc vlastní podmínky spuštění, takže se provede jen v určitých situacích.
- Asynchronní akce — kroky, na které uživatel nemusí čekat. Spustí se až po dokončení změny stavu na pozadí, zhruba do minuty, každá samostatně a v libovolném pořadí. Viz Asynchronní akce.
- Akce při chybě — pokud některá akce selže, spustí se kompenzační kroky této sekce (např. odemčení rezervovaných pozic) a chyba se poté ohlásí.
Souběh změn stavu
Systém hlídá, aby na jednom záznamu neprobíhaly dvě změny stavu současně — druhý pokus je odmítnut, dokud první změna neskončí.
Asynchronní akce
Do sekce Asynchronní akce patří kroky, které nemají zdržovat uživatele ani samotnou změnu stavu — například odeslání potvrzení objednávky zákazníkovi nebo spuštění automatizace. Nabídka typů obsahuje jen akce, které umí běžet na pozadí.
- Kdy se rozhodne a kdy proběhne. Podmínky spuštění asynchronní akce se vyhodnotí ještě během změny stavu. Akce, které projdou, se zařadí jako úlohy do agendy Úlohy na pozadí a provedou se po dokončení změny stavu, zhruba do minuty.
- Nezávislost. Každá asynchronní akce běží samostatně a v libovolném pořadí. Žádná jiná akce na jejich výsledku nesmí záviset.
- Chybná konfigurace nezastaví změnu stavu. Pokud asynchronní akci nelze naplánovat — její typ už není dostupný nebo její podmínka skončí chybou —, akce se vynechá, chyba se zaznamená do logu a změna stavu proběhne normálně.
- Priorita — u každé asynchronní akce volíte Vysoká (výchozí), Normální nebo Nízká. Úlohy s vysokou prioritou zpracovává naléhavá fronta. Pomalé akce dejte níž, aby nezdržovaly ty spěšné.
Podmínky podle výchozího stavu a místa vzniku
Dvě podmínky se hodí hlavně jako podmínky spuštění akcí:
- Dle výchozího stavu přechodu — rozliší, ze kterého stavu záznam na přechod přišel. Hodí se u přechodu s několika výchozími stavy, který se má podle původního stavu chovat jinak, například vynechat akci, když záznam přichází z jednoho z nich. Volíte, zda výchozí stav je jeden z nebo není žádný z vybraných Stavů. Nabídka stavů obsahuje výchozí stavy upravovaného přechodu (u přechodu z Jakéhokoliv stavu všechny stavy). Akce se vyhodnocují až po změně stavu, podmínka ale vždy zkoumá stav, ze kterého přechod odešel. Bez vybraného stavu je podmínka vždy splněna. Stejný výchozí stav se zapíše i do auditního logu u záznamu o změně stavu.
- Dle místa, odkud záznam vznikl — odliší například objednávky z
Nákup na e-shopuod objednávek zadaných ručně nebo přijatých jinou cestou. Volíte, zda místo vzniku je jedno z nebo není žádné z vybraných Míst vzniku. Místo vzniku je známé jen v úvodním přechodu a v přechodech, na které úvodní přechod rovnou navazuje. Jinde je neznámé a mezi vybranými tedy nikdy není. Bez vybraného místa nepropustí volba „je jedno z" nic.
Formulář při změně stavu
Některé změny stavu si před provedením vyžádají doplnění údajů ve formuláři. Pole takového formuláře může mít pod názvem nápovědu a může se zobrazovat jen tehdy, když jiné pole formuláře obsahuje určitou hodnotu. Skryje-li se pole, se kterým je svázané, skryje se také. Skryté pole se nekontroluje a jeho hodnota se s formulářem neodesílá.
Správa přechodů v administraci
Přechody se spravují v editoru stavu na záložce Přechody (viz Stavy) — tlačítkem Přidat přechod, nebo kliknutím na existující přechod.
Editor přechodu: nahoře nastavení (Výchozí stavy, Priorita, Viditelný přechod), níže sekce Podmínky, Validace, Akce, Asynchronní akce a Akce při chybě.
V každé sekci přidáte handler tlačítkem Přidat podmínku / validaci / akci. U asynchronní akce volíte navíc Prioritu. U přidaného handleru vyberete typ z nabídky (názvy jsou české, nabídka odpovídá cílovému objektu workflow) a vyplníte jeho parametry — formulář parametrů se zobrazí podle zvoleného typu.
Výběr typu akce — nabídka obsahuje všechny akce dostupné pro cílový objekt workflow; po výběru se zobrazí parametry zvolené akce.
Přehled dostupných handlerů podle modulů najdete v registru — viz Handlery.
Časté dotazy (FAQ)
Proč se mi změna stavu nenabízí?
Nejspíš není splněna některá podmínka přechodu (např. záznam nemá požadovaný typ dopravy). Podmínky přechod skrývají bez chybové hlášky — zkontrolujte konfiguraci podmínek daného přechodu.
Proč změna stavu skončí chybou?
Neprošla některá validace (nebo chybí povinná data přechodu) — systém zobrazí popis problému a záznam zůstává v původním stavu. Po odstranění příčiny lze změnu stavu spustit znovu.
Co se stane, když selže akce po změně stavu?
Spustí se akce při chybě (kompenzační kroky) daného přechodu a chyba se ohlásí. Zkontrolujte záznam a případně změnu stavu opakujte.
Proč změna stavu proběhla, ale asynchronní akce se neprovedla?
Podmínky spuštění asynchronní akce se vyhodnocují v okamžiku změny stavu — pokud tehdy nebyly splněny, akce se nenaplánuje. Akce se vynechá také tehdy, když její typ není dostupný nebo když její podmínka skončí chybou; chyba se zaznamená do logu a změna stavu proběhne normálně. Zkontrolujte nastavení akce na přechodu.
Jak u přechodu z více stavů provést akci jen pro jeden z nich?
Přidejte akci podmínku spuštění Dle výchozího stavu přechodu a vyberte stav, ze kterého má záznam přijít (je jeden z), nebo stavy, pro které se akce provést nemá (není žádný z).
Související dokumentace
- Princip workflow
- Stavy
- Handlery
- Podmínky základu systému — registr podmínek a jejich parametrů
- Hromadné akce a úpravy — hromadná změna stavu ze seznamu