Přehled prvků v diagramu
Globální vlastnosti agendy – prvek Diagram
Pokud není v diagramu workflow ve střední části okna vybrán žádný prvek, v panelu Vlastnosti prvků (Diagram) je možné nastavit globální vlastnosti příslušející celé agendě.
Diagram obsahuje samotný graf a také definuje vlastnosti, které jsou dostupné ve všech jeho prvcích.
U agend, které jsou již ve vyšším stádiu rozpracovanosti (nebo u hotových agend) může být panel Diagram podstatně rozšířen o položky s GraphQL dotazy JS funkcemi. Také jejich položky obsahují tlačítko se třemi tečkami, jehož pomocí přejdete do okna Vlastnosti prvku Diagram k popisu příslušného dotazu nebo JS funkce. ![]() |

Do tohoto prvku nevstupují ani nevystupují žádné hrany ani nejsou povoleny události prvku a podgraf.
Povolené vlastnosti prvku jsou: Verze, Výchozí GraphQL dotaz, Proměnné agendy, Globální proměnné agendy, Přehledová tabulka, GraphQL dotaz, JavaScriptová funkce, XSLT, Filtr prvků pro poslední splněný uživatelský úkol, HTML fragment, Akce při stornování agendy, Sdílená data formulářů a Zobrazení historie kroků ve formuláři.
ID a popis agendy
V needitovatelném poli ID je vypsáno vygenerované ID agendy, které nelze měnit.
Upravovat naproti tomu lze Uživatelské ID, které si uživatel do stejnojmenného pole zapíše podle své úvahy. Uživatelské ID musí začínat písmenem nebo číslicí, smí obsahovat pouze písmena bez diakritiky, číslice, pomlčky a podtržítka.
Do pole Popis je možné zapsat podrobnější popis, k čemu je agenda určena.
Proměnné agendy
Ve vlastnostech diagramu lze podle potřeby předem nastavit některé proměnné a globální proměnné.
Rozdíl mezi oběma typy je v tom, že hodnoty globálních proměnných jsou platné ve všech formulářích a prvcích agendy. Proměnné popisuje kapitola flowapps/navrhar_promenne.adoc#variables. Klepnete-li u položky Proměnné na tlačítko Upravit, zobrazí se okno Vlastnosti prvku Diagram.
V levé části dialogu je umístěn strom vlastností agendy, ve kterém je vybrána položka, na kterou jste klepli, zde tedy Proměnné agendy. Pravá část pak obsahuje již definované proměnné a můžete je zde upravit či přidat další.

Novou proměnnou vložíte klepnutím na tlačítko Přidat položku, umístěné v horní části. Vytvoří se řádek pro zápis nové proměnném nazvané provizorně variable.
Nastavte vlastnosti proměnné. Klepnutím do příslušné buňky tabulky se v ní otevře pole pro vstup nebo volbu požadované hodnoty.

-
V poli ve sloupci Název vytvořte název nové proměnné.
-
Typ proměnné vyberte voličem ve sloupci Typ (STRING, INTEGER, BOOLEAN, DATETIME, DECIMAL, JSON, XML či GUID).
-
Pokud chcete proměnné nastavit výchozí hodnotu, zaškrtněte políčko ve sloupci Má výchozí hodnotu a výchozí hodnotu pak napište do pole ve sloupci Výchozí hodnota.
-
Do pole ve sloupci Popis můžete, ale nemusíte zapsat nějaký verbální popis proměnné.

-
Sloupec Akce slouží k manipulaci s proměnnými v seznamu: šipkami nahoru a dolů můžete upravit jejich pořadí, klepnutím na ikonu koše lze proměnnou vymazat.
-
Tlačítko Vymazat vše nad seznamem proměnných můžete ze seznamu odebrat všechny proměnné včetně nastavených hodnot.
Globální proměnné agendy
Podobně jako běžné proměnné agendy lze předem vytvořit i globální proměnné agendy. Ve stromu vlastností v okně Vlastnosti prvku Diagram, v jeho levé části, vyberte položku Globální proměnné agendy.

Nastavení je podobné jako v předchozí kapitole. Navíc je zde skupina zaškrtávacích políček.
-
Zaškrtnutím polička Konfigurační nastavíte proměnné atribut „konfigurační“ přiřadíte proměnné atribut „konfigurační; má význam pro nastavení agendy. Při zaškrtnutí políčka se zároveň zaškrtne i políčko Má výchozí hodnotu.
-
Pokud zaškrtnete políčko Pouze admin, může vlastnosti této proměnné určovat pouze uživatel s právy administrátora. Políčko lze zaškrtnout pouze při zaškrtnutém políčku Konfigurační.
-
Políčko Zasílaná zprávou dovoluje hodnotu proměnné zaslat elektronickou zprávou.
-
Nad tabulkou proměnných je dále políčko Skrýt systémové proměnné. Pokud je zaškrtnuté, nejsou viditelné položky systémových proměnných (začínají znaky sys_).
GraphQL dotazy a JavaScriptové funkce
V okně Vlastnosti prvku je možné spravovat i globální GraphQL dotazy a globální JavaScriptové funkce. Ty pak budou dostupné z jakéhokoliv prvku v diagramu agendy.
Vložit nový dotaz nebo funkci můžete klepnutím na tlačítko v levé horní části dialogu. Poté se zobrazí nabídka možností, kde vyberte podle potřeby GraphQL dotaz nebo JavaScriptová funkce.

