Základní pravidla tvorby workflow: Porovnání verzí

Z enTeam
Skočit na navigaci Skočit na vyhledávání
en>Kadel
m
 
 
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.)
Řádek 7: Řádek 7:
  
 
<h2>Konstrukce grafu workflow</h2>
 
<h2>Konstrukce grafu workflow</h2>
Po promyšlení výše uvedených skutečností lze přistoupit ke konstrukci grafu workflow v prostředí WorkflowDesigneru.
+
Po promyšlení výše uvedených skutečností lze přistoupit ke konstrukci grafu workflow v prostředí Workflow Designer.
  
 
<h2>Pravidla pro hrany</h2>
 
<h2>Pravidla pro hrany</h2>
 
Rozhodující pro průběh workflow je výsledek vyhodnocení skriptu hrany.
 
Rozhodující pro průběh workflow je výsledek vyhodnocení skriptu hrany.
* Pokud je výsledkem hodnota true, můţe workflow pokračovat dál.
+
* Pokud je výsledkem hodnota true, může workflow pokračovat dál.
* Pokud je výsledkem hodnota false, není moţné hranou pokračovat.
+
* Pokud je výsledkem hodnota false, není možné hranou pokračovat.
* Mohlo by dojít k situaci, že by žádná cesta nebyla průchodná a workflow by bylo přerušeno. Z toho důvodu je někdy nutné použít pro hranu podmínku/příkaz <b>else</b>.
+
* Mohlo by dojít k situaci, že by žádná cesta nebyla průchodná a workflow by bylo přerušeno. Z toho důvodu je někdy nutné použít pro hranu podmínku/příkaz <b>ELSE</b>.
  
<b>Příkaz else</b><br/>
+
<b>Příkaz ELSE</b><br/>
V rámci zajištění konzistence workflow je nutné zajistit, aby nebylo nikde přerušeno. To znamená, že musí být neustále k dispozici hrana, kterou by mohlo workflow pokračovat. K tomuto účelu slouží příkaz else. Je nutné dodržet následující pravidla:
+
V rámci zajištění konzistence workflow je nutné zajistit, aby nebylo nikde přerušeno. To znamená, že musí být neustále k dispozici hrana, kterou by mohlo workflow pokračovat. K tomuto účelu slouží příkaz ELSE. Je nutné dodržet následující pravidla:
 
* Pokud vede od nějakého uzlu pouze jedna hrana, není možné jí přiřadit žádný skript. Toto pravidlo je založeno na předpokladu, že skript s návratovou hodnotou boolean může mít výsledek <b>false</b> a nebylo by tedy možné pokračovat dál. Pokud není hraně přiřazen žádný skript, nemůže nastat situace přerušení workflow.
 
* Pokud vede od nějakého uzlu pouze jedna hrana, není možné jí přiřadit žádný skript. Toto pravidlo je založeno na předpokladu, že skript s návratovou hodnotou boolean může mít výsledek <b>false</b> a nebylo by tedy možné pokračovat dál. Pokud není hraně přiřazen žádný skript, nemůže nastat situace přerušení workflow.
* Pokud vede od jednoho uzlu workflow více hran, které všechny obsahují skript, musí mezi nimi být právě jedna hrana s příkazem <b>else</b>.
+
* Pokud vede od jednoho uzlu workflow více hran, které všechny obsahují skript, musí mezi nimi být právě jedna hrana s příkazem <b>ELSE</b>.
* Hrana s příkazem <b>else</b> je hrana, kterou workflow pokračuje, pokud neexistuje žádná jiná hrana s hodnotou <b>true</b>. Pouze v tomto případě je hrana <b>else</b> aktivována.
+
* Hrana s příkazem <b>ELSE</b> je hrana, kterou workflow pokračuje, pokud neexistuje žádná jiná hrana s hodnotou <b>true</b>. Pouze v tomto případě je hrana <b>ELSE</b> aktivována.
  
 
<h2>Mechanismus zpracování workflow</h2>
 
<h2>Mechanismus zpracování workflow</h2>
 
Důležitým bodem při tvorbě prvního workflow je pochopení, jak systém vyhodnocuje podmínky na hranách a jaké jsou návaznosti mezi kroky v grafu.
 
