Príklady stavových diagramov
Tri stavové automaty, ktoré môžete použiť hneď - životný cyklus objednávky, redakčný workflow s návratom späť a fragment ukazujúci, prečo čakajúci stav nie je zaseknutý stav.
8 min čítaniaUML 2.5.116 z 35
Krátka odpoveď
- Životný cyklus objednávky je príklad, ktorý sa oplatí prevziať: šesť stavov, jeden spúšťač na prechod a dva rôzne konce namiesto jedného.
- Viac koncových stavov je normálne. Zrušená aj doručená sú ukončené, a zviesť ich do toho istého krúžku ten rozdiel skryje.
- Timeout je prechod, ktorého spúšťačom je časová udalosť - after(72 hodín). Stráž netreba, spúšťačom je samotný plynúci čas.
- Stav bez povoleného prechodu je nečinný, nie pokazený. To je opak diagramu aktivít, kde token bez východu znamená zaseknutie.
01Príklad 1: životný cyklus objednávky#
Ak má tabuľka vo vašej databáze stĺpec status, tento diagram už v kóde implicitne existuje - je len rozpísaný cez tucet strážnych podmienok namiesto toho, aby bol raz nakreslený. Spraviť ho výslovným je najlacnejšie cvičenie na hľadanie chýb, aké stavový automat ponúka.
Čítajte prechody, nie boxy. Každý je označený spúšťačom, ktorý ho spôsobuje - checkout, pay, dispatch, deliver - a jeden nesie za lomkou účinok: dispatch / print label. Tie popisky sú obsahom. Diagram šiestich zaoblených boxov s neoznačenými šípkami hovorí len to, že sa veci menia, čo už každý vedel.
Tie dva koncové stavy sú zámerné. Zrušená aj Doručená sú terminálne a nie sú tým istým výsledkom, a nakresliť pre oba jeden kotúč s prstencom by povedalo, že objednávka skončila, bez toho, aby povedalo ako. Nič v UML vás neobmedzuje na jeden.
02Príklad 2: pracovný postup, ktorý sa vracia späť#
Skutočné pracovné postupy zriedka bežia jedným smerom. Niečo sa zamietne, vráti sa a príde znova - a práve v tom spätnom prechode býva to zaujímavé pravidlo.
Prechod revise zo stavu Zamietnutý do Konceptje to, čo z tohto robí stavový automat, a nie kontrolný zoznam. Hovorí, že zamietnutý článok nie je hotový - vstupuje späť do toho istého cyklu, a akékoľvek počítadlo typu „dvakrát zamietnuté znamená eskalovať“ visí na tej šípke, nie na stave.
Všimnite si, že Zamietnutý má východ a Publikovaný nie. Stav bez odchádzajúceho prechodu a bez koncového stavu za ním je tvrdenie, že objekt tam zostane navždy, čo je občas pravda a častejšie opomenutie. Skontrolovať takto každý listový stav je dvojminútový posudok, ktorý nájde skutočné medzery.
Názvy spúšťačov sú udalosti v slovníku domény - submit, approve, reject, revise - nie názvy metód. To drží diagram čitateľný pre redaktorov, ktorí ten proces vlastnia, a to je publikum, ktoré vám vie povedať, že sa mýli.
03Príklad 3: dva východy, ktoré nie sú rozhodnutím#
Najčastejším zmätkom, keď niekto prechádza od diagramov aktivít k stavovým automatom, je, čo znamenajú dve šípky z jedného boxu.
Toto sú dva spúšťače, nie dve vetvy rozhodnutia. Objednávka sedí v stave Čaká sa na platbu neobmedzene dlho; kam pôjde, rozhodne tá udalosť, ktorá príde prvá - pay, alebo časová udalosť timeout(72h). Nič nemusí byť vyčerpávajúce a nie je tu žiadne [else], lebo čakanie je legitímny výsledok.
To je opak diagramu aktivít, kde je token, ktorý dorazí k rozhodnutiu bez povolenej stráže, zastaveným procesom. Rovnako vyzerajúca geometria, opačná sémantika - a preto sa oplatí voľbu medzi tými dvoma notáciami robiť zámerne, nie zo zvyku.
04Kedy taký vôbec kresliť#
Stavový automat sa lacno kreslí a draho udržiava, takže otázku, či ten objekt vôbec má životný cyklus, sa oplatí položiť skôr než prvý box.
Siahnite po ňom, keď
- Objekt má stavové pole s viac než dvoma hodnotami a pravidlá o legálnych zmenách.
- Niektoré prechody sú zakázané a na tom zákaze záleží - vrátenia peňazí, zrušenia, schválenia.
- Ten istý objekt sa dotýka viacero služieb a nezhodnú sa, čo môže robiť ďalej.
- Vypršania alebo expirácie menia objekt bez toho, aby na ňom niekto konal.
Siahnite po niečom inom, keď
- Proces prechádzajúci cez viacero objektov a rolí - to je diagram aktivít.
- Trieda, ktorej stav sa odvodzuje z iných polí, namiesto toho, aby bol uložený.
- Vlastná konfigurácia workflow enginu, ktorá už je zapísaným stavovým automatom.
- Jeden diagram pokrývajúci dva objekty. Kreslite jeden automat na životný cyklus.
Ak proces preklenuje viacero účastníkov namiesto života jedného objektu, chcete diagram aktivít, alebo pre biznisové publikum BPMN. Test je jednoduchý: ak neviete pomenovať tú jedinú vec, ktorej stavy to sú, nie je to stavový automat.
05Čo si zapamätať#
Po jednom riadku na každé
- 01Obsahom sú popisky prechodov. Neoznačené šípky medzi stavmi nehovoria nič.
- 02Viac koncových stavov je normálne - zrušená a doručená sú obe terminálne a nie sú tým istým.
- 03Chýbajúce šípky sú miestom, kde sú chyby. Skontrolujte každú dvojicu, ktorú ste nenakreslili.
- 04Dve šípky zo stavu sú dva spúšťače, nie dve vetvy. Nič nepotrebuje [else].
- 05Jeden stavový automat na objekt so skutočným životným cyklom. Proces preklenujúci role je diagram aktivít.
06Časté otázky#
Aký je dobrý príklad stavového diagramu?
Životný cyklus objednávky: košík, zadaná, zaplatená, odoslaná, doručená, s vetvou zrušená zo stavu zadaná. Má šesť stavov, jeden spúšťač na prechod a dva rôzne konce, čím pokrýva všetko, čo sa od notácie bežne žiada.
Môže mať stavový diagram viac než jeden koncový stav?
Áno a zvyčajne by mal. Zrušená a doručená objednávka sú obe ukončené, ale nie sú to tie isté výsledky, a zvedenie oboch do jedného krúžku ten rozdiel skryje. UML počet koncových stavov neobmedzuje.
Ako sa v stavovom diagrame modeluje timeout?
Ako prechod, ktorého spúšťačom je časová udalosť, zapísaná napríklad timeout(72h) alebo after(72 hodín). Vychádza zo stavu, v ktorom objekt čaká, a mieri na to, čo vyprší. Stráž netreba - spúšťačom je samotný plynúci čas.
Čo sa stane, ak nie je povolený žiadny prechod zo stavu?
Nič, a je to správne. Stavový automat čaká vo svojom stave, kým nepríde spúšťač, takže stav bez povoleného prechodu je nečinný, nie pokazený. Je to opak diagramu aktivít, kde token bez východu znamená zaseknutý proces.
Má byť jeden stavový automat na triedu?
Najviac jeden a len pre triedy so skutočným životným cyklom. Ak má trieda stĺpec so stavom s viac než dvoma hodnotami a pravidlá, ktorá zmena je prípustná, nakreslite ho. Ak je stav odvodený alebo sa nastaví len raz, automat nič nepridá.
V tejto sérii
- 01Čo je UML?
- 02Symboly UML
- 03Výber diagramu
- 04Diagramy tried
- 05Príklady diagramov tried
- 06Ako nakresliť diagram tried
- 07Symboly diagramu tried
- 08Sekvenčné diagramy
- 09Príklady sekvenčných diagramov
- 10Ako nakresliť sekvenčný diagram
- 11Diagramy prípadov použitia
- 12Príklady prípadov použitia
- 13Diagramy aktivít
- 14Príklady aktivít
- 15Stavové diagramy
- 16Príklady stavových diagramov
- 17Diagramy komponentov
- 18Príklady komponentov
- 19Kreslenie diagramu komponentov
- 20Symboly komponentov
- 21Diagramy nasadenia
- 22Príklady nasadenia
- 23Diagramy objektov
- 24Diagramy balíkov
- 25Diagramy zloženej štruktúry
- 26Komunikačné diagramy
- 27Sekvenčný vs komunikačný
- 28Časové diagramy
- 29Diagramy prehľadu interakcií
- 30Diagramy profilov
- 31UML pomocou AI
- 32Príklad e-shopu
- 33Príklad banky
- 34Príklad mikroslužieb
- 35Príklad AWS
Súvisiace články
Diagramy správania
Diagramy správania
Základy
Diagramy štruktúry
Diagramy štruktúry
Diagramy štruktúry