Funkce se zařadí do příslušné složky ve stromové struktuře, zobrazené v levé části dialogu. V pravé části dialogu je pak prostor pro zápis kódu funkce či dotazu.

Jazykové nastavení agendy
Agendy lze vytvářet jako vícejazyčné. Ve výchozím stavu se předpokládá pouze nastavení pro jazyk čeština. Další jazyky lze povolit v okně Vlastnosti prvku Diagram, pokud ve struktuře prvku klepnete na položku Seznam podporovaných jazyků.

Chcete-li přidat další jazyk, klepněte na tlačítko Přidat jazyk; tím se do tabulky přidá nová položka pro nastavení jazyka. Klepnutím na položku Vyberte hodnotu se rozvine seznam jazyků, které jsou k dispozici. Vyberte si požadovaný jazyk a klepněte na tlačítko Uložit.

Jazyk se zařadí do seznamu a voličem v horní části okna budete jeden z jazyků moci nastavit jako výchozí.
Historie kroků
Dalším parametrem nastavení prvku Diagram je Historie kroků. Pokud u tohoto ovladače klepnete na tlačítko se třemi tečkami, budete moci v okně Vlastnosti prvku vybrat pod položkou Zobrazení historie kroků ve formuláři způsob zobrazení historie.
-
ALL – zobrazí se všechny kroky.
-
REMOVE LOOPS – nebudou samostatně zobrazeny položky jednotlivých průchodů cykly.
Zahájení agendy
Slouží k zahájení agendy, zpravidla se jedná o zahájení uživatelem. Touto cestou nelze do agendy předat žádná vlastní data (prvek nese pouze konfigurační proměnné).
Prvek pro zahájení agendy se v každém procesu musí vyskytovat alespoň jednou. Zahájení agendy je jeho základní varianta. Znamená ruční zahájení procesu uživatelem, který v Sofa v pohledu Agendy – Zadat nebo v okně Dashboard klepne na ikonu s názvem agendy.
Nevstupuje žádná hrana, vystupuje alespoň jedna hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy a Spuštění instance agendy.
Symbol v diagramu:

V panelu vlastností prvku Zahájení agendy lze nastavit Uživatelské ID a Popis.

Pokud u pole Spuštění agendy klepnete na pole se třemi tečkami, otevře se okno Vlastnosti prvku. Zde je možné nastavit způsob spuštění instance a způsob sběru dat.
Pro spuštění instance jsou k dispozici možnosti PLAN a IMMEDIATELY.
-
PLAN – po spuštění je do agendy umístěn token a spuštěn jeho běh; výsledek spuštění je hlášen ihned.
-
IMMEDIATELY – po spuštění je běh umístěného tokenu sledován, dokud se nezastaví (např. na uživatelském úkolu či bráně). Teprve poté je vrácen výsledek spuštění.

Pro nastavení způsobu sběru dat jsou tři možnosti:
-
COLLECT – shromažďovat data.
-
DO _NOT_COLLECT – neshromažďovat data.
-
SINCE_USERTASK_SUBMIT_FLUSH – shromažďovat data do požadavku na ukončení.
Zahájení agendy zprávou
Agendy lze spouštět i jinak než povelem ze strany uživatele. Prvek Zahájení agendy zprávou slouží k zaslání zprávy běžící instanci nebo běhovému vzoru (potom se jedná o spuštění nové instance agendy). Zpráva může nést data a hodnoty globálních proměnných, které je povoleno zasílat. Pokud se jedná o zaslání zprávy běhovému vzoru, nese také konfigurační proměnné.
Zprávu pro spuštění agendy může zaslat jiná agenda, uživatel akcí v Sofa (pro danou instanci agendy) nebo ji vytvořit tzv. spouštěcí událost (API, cloudové úložiště – OneDrive, datová zpráva, e-mail).
Nevstupuje žádná hrana, vystupuje alespoň jedna hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy Spuštění instance agendy, Přijetí zprávy, Zpracování přijatých dat, Práva ke zprávě a Pravidla pro přijetí zprávy
Symbol v diagramu:

Prvek lze využít nejen ke spuštění agendy, ale i k přijetí zprávy v již běžící agendě (zpráva odeslaná konkrétní instanci). V takovém případě v prvku Zahájení zprávou vznikne další token a vydá se na cestu diagramem.
Zpráva, která se použije ke spuštění agendy, musí být stejná, jako je nastavená v odesílané zprávě či spouštěcí události. Parametry Uživatelské ID a Popis zadáte přímo v panelu s popisem vlastností prvku.