Důležitým bodem při tvorbě prvního workflow je pochopení, jak systém vyhodnocuje podmínky na hranách a jaké jsou návaznosti mezi kroky v grafu.
Nejjednodušší situace je taková, kdy workflow má pouze sériové kroky, tzn. kroky následující jeden za druhým a nejsou zde žádná větvení. Pak systém po dokončení jednoho kroku automaticky připraví krok k vyřízení. (Stav vyřízení je takový, kdy krok může být přiděleným uživatelem spuštěn.Někdy také říkáme, že krok je instanciován)
+
Nejjednodušší situace je taková, kdy workflow má pouze sériové kroky, tzn. kroky následující jeden za druhým a nejsou zde žádná větvení. Pak systém po dokončení jednoho kroku automaticky připraví krok k vyřízení. (Stav vyřízení je takový, kdy krok může být přiděleným uživatelem spuštěn. Někdy také říkáme, že krok je instanciován)
 
Drobná komplikace nastane, pokud se workflow větví, tak jak je uvedeno na následujícím obrázku. Pokud na žádné hraně není skript, pak krok D bude ve stavu k vyřízení až tehdy, když bude dokončen krok B a C. Pokud je ale např. na hraně 1 podmínka, která hranu uzavřela, tak se krok D dostane do stavu k vyřízení ihned po dokončení kroku C.
 
Drobná komplikace nastane, pokud se workflow větví, tak jak je uvedeno na následujícím obrázku. Pokud na žádné hraně není skript, pak krok D bude ve stavu k vyřízení až tehdy, když bude dokončen krok B a C. Pokud je ale např. na hraně 1 podmínka, která hranu uzavřela, tak se krok D dostane do stavu k vyřízení ihned po dokončení kroku C.
 
Dalo by se tedy stanovit pravidlo: Krok je instanciován (ve stavu k vyřízení) tehdy, pokud do něj přejdou všechny hrany, které do něj vedou.
 
Dalo by se tedy stanovit pravidlo: Krok je instanciován (ve stavu k vyřízení) tehdy, pokud do něj přejdou všechny hrany, které do něj vedou.
Řádek 31: Řádek 31:
 
Ukažme si však nyní příklad, kdy by toto nefungovalo:
 
Ukažme si však nyní příklad, kdy by toto nefungovalo:
 
<br/>
 
<br/>
[[Soubor:Graf1.png]]
+
[[Soubor:Graf2.png]]
  
 
Po uplatnění předchozího pravidla by totiž krok D čekal také na krok E, který by ale určitě ještě nebyl dokončen. Proto musíme některé hrany označit jako Zpětné (jde o vlastnost na hraně, graficky je to znázorněno neplnou šipkou). Předchozí pravidlo pak rozšíříme na: Krok je instanciován tehdy, pokud do něj přichází všechny hrany, které do vedou, avšak krok s instanciováním nečeká na hrany zpětné.
 
Po uplatnění předchozího pravidla by totiž krok D čekal také na krok E, který by ale určitě ještě nebyl dokončen. Proto musíme některé hrany označit jako Zpětné (jde o vlastnost na hraně, graficky je to znázorněno neplnou šipkou). Předchozí pravidlo pak rozšíříme na: Krok je instanciován tehdy, pokud do něj přichází všechny hrany, které do vedou, avšak krok s instanciováním nečeká na hrany zpětné.
  
 
<h2>Proměnné</h2>
 
