Jak modelovat souběžné aktivity v BPMN


Jak modelovat situaci, kdy jedna aktivita má proběhnout v průběhu jiné aktivity?

Souběh aktivit nastává v reálných procesech velmi často a z mnoha různých příčin. Podíváme se na několik z nich.

Neřízený souběh: Aktivity běží souběžně, protože na sobě nezávisí

Nezávislost aktivit je běžná a stejně tak je běžná chyba analytika, který je nějak poskládá do procesu za sebe, bez ohledu na to, že probíhají současně. Správným modelem takové situace je ad-hoc podproces. Typickým případem ad hoc modelování je situace, kdy jeden pracovník nebo tým mají vykonat činnost sestávající se z více aktivit, ale není důvod předepisovat pořadí, ve které se činnosti provádějí.

Ad-Hoc proces v BPMN

Připomeňme si, že kroky ad-hoc procesu mohou a nemusí probíhat současně. Proces jejich souběh či nesouběh nijak neupravuje.

Řízený souběh v témže procesu

V případě, že v rámci jednoho procesu chceme zajistit souběh činností, je nejsanzší je obě společně zahájit. Pokud jedna má začít později, než druhá, tak jednu pozdržíme. Model může vyjadřovat situaci, kdy vedoucí zadá práci a sám po čase kontroluje, jak činnost probíhá.

Souběh činností v jednom procesu; model v BPMN

Schéma neukazuje, že jedna aktivita je delší a druhá kratší. BPMN nemá nástroje pro vyjádření, jak dlouho která aktivita trvá, takže případné upřesnění musí analytik dát do komentáře k jednotlivým krokům.

Souběh činností, kdy jedna zahájí druhou

Činnosti probíhají často souběžně tehdy, kdy průběh zpracování jedné vede k zahájení jiné činnosti. Příkladem může být situace, kdy během zpracování zakázky je třeba vyřešit něco se zákaníkem.

Činnost vyvolaná jinou činností; model v BPMN

Příklad využíván události eskalace, kterou vyvolá samotný proces A ve chvíli, kdy potřebuje, aby proběhl proces B. AKtivita B se určitě rozběhne později, než aktivita A, která její spuštění řídí

Souběh aktivit z různých procesů

Někdy je potřeba, aby aktivita z jednoho procesu proběhla až během průběhu aktivity v jiném procesu. V takovém případě je třeba procesy synchronizovat.

Spuštění jednoho procesu z jiného procesu

Přiklad ukazuje nejjednodušší případ, kdy Aktivita B je první aktivitou procesu, takže proces a tím i aktivita B se spustí tehdy, když ji proces A vyvolá. Pro přehlednost jsem každý proces dal jinému procesoru, ale samozřejmě by to mohly být procesy téhož subjetku.

Nezávislé spuštění samostatné aktivity

Přechozí případy měly společný základ v tom, že aktivita A řídí, zda a kdy se spustí B. Někdy je ale třeba, aby se B spouštěla v průběhu A nezávisle na rozhodování v A. Příkladem jsou kontroloní procesy, které mají samostatné rozhodování, kdy se má provést jaká kontrola.

Pokud se má činnost B spustit nezávisle, a přitom pouze v případě, že běží A, je nutné, aby existovala možnost zkontrolovat, že A běží. Technicky to vyžaduje kontrolu procesu, která v BPMN modelu nemá nástroje pro modelování, ale dotaz na běh procesu můžeme dát do běžné rozhodovací brány.

Kontrolní proces v BPMN

Akitivita čeká na ukončení jiné aktivity

Model kontroly jedné aktivity jinou, který jsme si popsali pro zahájení aktivit, se dá symetricky použít a pro ukončení. Když chceme zajistit, aby činnost v jedné aktivitě proběhla až po ukončení jiné aktivity, musíme do procesu vložit nástroj (většinou se mu říká semafor), který na ukončení aktivity čeká. Workflow nástroje takové semafory většinou podporují, takže jej nemusíme speciálně vymýšlet.

Čekání aktivity na konec jiné aktivity v BPMN

Řízené chování procesů

V předchozích oddílech jsme si pospali různé způsoby, jak v BPMN dokumentovat souběh chování. Kromě prního příkladu ad-hoc procesu, který nedefinuje, jak aktivity proběhnou, dokonce ani, že vůbec proběhnou, tak všechny ostatní modely popisují situace, ve kterých procesy řídí, aby aktivity proběhly tak, jak je žádáno: která začne první, která později.

BPMN je nástroj pro modelování řízení procesů. V modelu není časová osa a neumožňuje zaznamenat, že se něco nějak děje "jen tak", bez kontroly procesy. Proto pokud jsou v procesu aktivity, o nichž lidé vědí, že nějak běží (např. proto, že někdo pracuje rychleji a jiný pomaleji), ale není to nijak řízeno, do BPMN modelu to lze zapsat jedině poznámkou.