V panelu klepněte na část se třemi tečkami u pole Přijetí zprávy. Tím přejdete do okna Vlastnosti prvku a ve struktuře vlastností na položku Přijetí zprávy, kde zkontrolujete nebo nově definujete požadovanou zprávu.
V okně Vlastnosti prvku je možné zkontrolovat nastavení pro již dříve definovanou zprávu a případně ho změnit, či vytvořit novou vlastní definici. Pokud se použije některá z již existujících zpráv, která však nemá systémový charakter, lze u ní editovat pole Název a Popis. Parametry systémových zpráv jsou zcela needitovatelné.
Při vytváření vlastního popisu se zadávají následující položky:
-
Uživatelské ID – identifikátor bez mezer či diakritických znaků. Použije se v seznamu zpráv.
-
Název – libovolný název.
-
Popis – interní popis, zobrazuje se jako název tohoto prvku ve workflow.
-
Typ příjemce – zda je zpráva určena šabloně (TEMPLATE) a slouží tedy k vytvoření nové instance dané agendy, nebo konkrétní již běžící instanci (INSTANCE).
Ve struktuře popisu prvku lze určit, jak podrobně má metoda SendMessage, zasílající spouštěcí zprávu, sledovat průběh agendy. V okně Vlastnosti prvku přejděte na položku Spuštění instance agendy a ve střední části okna pak máte k dispozici volič Spuštění instance.
-
PLAN – po přijetí zprávy je do agendy umístěn token a spuštěn jeho běh. Poté metoda vrátí výsledek odeslání zprávy a ukončí se.
-
IMMEDIATELY – po přijetí zprávy se rovnou spustí běhové prostředí a běh umístěného tokenu je sledován, dokud se nezastaví (např. na uživatelském úkolu či bráně). Teprve poté je vrácen výsledek odeslání zprávy a metoda se ukončí.
Pro nastavení způsobu sběru dat jsou tři možnosti:
-
COLLECT – shromažďovat data.
-
DO _NOT_COLLECT – neshromažďovat data.
-
SINCE_USERTASK_SUBMIT_FLUSH – shromažďovat data do požadavku na ukončení.
Dále je třeba vytvořit skript, který zpracovává data přijatá ve zprávě. Je to například jejich uložení do proměnných, zápis do databáze atd. Spouštěcí události – například e-mail, spuštění přes API (popisuje kapitola Spouštěcí události) posílají data v JSON tvaru, ale obecně mohou mít tvar data libovolného stringu.
V panelu vlastností prvku klepněte na tlačítko se třemi tečkami v položce Zpracování dat. Tím přejdete v okně Vlastnosti prvku ve struktuře vlastností na položku Zpracování přijatých dat, kde sestavíte požadovaný skript.
Protějškem tohoto prvku je Úkol odeslání zprávy (popsaný v kapitole Úkol odeslání zprávy). V něm se je možné vytvořit a odeslat zprávu, která se poté použije ke spuštění agendy zprávou. |
Ukončení agendy
V tomto prvku končí práce vstupujícího tokenu.
Po dosažení tohoto prvku zaniká token sledující průběh agendy a je nastaven jako dokončený. Pokud to byl jediný token agendy, instance je ukončena.
Pokud probíhající instance obsahuje více aktivních tokenů, zůstane instance agendy stále aktivní a zaniká pouze token, který dosáhl prvku ukončení agendy. |
Vstupuje nejméně jedna hrana, nevystupuje žádná hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend a Stav agendy.
Symbol v diagramu:

V panelu vlastností prvku je zde opět možné nastavit Uživatelské ID a Popis prvku.

Klepnutím na tlačítko Upravit v položce Vlastnosti prvku přejdete do okna Vlastnosti prvku. Tam není obvykle zapotřebí nic zvláštního nastavit.
Úplné ukončení agendy
V tomto prvku je ukončena práce všech aktivních tokenů v instanci. Tokeny v instanci se nastaví jako dokončené. Instanci je ale stále možné zasílat zprávy a tím v ní vytvořit nové aktivní tokeny.
Pokud má např. ředitel společnosti právo vetovat instanci agendy bez ohledu na to, v jakém se zrovna nachází stavu a kolik obsahuje aktivních tokenů, lze využít tento prvek a instance je ukončena.
Vstupuje nejméně jedna hrana, nevystupuje žádná hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend a Stav agendy.
Symbol v diagramu:

V panelu vlastností prvku je zde také možné nastavit Uživatelské ID a Popis prvku.

Klepnutím na tlačítko Upravit v položce Vlastnosti prvku přejdete do okna Vlastnosti prvku. Ani u tohoto prvku není obvykle zapotřebí nic zvláštního nastavit.
Exkluzivní brána
Exkluzivní brána slouží k větvení průběhu workflow. V tomto prvku jsou postupně vyhodnoceny podmínky ve vystupujících hranách a token z prvku odchází tou hranou, kde byla podmínka splněna. Pokud nebyla podmínka splněna v žádné hraně, odchází token výchozí hranou. Pokud neexistuje hrana, kterou by mohl token odejít, dochází k chybě. Pořadí vyhodnocení podmínek v hranách je náhodné.
Podmínky nejsou definovány přímo v exkluzivní bráně, ale na až hranách z brány vycházejících. Jejich nastavení popisuje kapitola Hrana.
Podmínku hrany lze načítat z JSON cesty, proměnné procesu nebo vyhodnotit JavaScriptem.
Vstupuje alespoň jedna hrana, vystupuje také alespoň jedna hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend a Stav agendy,
Symbol v diagramu:

V panelu vlastností prvku je zde opět možné nastavit Uživatelské ID a Popis prvku.