<h2>Proměnné</h2>
Velmi důležité je ještě před začátkem návrhu činnosti pracovních kroků, což reprezentuje ve většině případů i návrh masek k přijímání informací od uživatele, nadefinovat globální proměnné, které budou k tomu potřeba. To se provádí ve <b>Slovníku dat</b> do kterého je přístup z prostředí Návrháře masek i Workflow Designeru. Ve Workflow Designeru najdete datový slovník v menu NÁSTROJE/ADMINISTRACE/DATOVÝ SLOVNÍK.
+
Velmi důležité je ještě před začátkem návrhu činnosti pracovních kroků, což reprezentuje ve většině případů i návrh masek k přijímání informací od uživatele, nadefinovat globální proměnné, které budou k tomu potřeba. To se provádí ve <b>Slovníku dat</b>, do kterého je přístup z prostředí Mask Designer i Workflow Designer. Ve Workflow Designer najdete datový slovník v menu NÁSTROJE/ADMINISTRACE/DATOVÝ SLOVNÍK.
V dialogu EDITOVAT/VLASTNOSTI WORKFLOW ve Workflow Designeru je pak nutné tyto proměnné přiřadit k právě editovanému workflow.<br/>
+
V dialogu EDITOVAT/VLASTNOSTI WORKFLOW ve Workflow Designer je pak nutné tyto proměnné přiřadit k právě editovanému workflow.<br/>
Globální proměnné (ve skriptu s předponou <wkf.>) si zachovávají hodnotu z jednoho kroku i po přechodu do dalšího kroku téže instance workflow. Naopak v různých instancích téže workflow se tyto proměnné stejného jména nijak neovlivňují.Důvod, proč se proměnná definuje a zvlášť přidává k danému workflow je ten, že je možné jednu definici proměnné používat v různých definicích workflow. Existuje pak např. pouze jedna proměnná ID_dodavatele a ta je použita ve WKF Smlouva i WKF Faktura přijatá.<br/><br/>
+
Globální proměnné (ve skriptu s předponou <wkf.>) si zachovávají hodnotu z jednoho kroku i po přechodu do dalšího kroku téže instance workflow. Naopak v různých instancích téže workflow se tyto proměnné stejného jména nijak neovlivňují. Důvod, proč se proměnná definuje a zvlášť přidává k danému workflow, je ten, že je možné jednu definici proměnné používat v různých definicích workflow. Existuje pak např. pouze jedna proměnná IdDodavatele a ta je použita ve workflow Smlouva i workflow Faktura přijatá.<br/><br/>
Kromě globálních proměnných existují i lokální proměnné, které lze nadefinovat přímo ve skriptu pro pomocné výpočty. Mají platnost pouze v rámci pracovního kroku, kde je tento skript použit. Mohou být stejného typu jako globální proměnné kromě typu Seznam (list).<br/><br/>
+
Kromě globálních proměnných existují i lokální proměnné, které lze nadefinovat přímo ve skriptu pro pomocné výpočty. Mají platnost pouze v rámci pracovního kroku, kde je tento skript použit. Mohou být stejného typu jako globální proměnné kromě typu Seznam (list). POZOR: Lokální proměnné je nutné na rozdíl od globálních zapisovat stejně, jako jsou nadefinovány, tedy použít stejnou velikost písmen.<br/><br/>
 
<font color=red>
 
<font color=red>
 
Navržené globální proměnné nadefinujte ve <b>Slovníku dat</b>. Nezapomeňte je pak také přidat do workflow ve <b>Vlastnostech workflow</b>.
 
Navržené globální proměnné nadefinujte ve <b>Slovníku dat</b>. Nezapomeňte je pak také přidat do workflow ve <b>Vlastnostech workflow</b>.

Aktuální verze z 14. 8. 2020, 09:38

Po ujasnění základních pojmů můžete přistoupit k vlastnímu návrhu workflow. Základem správného fungování workflow je návrh grafu workflow, který splňuje všechny požadavky kladené na pracovní proces. V ideálním případě by měl počítat i s možnými změnami pracovních postupů a personálního obsazení v budoucnu.

Příprava grafu workflow

  • načrtnout si na papír potřebné uzly (pracovní kroky) se zřetelem na personální obsazení uzlů a termíny splnění činnosti pracovních kroků
  • spojit uzly hranami včetně podmínek jejich průchodnosti

Tato příprava se obvykle provádí v součinnosti s vlastníkem workflow.

Konstrukce grafu workflow

Po promyšlení výše uvedených skutečností lze přistoupit ke konstrukci grafu workflow v prostředí Workflow Designer.

Pravidla pro hrany

Rozhodující pro průběh workflow je výsledek vyhodnocení skriptu hrany.

  • Pokud je výsledkem hodnota true, může workflow pokračovat dál.
  • Pokud je výsledkem hodnota false, není možné hranou pokračovat.
  • Mohlo by dojít k situaci, že by žádná cesta nebyla průchodná a workflow by bylo přerušeno. Z toho důvodu je někdy nutné použít pro hranu podmínku/příkaz ELSE.

