Příklady stavových diagramů
Tři stavové automaty, které můžete použít hned - životní cyklus objednávky, redakční workflow s návratem zpět a fragment ukazující, proč čekající stav není zaseknutý stav.
8 min čteníUML 2.5.116 z 35
Krátká odpověď
- Životní cyklus objednávky je příklad, který stojí za převzetí: šest stavů, jeden spouštěč na přechod a dva různé konce místo jednoho.
- Více koncových stavů je normální. Zrušená i doručená jsou ukončené, a svést je do téhož kroužku ten rozdíl skryje.
- Timeout je přechod, jehož spouštěčem je časová událost - after(72 hodin). Stráž není potřeba, spouštěčem je samotný plynoucí čas.
- Stav bez povoleného přechodu je nečinný, ne rozbitý. To je opak diagramu aktivit, kde token bez východu znamená zaseknutí.
01Příklad 1: životní cyklus objednávky#
Pokud má tabulka ve vaší databázi sloupec status, tenhle diagram už v kódu implicitně existuje - je jen rozepsaný přes tucet strážních podmínek místo toho, aby byl jednou nakreslený. Udělat ho výslovným je nejlevnější cvičení na hledání vad, jaké stavový automat nabízí.
Čtěte přechody, ne boxy. Každý je označený spouštěčem, který ho způsobuje - checkout, pay, dispatch, deliver - a jeden nese za lomítkem účinek: dispatch / print label. Ty popisky jsou obsahem. Diagram šesti zaoblených boxů s neoznačenými šipkami říká jen to, že se věci mění, což už každý věděl.
Ty dva koncové stavy jsou záměrné. Zrušená i Doručená jsou terminální a nejsou týmž výsledkem, a nakreslit pro oba jeden kotouč s prstencem by řeklo, že objednávka skončila, aniž by řeklo jak. Nic v UML vás neomezuje na jeden.
02Příklad 2: pracovní postup, který se vrací zpět#
Skutečné pracovní postupy zřídka běží jedním směrem. Něco se zamítne, vrátí se a přijde znovu - a právě v tom zpětném přechodu bývá to zajímavé pravidlo.
Přechod revise ze stavu Zamítnutý do Konceptje to, co z tohohle dělá stavový automat, a ne kontrolní seznam. Říká, že zamítnutý článek není hotový - vstupuje zpět do téhož cyklu, a jakékoli počítadlo typu „dvakrát zamítnuto znamená eskalovat“ visí na té šipce, ne na stavu.
Všimněte si, že Zamítnutý má východ a Publikovaný ne. Stav bez odchozího přechodu a bez koncového stavu za ním je tvrzení, že objekt tam zůstane navždy, což je občas pravda a častěji opomenutí. Zkontrolovat takhle každý listový stav je dvouminutový posudek, který najde skutečné mezery.
Názvy spouštěčů jsou události ve slovníku domény - submit, approve, reject, revise - ne názvy metod. To drží diagram čitelný pro redaktory, kteří ten proces vlastní, a to je publikum, které vám umí říct, že se mýlí.
03Příklad 3: dva východy, které nejsou rozhodnutím#
Nejčastějším zmatkem, když někdo přechází od diagramů aktivit ke stavovým automatům, je, co znamenají dvě šipky z jednoho boxu.
Tohle jsou dva spouštěče, ne dvě větve rozhodnutí. Objednávka sedí ve stavu Čeká se na platbu neomezeně dlouho; kam půjde, rozhodne ta událost, která přijde první - pay, nebo časová událost timeout(72h). Nic nemusí být vyčerpávající a není tu žádné [else], protože čekání je legitimní výsledek.
To je opak diagramu aktivit, kde je token, který dorazí k rozhodnutí bez povolené stráže, zastaveným procesem. Stejně vypadající geometrie, opačná sémantika - a proto se vyplatí volbu mezi těmi dvěma notacemi dělat záměrně, ne ze zvyku.
04Kdy takový vůbec kreslit#
Stavový automat se levně kreslí a draze udržuje, takže otázku, jestli ten objekt vůbec má životní cyklus, se vyplatí položit dřív než první box.
Sáhněte po něm, když
- Objekt má stavové pole s víc než dvěma hodnotami a pravidla o legálních změnách.
- Některé přechody jsou zakázané a na tom zákazu záleží - vrácení peněz, zrušení, schválení.
- Téhož objektu se dotýká několik služeb a neshodnou se, co může dělat dál.
- Vypršení nebo expirace mění objekt, aniž by na něm někdo jednal.
Sáhněte po něčem jiném, když
- Proces procházející několika objekty a rolemi - to je diagram aktivit.
- Třída, jejíž stav se odvozuje z jiných polí, místo aby byl uložený.
- Vlastní konfigurace workflow enginu, která už je zapsaným stavovým automatem.
- Jeden diagram pokrývající dva objekty. Kreslete jeden automat na životní cyklus.
Pokud proces překlenuje několik účastníků místo života jednoho objektu, chcete diagram aktivit, nebo pro byznysové publikum BPMN. Test je jednoduchý: pokud neumíte pojmenovat tu jedinou věc, jejíž stavy to jsou, není to stavový automat.
05Co si zapamatovat#
Po jednom řádku na každé
- 01Obsahem jsou popisky přechodů. Neoznačené šipky mezi stavy neříkají nic.
- 02Víc koncových stavů je normální - zrušená a doručená jsou obě terminální a nejsou totéž.
- 03Chybějící šipky jsou místem, kde jsou chyby. Zkontrolujte každou dvojici, kterou jste nenakreslili.
- 04Dvě šipky ze stavu jsou dva spouštěče, ne dvě větve. Nic nepotřebuje [else].
- 05Jeden stavový automat na objekt se skutečným životním cyklem. Proces překlenující role je diagram aktivit.
06Časté dotazy#
Jaký je dobrý příklad stavového diagramu?
Životní cyklus objednávky: košík, zadaná, zaplacená, odeslaná, doručená, s větví zrušená ze stavu zadaná. Má šest stavů, jeden spouštěč na přechod a dva různé konce, čímž pokrývá vše, co se od notace běžně žádá.
Může mít stavový diagram více než jeden koncový stav?
Ano a obvykle by měl. Zrušená a doručená objednávka jsou obě ukončené, ale nejde o tentýž výsledek, a svedení obou do jednoho kroužku ten rozdíl skryje. UML počet koncových stavů neomezuje.
Jak se ve stavovém diagramu modeluje timeout?
Jako přechod, jehož spouštěčem je časová událost, zapsaná například timeout(72h) nebo after(72 hodin). Vychází ze stavu, v němž objekt čeká, a míří na to, co vypršení vytvoří. Stráž není potřeba - spouštěčem je samotný plynoucí čas.
Co se stane, když není povolen žádný přechod ze stavu?
Nic, a je to správně. Stavový automat čeká ve svém stavu, dokud nepřijde spouštěč, takže stav bez povoleného přechodu je nečinný, nikoli rozbitý. Je to opak diagramu aktivit, kde token bez východu znamená zaseknutý proces.
Má být jeden stavový automat na třídu?
Nejvýše jeden a jen pro třídy se skutečným životním cyklem. Má-li třída sloupec se stavem s více než dvěma hodnotami a pravidla, která změna je přípustná, nakreslete jej. Je-li stav odvozený nebo se nastaví jen jednou, automat nic nepřidá.
V této sérii
- 01Co je UML?
- 02Symboly UML
- 03Výběr diagramu
- 04Diagramy tříd
- 05Příklady diagramů tříd
- 06Jak nakreslit diagram tříd
- 07Symboly diagramu tříd
- 08Sekvenční diagramy
- 09Příklady sekvenčních diagramů
- 10Jak nakreslit sekvenční diagram
- 11Diagramy případů užití
- 12Příklady případů užití
- 13Diagramy aktivit
- 14Příklady aktivit
- 15Stavové diagramy
- 16Příklady stavových diagramů
- 17Diagramy komponent
- 18Příklady komponent
- 19Kreslení diagramu komponent
- 20Symboly komponent
- 21Diagramy nasazení
- 22Příklady nasazení
- 23Diagramy objektů
- 24Diagramy balíků
- 25Diagramy složené struktury
- 26Komunikační diagramy
- 27Sekvenční vs komunikační
- 28Časové diagramy
- 29Diagramy přehledu interakcí
- 30Diagramy profilů
- 31UML pomocí AI
- 32Příklad e-shopu
- 33Příklad banky
- 34Příklad mikroslužeb
- 35Příklad AWS
Související články
Diagramy chování
Diagramy chování
Základy
Diagramy struktury
Diagramy struktury
Diagramy struktury