Klepnutím na tlačítko se třemi tečkami v položce Hlavní JS funkce přejdete do okna Vlastnosti prvku k popisu Hlavní JavaScriptové funkce.
Paralelní brána – větvení procesu
Pomocí paralelní brány lze token duplikovat a poslat ho po několika hranách současně. V jedné instanci tedy mohou být různé úkoly zpracovávané zároveň nezávisle na sobě.
Každý token má své vlastní hodnoty proměnných.
Pokud do paralelní brány vstupuje více hran, stává se z ní slučovací brána, která všechny vstupující tokeny sloučí do jednoho. K pokračování procesu dojde, pokud každou hranou přišel alespoň jeden token (z každé hrany se bere vždy první příchozí).
Pokud z prvku vystupuje více hran, zajistí že po zpracování prvku každou hranou odejde právě jeden token.
Slučovací brána čeká, dokud nedostane tokeny ze všech propojených hran. Poté zpracuje hodnoty proměnných z jednotlivých tokenů pomocí JavaScriptu, který návrhář vložil do brány, a na jejich základě vytvoří hodnoty proměnných pro výsledný token.
Při předzpracování prvku musí být ověřeno, že pro každou vstupující hranu existuje čekající token. Pokud ne, tak je zpracování token přerušeno. Pokud ano, vezme se pro každou vstupující hranu token, který přišel první, a je vytvořen nový token, jehož rodiči jsou vybrané tokeny. Práce rodičovských tokenů je v tuto chvíli ukončena a k dalšímu zpracování je naplánován nově vzniklý token. Pokud přijde do předzpracování nově vzniklý token, jsou načteny proměnné jeho rodičovských tokenů a s nimi je zavolána Spojovací JavaScriptová funkce (pokud je nastavena), potom token pokračuje v práci.
Při práci prvku platí, že pokud z prvku vystupuje více hran, je pro každou hranu vytvořen a naplánován ke zpracování nový token a stávající token zde ukončí svou práci. V opačném případě token pokračuje dále.
Vstupuje alespoň jedna hrana, vystupuje také alespoň jedna hrana. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agendy, Stav agendy a Spojovací JavaScriptová funkce.
Symbol v diagramu, větvení procesu:

Úkol odeslání e-mailu
Prvek Úkol odeslání emailu slouží k odeslání e-mailové zprávy vybraným účastníkům procesu zpracování agend. Adresátem může být uživatel, skupina, role, aktér uživatelského úkolu z dané agendy nebo libovolná validní e-mailová adresa.
Pokud při přípravě a odeslání emailu dojde k chybě, je tato pouze zalogována a zpracování agendy probíhá dál.
Počet vstupujících hran – alespoň jedna, počet vystupujících hran – alespoň jedna. Události prvku povoleny, podgraf povolen není.
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy, E-mail a HTML fragment.
Symbol v diagramu:

V popisu prvku klepněte do pole E-mail. Tím přejdete v okně Vlastnosti prvku ve struktuře vlastností na položku E-mail, kde sestavíte obsah zásilky pro elektronickou poštu.
V poli Komu (Kopie, Skrytá kopie) zvolte adresáta. Zadat lze buďto přímo jeho mailovou adresu, nebo vybrat z našeptávače některý z kroků (uživatelských úkolů) agendy, jehož aktérovi bude e-mail odeslán. Adresátů může být i více, podle potřeby si můžete tlačítkem přidat další řádky pro adresáty. Přebytečné řádky lze naopak smazat tlačítkem
.
Věnujte pozornost tlačítku (Vložit / upravit odkaz), které můžete použít ke vložení odkazu na vybranou datovou položku zvoleného typu.

V poli Předmět vyplňte předmět e-mailu.
Následující pole slouží pro sestavení obsahu e-mailu. Můžete zde použít i formátovací tlačítka pro nastavení vzhledu textu.
Volba Odkaz na uživatelský úkol umožňuje do textu zprávy vložit odkaz na datovou položku. Při odesílání e-mailu se pak na dané místo vloží přímo konkrétní údaj, například informace o účastníkovi procesu nebo údaj vyplněný ve formuláři.

Tlačítko pro vložení odkazu je k dispozici i pro pole Předmět, pokud je v něm právě umístěný kurzor.
Úkol odeslání zprávy
Prvek Úkol odeslání zprávy slouží k zaslání zprávy jiné instanci nebo běhovému vzoru. Na základě běhu této agendy je tedy možné buďto vytvořit novou instanci jiné agendy (například po schválení objednávky rovnou vytvořit fakturu s odpovídajícími údaji), nebo existující instanci upravit (např. hlavní účetní má právo zaslat zprávu, kterou vystornuje jakoukoliv zpracovávanou fakturu). Agenda, která má zprávu přijmout, musí obsahovat prvek s opačnou funkcí – Zahájení agendy zprávou (viz kapitolu Zahájení agendy zprávou) – a v obou musí být nastavený stejný identifikátor zprávy.
Průběh práce je následující – nejdříve proběhne příprava dat (pokud je nastaveno), následně zaslání zprávy zadanému příjemci a nakonec zpracování výsledku přijetí (pokud je nastaveno).
Počet vstupujících hran – alespoň jedna, počet vystupujících hran – alespoň jedna. Jsou povoleny události prvku, není povolen podgraf,
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy, Odesílání zpráv, Příprava odesílaných dat a Zpracování výsledku odeslání zprávy.
Symbol v diagramu:

