Brány v BPMN
Kosočtverce a značka uvnitř každého z nich. Brána nikdy nedělá práci - jen rozhoduje, kolik odchozích cest nese token, a právě o tom je ve skutečnosti každý spor o proces.
14 min čteníBPMN 2.03 z 7
Krátká odpověď
- Brána nevykonává žádnou práci. Je jediné, co v BPMN mění počet živých tokenů, a všechno ostatní o branách z toho plyne.
- Exkluzivní bere právě jednu odchozí cestu, paralelní bere všechny bez podmínek, inkluzivní bere každou cestu, jejíž podmínka platí.
- Brána řízená událostí nerozhoduje - čeká, a vyhrává první událost, která nastane; ostatní se zahodí.
- Ke každému rozdělení patří sloučení stejného druhu. Inkluzivní rozdělení do paralelního sloučení je uváznutí; paralelní rozdělení do exkluzivního sloučení spustí vše následující dvakrát.
01Gateway je pravidlo o tokenech#
Vykonávací model BPMN je token, který se pohybuje diagramem. Gateway je jediná věc, která mění počet tokenů: rozdělení umí z jednoho tokenu udělat několik, sloučení je umí proměnit zpět v jeden. Všechno ostatní o gateway z toho vyplývá.
Poznámka k názvu. Specifikace říká gateway; většina lidí řekne brána a hledá brány. Je to tatáž věc a kosočtverec je tentýž kosočtverec - ale do názvu diagramu patří gateway, protože to je slovo, které bude číst každý BPMN nástroj i každý recenzent.
Dva důsledky stojí za zapamatování. Za prvé, gateway nedělá žádnou práci - vyhodnocuje podmínky, které už někdo spočítal, a chcete-li něco ověřit, je to úloha před gateway. Za druhé, rozdělení obvykle potřebuje odpovídající sloučení stejného druhu, protože to, co vytvořilo tokeny navíc, je musí zase spojit, jinak doběhnou do konce zvlášť.
02Pět druhů#
| Prvek | Notace | Co znamená |
|---|---|---|
| Exkluzivní (XOR) | kosočtverec s X, nebo prázdný | Vybere se právě jedna odchozí cesta. Podmínky se vyhodnocují v pořadí a vyhrává první pravdivá. Výchozí volba a ta, po které je třeba sáhnout nejdřív. |
| Paralelní (AND) | kosočtverec s + | Vyberou se všechny odchozí cesty, zcela bez podmínek. Jako sloučení počká na každou příchozí cestu, teprve pak pokračuje. |
| Inkluzivní (OR) | kosočtverec s kroužkem | Vybere se každá cesta, jejíž podmínka platí - jedna, více nebo všechny. Jako sloučení čeká přesně na ty větve, které byly aktivovány, což je chytřejší, než to zní, a právě odtud pocházejí zaseknutí. |
| Event-based | pětiúhelník ve dvojitém kroužku | Nerozhoduje - čeká. Vybere se cesta, jejíž událost nastane první, ostatní se zahodí. |
| Komplexní | kosočtverec s hvězdičkou | Únikový východ pro pravidla, která ostatní čtyři nevyjádří - „pokračuj, když jsou tři z pěti schválení“. Vzácná a obvykle znamení, že si proces říká o překreslení. |
03Rozdělení, sloučení a join#
Tentýž symbol dělá obě úlohy a to, kterou zrovna dělá, závisí jen na tom, zda má víc odchozích nebo víc příchozích toků. Gateway s jedním vstupem a třemi výstupy je rozdělení; tři dovnitř a jeden ven je sloučení.
Slovník je třeba ustálit, protože pro sbíhající případ se používají tři slova. Sbíhající paralelní gateway je join: čeká na každou větev. Sbíhající exkluzivní gateway je merge: nečeká na nic a propustí každý token. Obě se kreslí jako tentýž kosočtverec jako při rozdělení, a nazvat merge joinem je způsob, jakým diagram začne tvrdit, že se dokončila práce, která nikdy neběžela.
| Prvek | Notace | Co znamená |
|---|---|---|
| Exkluzivní sloučení | víc dovnitř, jeden ven | Propustí každý token rovnou, jak přijde. Nečeká, protože se stejně vybrala jen jedna větev. |
| Paralelní sloučení (AND-join) | víc dovnitř, jeden ven | Počká na každou příchozí cestu a pak vydá jeden token. Tohle je to, co blokuje, a blokovat by mělo záměrně. Je to konstrukce, kterou v BPMN obvykle myslíme slovem join. |
| Inkluzivní sloučení | víc dovnitř, jeden ven | Čeká přesně na ty větve, které byly výše aktivovány. Vyžaduje, aby engine uvažoval o celém procesu, a je to konstrukce, která se mezi nástroji chová nejrůzněji. |
| Smíšená gateway | víc dovnitř, víc ven | Legální. Nečitelné. Rozdělte jednou gateway a slučte druhou a diagram vám sám řekne, co dělá. |
04Počítání tokenů v diagramu výše#
Všechno ze dvou sekcí výše je jedna dovednost: položte prst na startovací událost a počítejte. Tady je proces pojistné události z vrcholu této stránky, projitý krok za krokem, s počtem živých tokenů po každém z nich.
- Nastane „Claim received“. Jeden token. Sedí na toku do první gateway.
- Paralelní rozdělení. Dva tokeny. Nevyhodnocují se žádné podmínky a nic se nevybírá - paralelní rozdělení vydá vždy jeden token na každý odchozí tok.
- Kontrola pojistky i kontrola podvodu běží. Stále dva. Jsou opravdu souběžné: diagram netvrdí nic o tom, která skončí dřív, a ani to nepotřebuje.
- Paralelní join. Zpět na jeden. Token, který přijde první, tam počká. Když přijde druhý, join oba spotřebuje a vydá jeden.
- „Covered?“ Jeden token, jedna větev. Exkluzivní gateway počet nikdy nemění - mění jen to, na kterém toku token je.
- Vyplatit nebo zamítnout, pak konec. Nula. Instance procesu je hotová, když poslední token spotřebuje koncová událost.
Teď to záměrně pokazte, protože obě klasické chyby jsou vidět už ze samotného počítání.
Udělejte první gateway exkluzivní a join nechte paralelní. Rozdělení teď vydá jeden token, takže proběhne jedna kontrola. Paralelní join stále čeká na dva. Na druhém toku nikdy nic nepřijde a pojistná událost zůstane v joinu po celou životnost systému. To je ten deadlock - a stačila jedna změněná značka.
Nechte rozdělení paralelní a udělejte join exkluzivní. Přijdou dva tokeny a exkluzivní sloučení nečeká na nic, takže oba projdou rovnou. „Covered?“ se vyhodnotí dvakrát, úloha vyplacení proběhne dvakrát a zákazník dostane zaplaceno dvakrát. Tohle je horší než deadlock, protože deadlock se ohlásí sám a dvojitá platba ne.
05Event-based gateway#
Tohle je konstrukce, díky které jde „čekáme na dokumenty, ale ne donekonečna“ vyjádřit jedním obrázkem. Každý jiný způsob, jak to nakreslit - hraniční časovací událost na čekací úloze, cyklus s podmínkou - buď zdvojuje logiku vypršení, nebo ji skrývá.
Jdou s ní dvě pravidla. Cíli event-based gateway musí být zachytávající mezilehlé události nebo receive úlohy, nikdy obyčejné úlohy: gateway je závod mezi věcmi, které přicházejí, a úloha nepřichází. A větve musí být v čase opravdu vzájemně výlučné, což jsou automaticky - první, která nastane, ostatní zahodí.
06Podmínky a výchozí toky#
Podmínky žijí na odchozích sekvenčních tocích, ne na gateway. Pište je jako krátké výrazy, které čtenář umí vyhodnotit - amount > 10000, policy status = active - a dejte je na čáru blíž ke gateway než k cíli.
Právě jedna větev větvící gateway by měla být výchozí tok, kreslený s malou čárkou přes ocas. Vybere se tehdy, když neplatí žádná jiná podmínka, a je to to, co zabrání, aby proces uvázl na gateway, kde se data ukázala být něčím, co nikdo nepředvídal.
Sáhněte po něm, když
- Exkluzivní, když platí přesně jedna cesta - což je většinou
- Paralelní, když musí proběhnout obě cesty a ani jedna nezávisí na druhé
- Event-based, když proces čeká a rozhoduje něco zvenčí
- Výchozí tok na každé větvící exkluzivní či inkluzivní gateway
Sáhněte po něčem jiném, když
- Inkluzivní tam, kde stačí exkluzivní - stojí to srozumitelnost a přidává riziko deadlocku
- Komplexní, téměř vždy - raději překreslete
- Gateway hned za gateway bez ničeho mezi nimi
- Podmínky psané jako odstavce prózy v popisu toku
07Když odpovědí vůbec není gateway#
Modelář, který se naučil gateway, po nich sahá u každého větvení na světě a výsledkem je diagram, který je ze 40 % kosočtverec. Čtyři další konstrukce BPMN vyjádří rozhodnutí v následujících případech lépe a jejich znalost je většina rozdílu mezi procesním modelem, který se vejde na stránku, a tím, který ne.
| Prvek | Notace | Co znamená |
|---|---|---|
| Podmíněný sekvenční tok | malý kosočtverec na ocasu toku | Podmínka napsaná přímo na toku odcházejícím z úlohy, bez gateway. Správné pro jeden nepovinný krok - „pošli potvrzení, pokud si ho zákazník vyžádal“ - a špatné ve chvíli, kdy jsou takové dva, protože není kam dát výchozí tok a nic nezabrání tomu, aby se spustily oba. |
| Hraniční událost | kroužek na okraji úlohy | Pro něco, co přeruší už běžící práci: vypršení času, chyba, zrušení. Gateway umí položit otázku jen mezi dvěma úlohami, takže modelovat „když tohle v půlce selže“ pomocí gateway znamená vymyslet cyklus, který neexistuje. |
| Event sub-process | tečkovaný zaoblený obdélník | Pro něco, co může nastat kdykoli během procesu, ne na jednom známém místě - zákazník zruší objednávku, regulátor si vyžádá spis. Nakreslit to pomocí gateway znamená gateway za každou jednou úlohou. |
| Business rule task | úloha se značkou tabulky | Když je rozhodnutím čtyřicet pravidel místo jedné otázky. Jedna úloha ukazující na rozhodovací tabulku říká „tohle rozhodují cenová pravidla“ a nechává pravidla tam, kde se dají změnit bez překreslování procesu. |
Čtyři způsoby, jak vyjádřit rozhodnutí, které nejsou kosočtverec. Každý z nich drží mimo diagram něco, co by na něj gateway přitáhla.
Test je, zda je větvení součástí procesu, nebo součástí rozhodnutí. Pojistná událost, která jde na rychlou linku nebo na manuální kontrolu, je proces: obě cesty vypadají jinak a čtenář potřebuje vidět obě. To, do kterého z devíti rizikových pásem událost patří, je rozhodnutí: cesty jsou pak identické a dát to na diagram stojí osm kosočtverců za jednu větu. Podívejte se na jak nakreslit BPMN diagram, kde ta hranice v praxi obvykle leží.
08Časté chyby#
- Paralelní rozdělení, exkluzivní sloučení. Rozdělení vyrobilo dva tokeny; exkluzivní sloučení oba propustí a všechno za ním se stane dvakrát.
- Inkluzivní rozdělení, paralelní sloučení. Deadlock z výše uvedeného. Slaďte své gateway.
- Práce uvnitř gateway. Kosočtverec s popisem „Ověřit a směrovat“ je úloha a gateway v jednom obrysu. Rozdělte je.
- Neoznačené větve. Dvě čáry odcházející z kosočtverce bez popisu nutí čtenáře hádat a polovina z nich uhodne špatně.
- Žádný výchozí tok. Přijde ten jeden vstup, na který nikdo nemyslel, a token nemá kam jít.
- Obyčejné úlohy za event-based gateway. Není to legální a obvykle to znamená, že se myslela exkluzivní gateway.
Gateway a události jsou dvě poloviny řízení toku v BPMN: gateway rozhodují, události čekají a přerušují. Proces modelovaný jen pomocí gateway má sklon růst do dlouhých řetězců dotazování; ten, který použije hraniční události tam, kde má, zůstává mnohem blíž tomu, co se opravdu děje.
Po jednom řádku na každé
- 01Gateway mění počet existujících tokenů a sama nedělá žádnou práci.
- 02Exkluzivní vybere jednu cestu, paralelní všechny, inkluzivní ty pravdivé.
- 03Event-based gateway nerozhoduje - závodí zachytávající události.
- 04Ke každému rozdělení přiřaďte sloučení stejného druhu.
- 05Inkluzivní rozdělení do paralelního sloučení je klasický deadlock.
- 06Pojmenujte gateway jako otázku a každou větev označte odpovědí.
09Časté dotazy#
Jaký je rozdíl mezi výlučnou a inkluzivní bránou?
Výlučná brána, označená křížkem, vezme právě jednu odchozí cestu. Inkluzivní brána, označená kroužkem, vyhodnotí každou odchozí podmínku a vezme všechny, které platí - může to být jedna, několik nebo všechny.
Co dělá paralelní brána?
Paralelní brána, označená plusem, vezme každou odchozí cestu bez podmínek, protože žádné nemá k vyhodnocení. Použitá jako sloučení čeká na token na každé příchozí cestě, než pokračuje - takto se modeluje, že všechny větve skončily.
Co je brána řízená událostmi?
Brána, jejíž každá odchozí cesta začíná mezilehlou zachytávající událostí, přičemž o zvolené cestě rozhodne první událost, která nastane. Takto se modelují závody, například odpověď nebo vypršení času, podle toho, co přijde dřív.
Proč inkluzivní brána uvázne?
Protože inkluzivní sloučení čeká přesně na ty větve, které aktivovalo jeho odpovídající dělení, a ví, které to byly, jen když jsou ty dvě správně spárované. Rozdělte inkluzivní bránou a slučte paralelní a sloučení bude navždy čekat na větev, která nikdy neběžela.
Dělají brány v BPMN nějakou práci?
Ne. Brána jen směruje tokeny: nikdy nevykoná činnost a nikdy nezabere čas. Cokoli se zdá, že brána rozhoduje, vypočítala činnost před ní a podmínky na odchozích tocích ten výsledek jen čtou.
V této sérii
Související články
Základy
Přehled notace
Diagramy chování
Diagramy chování
Praxe modelování
Praxe modelování