Příkaz ELSE
V rámci zajištění konzistence workflow je nutné zajistit, aby nebylo nikde přerušeno. To znamená, že musí být neustále k dispozici hrana, kterou by mohlo workflow pokračovat. K tomuto účelu slouží příkaz ELSE. Je nutné dodržet následující pravidla:

  • Pokud vede od nějakého uzlu pouze jedna hrana, není možné jí přiřadit žádný skript. Toto pravidlo je založeno na předpokladu, že skript s návratovou hodnotou boolean může mít výsledek false a nebylo by tedy možné pokračovat dál. Pokud není hraně přiřazen žádný skript, nemůže nastat situace přerušení workflow.
  • Pokud vede od jednoho uzlu workflow více hran, které všechny obsahují skript, musí mezi nimi být právě jedna hrana s příkazem ELSE.
  • Hrana s příkazem ELSE je hrana, kterou workflow pokračuje, pokud neexistuje žádná jiná hrana s hodnotou true. Pouze v tomto případě je hrana ELSE aktivována.

Mechanismus zpracování workflow

Důležitým bodem při tvorbě prvního workflow je pochopení, jak systém vyhodnocuje podmínky na hranách a jaké jsou návaznosti mezi kroky v grafu. Nejjednodušší situace je taková, kdy workflow má pouze sériové kroky, tzn. kroky následující jeden za druhým a nejsou zde žádná větvení. Pak systém po dokončení jednoho kroku automaticky připraví krok k vyřízení. (Stav vyřízení je takový, kdy krok může být přiděleným uživatelem spuštěn. Někdy také říkáme, že krok je instanciován) Drobná komplikace nastane, pokud se workflow větví, tak jak je uvedeno na následujícím obrázku. Pokud na žádné hraně není skript, pak krok D bude ve stavu k vyřízení až tehdy, když bude dokončen krok B a C. Pokud je ale např. na hraně 1 podmínka, která hranu uzavřela, tak se krok D dostane do stavu k vyřízení ihned po dokončení kroku C. Dalo by se tedy stanovit pravidlo: Krok je instanciován (ve stavu k vyřízení) tehdy, pokud do něj přejdou všechny hrany, které do něj vedou.
Graf1.png
Ukažme si však nyní příklad, kdy by toto nefungovalo:
Graf2.png

Po uplatnění předchozího pravidla by totiž krok D čekal také na krok E, který by ale určitě ještě nebyl dokončen. Proto musíme některé hrany označit jako Zpětné (jde o vlastnost na hraně, graficky je to znázorněno neplnou šipkou). Předchozí pravidlo pak rozšíříme na: Krok je instanciován tehdy, pokud do něj přichází všechny hrany, které do vedou, avšak krok s instanciováním nečeká na hrany zpětné.

Proměnné

Velmi důležité je ještě před začátkem návrhu činnosti pracovních kroků, což reprezentuje ve většině případů i návrh masek k přijímání informací od uživatele, nadefinovat globální proměnné, které budou k tomu potřeba. To se provádí ve Slovníku dat, do kterého je přístup z prostředí Mask Designer i Workflow Designer. Ve Workflow Designer najdete datový slovník v menu NÁSTROJE/ADMINISTRACE/DATOVÝ SLOVNÍK. V dialogu EDITOVAT/VLASTNOSTI WORKFLOW ve Workflow Designer je pak nutné tyto proměnné přiřadit k právě editovanému workflow.
Globální proměnné (ve skriptu s předponou <wkf.>) si zachovávají hodnotu z jednoho kroku i po přechodu do dalšího kroku téže instance workflow. Naopak v různých instancích téže workflow se tyto proměnné stejného jména nijak neovlivňují. Důvod, proč se proměnná definuje a zvlášť přidává k danému workflow, je ten, že je možné jednu definici proměnné používat v různých definicích workflow. Existuje pak např. pouze jedna proměnná IdDodavatele a ta je použita ve workflow Smlouva i workflow Faktura přijatá.

Kromě globálních proměnných existují i lokální proměnné, které lze nadefinovat přímo ve skriptu pro pomocné výpočty. Mají platnost pouze v rámci pracovního kroku, kde je tento skript použit. Mohou být stejného typu jako globální proměnné kromě typu Seznam (list). POZOR: Lokální proměnné je nutné na rozdíl od globálních zapisovat stejně, jako jsou nadefinovány, tedy použít stejnou velikost písmen.

Navržené globální proměnné nadefinujte ve Slovníku dat. Nezapomeňte je pak také přidat do workflow ve Vlastnostech workflow.



Zpět na stránku Tvorba workflow