V popisu prvku klepněte do pole Odeslání zprávy. Tím přejdete v okně Vlastnosti prvku ve struktuře vlastností na položku Odeslání zprávy, kde nastavíte vlastnosti prvku.
V okně Vlastnosti prvku nastavte zejména tyto vlastnosti:
-
Zpráva – pokud již zpráva byla vytvořena, vyberte ji ze seznamu a ostatní údaje se doplní automaticky.
-
Uživatelské ID – identifikátor bez mezer či diakritických znaků. Použije se v seznamu zpráv.
-
Název – libovolný název.
-
Popis – interní popis, zobrazuje se jen v tomto seznamu.
-
Typ příjemce – zprávy je možné zasílat buď šabloně (TEMPLATE), čímž se spustí nová instance agendy, nebo konkrétní běžící instanci agendy (INSTANCE) a je možné tak s danou instancí pracovat.
Zasílané zprávy mohou obsahovat libovolná data v podobně stringu (například podrobnosti objednávky, ke které má být vytvořena faktura). Záleží pak na návrháři formuláře, jak přijatá data zpracuje. Spouštěcí události např. zasílají data v JSON tvaru. String s daty předávanými ve zprávě vytvořte pomocí JavaScriptu v položce Příprava odeslaných dat.
Dále je možné připravit skript i pro Zpracování výsledku odeslání zprávy.
Úkol přijetí zprávy
Token zde přeruší práci do přijetí odpovídající zprávy.
Počet vstupujících hran – alespoň jedna, počet vystupujících hran – alespoň jedna. Jsou povoleny události prvku, není povolen podgraf,
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy, Přijetí zpráv, Zpracování přijatých dat a Práva ke zprávě.
Symbol v diagramu:

Formulář FAS – Uživatelský úkol
Prvek umožňující zobrazení formuláře uživateli a následné zpracování zadaných dat. V rámci prvku Uživatelský úkol – FAS je možné navrhnout a upravovat formulář, který se v běhu agendy zobrazuje uživatelům.
Zkratka FAS znamená FormApps Server. Je to nástroj pro zpřístupnění formulářových aplikací uživatelům jakéhokoliv zařízení vybaveného internetovým prohlížečem (počítače, tablety, chytré telefony) a tím umožnit schvalovací procesy i sběry dat a dokumentů komukoliv, kdykoliv a kdekoliv. Pomocí pluginů nebo mobilních aplikací lze umožnit i využití elektronických podpisových certifikátů pro autorizaci dokumentů. |
Počet vstupujících hran – alespoň jedna, počet vystupujících hran – alespoň jedna. Jsou povoleny události prvku, není povolen podgraf,
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy, Aktér, Upřesnění úkolu, Název uživatelského úkolu, Popis uživatelského úkolu, E-mail, JavaScriptová funkce - podmínka dokončení úkolu, HTML fragment, Formulář, JavaScriptová funkce pro přípravu dat formuláře, JavaScriptová funkce pro zpracování dat formuláře a JavaScriptová funkce při uzavření formuláře.
Popis práce v jednotlivých fázích
Práce na výstupu z prvku
Pokud je sběr dat v tokenu nastaven na SINCE_USERTASK_SUBMIT_FLUSH, aktualizují se všechny mapované hodnoty v uživatelských tabulkách a nastaví sběr dat na COLLECT.
Práce prvku
Proběhne vyhodnocení aktérů a vytvoření jednotlivých částí úkolu podle nastavení prvku. Jsou také odeslána avíza a případně naplánována opakovaná avíza, pokud jsou nastavena. Následně prvek čeká na zpracování úkolů aktéry.
Čekání na dokončení práce prvku
-
Otevření
-
Vytvoří se nový dočasný token s kopií proměnných původního tokenu.
-
Vytvoří se datová věta, která obsahuje hodnoty globálních proměnných v době otevření.
-
Vygeneruje se URL na FAS, kam je uživatel přesměrován pro zobrazení formuláře.
-
-
Volání PAJS z formuláře
-
FAS volá webovou službu, předává datovou větu a informace o volané funkci.
-
Z datové věty jsou aktualizovány proměnné dočasného tokenu.
-
Z datové věty jsou vytaženy globální proměnné do dočasné struktury v paměti.
-
Je zavolána PAJS funkce.
-
Pracuje s dočasnými globálními proměnnými
-
Nemění globální proměnné instance.
-
Mění globální proměnné, které mají commonIdent nebo nemají instanceIdent.
-
-
Pracuje s proměnnými dočasného tokenu.
-
Jako argument dostane IScriptXDocument obsahující FormData.
-
-
Do odpovědi je vygenerována datová věta.
-
s hodnotami dočasných proměnných tokenu a dočasných globálních proměnných.
-
FormData je nahrazeno vrácenou hodnotou, pokud funkce vrátí XML dokument.
-
-
-
Uzavření formuláře
Pokud je formulář uzavřen bez odeslání, je zavolána funkce Uzavření formuláře (fasformonclose).
-
Odeslání dat formuláře
Data jsou přijata na server a je naplánováno jejich zpracování.
-
Zpracování dat formuláře
-
Z datové věty jsou aktualizovány proměnné dočasného tokenu.
-
Z datové věty jsou aktualizovány globální proměnné (pozor, zde už reálné).
Zde pozor u paralelních úkolů, kde jsou globální proměnné aktualizovány z datové věty po každém odeslání a v případě paralelního zpracování (formulář si najednou otevře více uživatelů) vyhrávají poslední odeslaná data.
-
Je zavolána PA004AS funkce Zpracování dat (fasformonsubmit).
-
Argumentem jsou FormData.
-
Stále pracuje s dočasným tokenem a jeho proměnnými.
-
Již pracuje s reálnými globálními proměnnými.
-
Funkce slouží pouze pro zpracování samotných dat (např. přesun informací z formdata).
-
Případně může být použita pro akce, které je třeba provést po každém odeslání sekvenčního/paralelního úkolu.
-
Pro všechny návazné akce (rozhodování, zápis do přehledů apod.) má sloužit Servisní úkol.
-
-
Pro jednoduchý úkol: Proměnné tokenu jsou zkopírovány k původnímu tokenu a tento je nastaven k běhu.
-
Pro sekvenční nebo paralelní úkol:
-
Je zavolána funkce Podmínka dokončení (taskcompleted).
-
Funkce pracuje s originálním tokenem a jeho proměnnými.
-
Funkce pracuje s reálnými globálními proměnnými.
-
Argumentem je seznam částí úkolů s informací o dokončení a případně s proměnnými dočasného tokenu, který práci dokončil.
-
Funkce slouží pro zpracování proměnných z jednotlivých tokenů a uložení odpovídajících hodnot do proměnných originálního tokenu.
-
Pokud vrátí true nebo jsou splněny všechny části, je úkol splněn.
-
-
Pokud úkol není splněn, zůstává stát (u sekvenčního je jeho další část předána následujícímu aktérovi).
-
Pokud úkol je splněn:
-
Jsou zrušeny případné nedokončené části.
-
Originální token je nastaven k běhu.
-
-
Pokud zpracování dat formuláře doběhlo v pořádku, nebude jej ani v budoucnu možné spustit znovu.
-
-
Obsah panelu vlastností prvku
V panelu Vlastnosti prvku jsou uvedeny údaje, jejichž hodnoty se většinou nastavují až v okně Vlastnosti prvku.

-
V horní části panelu je opět možné určit Uživatelské ID a zapsat Popis tohoto prvku.
-
Aktér – tato položka určuje, kdo má daný formulář zpracovat. Může to být uživatel, skupina či role. Kromě pevného určení může být definován dynamicky, tj. JavaScriptovým výrazem či lze načíst z proměnné. Také je možné načíst aktéra jiného prvku (např. předchozího kroku) a vyhodnotit jeho nadřízeného. Vlastnosti aktéra nastavíte v okně Vlastnosti prvku.
-
Formulář – klepnutím na tlačítko Upravit přejdete do okna Vlastnosti prvku na položku ve struktuře nastavení Formulář. Odsud je možné přejít do rozhraní FormApps Designer, tedy návrháře formulářů, kde můžete vytvořit či upravit formulář. Nově zakládaný formulář může být krokový. tj. aktérům v dalších krocích se nad jejich vlastním krokem se zobrazují kroky předchozích aktérů. Další možností je dříve vytvořený formulář smazat.
-
Příprava dat – klepnutím na tlačítko se třemi tečkami přejdete do okna Vlastnosti prvku na položku ve struktuře nastavení Javascriptová funkce pro přípravu dat formuláře.
-
Upřesnění úkolu – klepnutím na tlačítko se třemi tečkami přejdete do okna Vlastnosti prvku na položku ve struktuře nastavení Upřesnění úkolu. Zde je možné z rozbalovacího seznamu nastavit jednu ze tří voleb – NONE, PARALLEL nebo SEQUENCE.
Lze jimi upřesnit typ úkolu (normální, paralelní, sekvenční) a ovlivnit interakci mezi aktéry v případě úkolu paralelního nebo sekvenčního. -
Zpracování dat – klepnutím na tlačítko se třemi tečkami přejdete do okna Vlastnosti prvku na položku ve struktuře nastavení Javascriptová funkce pro zpracování dat formuláře. Nastavuje se zde JavaScriptová funkce, která je volána po odeslání dat formuláře.
Nastavení vlastností aktéra
Otevřete okno Vlastnosti prvku a ve struktuře vlastností vyberte položku Aktér (v panelu vlastností prvku klepněte v poli Aktér na tlačítko se třemi tečkami).
Nejprve zvolte tlačítkem v horní části okna, jakým způsobem bude aktér určen.
-
Seznam – zde sestavíte seznam konkrétních uživatelů (skupin, rolí). Tlačítkem Přidat položku vložte nový řádek tabulky, v něm pak klepněte do sloupce Uživatel / Skupina / Role a ze seznamu vyberte jednu položku. Seznam je řazen podle abecedy, nejprve jsou uvedeni jednotliví uživatelé, pak skupiny a nakonec role. Pořadí řádků tabulky můžete měnit pomocí šipek ve sloupci Akce. Řádek také můžete klepnutím na tlačítko s popelnicí vymazat.
-
JS výraz – v okně vytvořte JavaScriptový výraz, jehož vyhodnocením se získá uživatel, skupina či role, která bude aktérem prvku.
-
Proměnná – vyberte proměnnou, která bude identifikovat osobu aktéra. Nabízejí se proměnné typu STRING (viz položka struktury – Proměnné agendy).
-
Prvky – v okně vytvořte seznam prvků podobným způsobem, jako seznam uživatelů popsaný výše. Aktéry budou stejní uživatelé, jako aktéři ve vybraném prvku.
-
Žádný – nebude nastaven žádný aktér.
Ve spodní části okna můžete výběr aktérů ještě upřesnit pomocí zatržítek:
-
Skupiny a role rozvinout na uživatele (pouze pro zadání pomocí seznamu) – pokud jsou v seznamu aktérů uvedené skupiny či role, stanou se aktéry uživatelé, kteří jsou daným skupinám či rolím přiřazeni.
-
Opakovaně vyhodnotit – je-li zatrženo, při návratu procesu do daného kroku se aktér vyhodnocuje znovu, a tedy je možné určit jiného (například původní příjemce formulář odmítl, že mu nepřísluší, a poté je formulář předložen jinému uživateli).
-
Nadřízený uživatele (pouze pro zadání pomocí prvků) – je-li zatrženo, aktérem se stane uživatel, který je nadřízeným aktéra z uvedeného prvku.
Nastavení dalších vlastností
Pro prvek Uživatelský úkol - FAS může být klíčové i nastavení dalších vlastností. Vzhledem k důležitosti tohoto prvku si některé z nich probereme podrobněji. Pokud název dané vlastnosti nevidíte v okně v sekci Vlastnosti (vlevo), klepněte na tlačítko v pravé části sekce. V následně otevřené nabídce název vlastnosti najdete.
-
E-mail – po dosažení prvku s formulářem je automaticky odeslán e-mail aktuálnímu aktérovi. Do e-mailu lze doplňovat údaje z dat stejně jako u prvku Úkol odeslání emailu, jen zde není možné změnit adresáta.
-
Upřesnění úkolu – způsob zpracování formuláře v situaci, kdy je uveden více než jeden aktér:
-
NONE – ve chvíli, kdy je formulář vyplněn jedním z aktérů, proces pokračuje.
-
PARALLEL – formulář musí vyplnit všichni aktéři (pokud není nastavena podmínka), ale na stůl k vyřízení ho dostávají všichni zároveň a nemusí na sebe navzájem čekat.
-
SEQUENCE – formulář musí vyplnit všichni aktéři (pokud není nastavena podmínka) a formulář je jim zpřístupňován postupně, vždy po vyplnění předchozím aktérem.
-
-
JavaScriptová funkce – podmínka dokončení úkolu – JavaScript, kterým se vyhodnocuje, zda již bylo dosaženo podmínky při paralelním/sekvenčním zpracování úkolu. Např. proces již schválilo 80 % schvalovatelů, nebo ve chvíli, kdy kdokoliv proces zamítl a tedy není třeba, aby formulář vyplňovali další aktéři. Tato funkce se spouští po každém odeslání formuláře některým z aktérů.
-
JavaScriptová funkce pro přípravu dat formuláře – JavaScriptová funkce, která se spouští ve chvíli, kdy uživatel v Sofa otevře formulář k vyplnění. Formulář se zobrazí po dokončení funkce. Hlavní rozdíl oproti Hlavní JavaScriptové funkci je ten, že hlavní funkce se provádí hned po vstupu tokenu do prvku.
-
JavaScriptová funkce pro zpracování dat formuláře – JavaScriptová funkce, která se provádí po odeslání vyplněného formuláře. Zde může probíhat např. zápis dat do databáze nebo nastavování stavu procesu podle rozhodnutí.
-
Název uživatelského úkolu – název agendy, který se zobrazuje aktuálnímu aktérovi v seznamu K vyřízení.
-
Popis uživatelského úkolu – popis agendy, který se zobrazuje aktuálnímu aktérovi v seznamu K vyřízení.
Pomocí JavaScriptu lze za běhu měnit aktéry, např. pomocí servisního formuláře spouštěného zprávou.
Událost prvku přerušující – Přerušující časovač
Časovač je tzv. boundary event, umisťuje se tedy na hranu uživatelských úkolů. Slouží k plánování událostí – při plánování události je vyhodnocen čas aktivace a na tuto dobu naplánováno zpracování události.
Pokud pak nastavený časovač vyprší, přeruší se zpracování prvku a token se přesune do prvku událostí, odkud následně putuje vystupující hranou.
Nevstupuje žádná hrana, vystupující hrana je právě jedna. Nejsou povoleny události prvku ani podgraf.
Povolená vlastnost je Definice časovače.
Symbol v diagramu (symbol hodin se přímo integruje do symbolu uživatelského úkolu):

V případě, že doběhne nastavený čas, pokračuje agenda po hraně z toho prvku a nepokračuje standardní cestou. Prvek lze využít například pro řešení situací, kdy má uživatel úkol delší dobu k vyřízení a do stanovené lhůty stále nebyl splněn. Po dosažení lhůty nastavené v časovači je instance předána k vyřízení jinému uživateli.
Čas je možné počítat od vstupu do prvku, nebo od hodnoty v proměnné. Čas je možné nastavit v letech, měsících, dnech, hodinách a minutách a je možné ho od dané proměnné odečítat, nebo přičítat. Např. tedy časovač se spustí 7 dní od zadané hodnoty (přičítání), nebo naopak časovač se spustí 7 dní před zadanou hodnotou (odečítání).
Událost prvku nepřerušující – Nepřerušující časovač
Jedná se o tzv. boundary event, umisťuje se tedy na hranu uživatelských úkolů. Slouží k plánování událostí. Při plánování události je vyhodnocen čas aktivace a na tuto dobu naplánováno zpracování události.
Pokud nastavený časovač vyprší, tak vytvoří nový token a umístí jej do prvku události, odkud následně putuje vystupující hranou. Token je kopií původního tokenu v prvku (má stejné proměnné a další nastavení).
Nevstupuje žádná hrana, vystupující hrana je právě jedna. Nejsou povoleny události prvku ani podgraf.
Povolená vlastnost je Definice časovače.
Symbol v diagramu (symbol hodin se přímo integruje do symbolu uživatelského úkolu), kdy je na časovač navázáno odeslání e-mailu:

Funguje obdobně jako přerušující časovač s tím rozdílem, že pokud je dosaženo cílového času, není přerušena standardní cesta agendy, ale paralelně se spouští hrana z tohoto časovače. Může se jednat například o avízovací e-mail, že uživatel má úkol na stole příliš dlouho, nebo že se u faktury blíží doba splatnosti a agenda stále nebyla vyřízena.
Průběžná událost přijímající – Přijímající časovač
Další variantou časovače je přijímající časovač. Po vstupu do tohoto prvku token čeká, než je dosaženo nastaveného data a času, po jejich dosažení proces automaticky pokračuje.
Počet vstupujících hran – právě jedna. Počet vystupujících hran – alespoň jedna. Nejsou povoleny události prvku ani podgraf.
Povolené vlastnosti jsou zde: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend, Stav agendy a Definice časovače.
Servisní úkol Úprava dat
Slouží k úpravě dat procesu nebo provedení požadovaných volání pomocí PAJS (hlavní JavaScriptová funkce) a/nebo GraphQL (výchozí GraphQL dotaz).
Tento úkol se provádí bez zásahu uživatele. Slouží například pro úpravu dat v databázi či načtení dat z databáze. V rámci úkolu lze využít volání metod konektorů z JavaScriptu/GraphQL.
Počet vstupujících hran – alespoň jedna, počet vystupujících hran – alespoň jedna. Jsou povoleny události prvku, není povolen podgraf,
Povolené vlastnosti jsou: Výchozí GraphQL dotaz, Hlavní JavaScriptová funkce, Proměnné agendy, JavaScriptová funkce, GraphQL dotaz, XSLT, Popis agend a Stav agendy.
Symbol v diagramu:

Hrana
Hrana naznačuje průběh procesu mezi jednotlivými událostmi a aktivitami.
Hrany se dělí na sekvenční, podmíněné a výchozí. Každá z nich má i svůj vlastní symbol.
-
Sekvenční hrana – je hrana, kterou zpravidla prochází proces bez dalších podmínek.
-
Podmíněná hrana – je hrana, kterou proces projde, pokud je splněna podmínka této hrany.
-
Výchozí hrana – je hrana, kterou proces projde, pokud není splněna podmínka v žádné podmíněné hraně z daného prvku.
Žádná z nich nemá další vstupující ani vystupující hrany, nejsou povoleny události ani podgrafy. Sekvenční a podmíněná hrana mají jedinou povolenou vlastnost – Výsledek podmínky. Výchozí hrana žádnou povolenou vlastnost nemá.
Tento prvek se nevkládá z panelu Prvky diagramu. Při řetězovém vkládání prvků (jak popisuje kapitola flowapps/navrhar_okno.adoc#sestaveni-workflow) se hrany vytvoří automaticky. Jinak je lze mezi prvky vytvářet i ručně, pomocí myši.
Chcete-li spojit dva prvky, které již jsou oba umístěné v diagramu, vytvoříte hranu tažením myši mezi dvěma spojovanými prvky na hlavním panelu:
-
Stiskněte levé tlačítko myši nad prvkem, ze kterého má hrana vycházet.
-
Držte tlačítko stisknuté a přesuňte myš nad prvek, kde má hrana končit. Prvek se musí orámovat částečným dvojitým rámcem – viz obrázek. Tlačítko pusťte. Hrana se uchytí v některém z předdefinovaných bodů na okrajích obrázku prvku (na obrázku níže jsou vyznačené jako zelené čtverečky).
V panelu vlastností prvku je možné nastavit typ hrany a doplnit k ní popisný text.

Další vlastnosti hrany můžete určit v okně Vlastnosti prvku, kam přejdete tlačítkem Upravit (není pro typ Výchozí hrana).
Kromě základních vlastností tu lze nastavit Výsledek podmínky. Okno Výsledek podmínky může obsahovat JavaScript, JSON cestu či proměnnou, případně lze podmínku sestavit pomocí Asistenta.
Výsledek podmínky musí být vždy typu boolean – pokud je výsledek vyhodnocen jako true, použije se například k opuštění exkluzivní brány právě tato hrana.
Na rozdíl od ostatních prvků diagramu je u čerstvě přidaných hran pole Popis prázdné, ale můžete do něj vložit text, který se zobrazí v diagramu poblíž hrany.

JavaScript (ECMAscript)
Možnosti práce s JavaScriptem se různí podle toho, v které části návrhu agendy se používá.
Formulářový – klasický formulářový JavaScript, ve kterém lze využívat veškeré funkce FASu. Je dostupný pouze z návrháře formuláře, ale při použití speciální funkce zde lze spouštět i procesní JavaScripty.
Procesní aplikace – tato varianta je dostupná pouze při návrhu procesu (diagramu), ale napsané skripty lze speciální funkcí volat i z formuláře. Obsahuje nové funkce a metody pro práci s workflow. Využívá se při volání hlavních funkcí, zpracování dat zprávy, zpracování dat formuláře atd. a je z něj možné nastavovat stav procesu, nebo např. upravovat aktéry uživatelských úkolů.