Obecně o UML zde: UML, Diagram aktivit patří do skupiny diagramů chování (behavioral diagrams)
Akční uzly
Akční uzly představují různé typy akcí v diagramu aktivit:
- Akce - základní akční uzel představující jednoduchou činnost
- Akce spouštějící aktivitu - akce, která vyvolá celou aktivitu
- Odeslání události - uzel reprezentující vyslání události do okolí
- Přijetí události - uzel čekající na příchozí událost
- Časová událost - speciální příjem události vázaný na čas (přesýpací hodiny)
Řídicí uzly
Speciální uzly používané k řízení toku aktivit:
-
Počáteční uzel - označuje začátek procesu
- generuje tokeny - simuluje průchod procesem
-
Koncový uzel - označuje ukončení procesu
-
Rozhodnutí (větvení/spojení) - místo, kde se tok rozděluje nebo slučuje
-
Paralelní souběh (fork/join) - spuštění nebo synchronizace více paralelních toků
-
Konec toku - ukončení konkrétní větve toku
-
Každá akce se spustí až tehdy, když má na všech vstupech token
Řídící uzly
- zelený kosočtverec s více vstupy - pokud mu na vstup přijde jakkýkoliv token, pošle ho dál
- končící hnědá ploška - nepustí tokeny dál, dokud nebudou na vstupech všechny (taková Bariéra v BI-OSY) - dále pokračuje jen jeden
Vícenásobné provedení akce
Diagram ukazuje swimlane rozdělený mezi organizátora průzkumu a účastníka průzkumu, přičemž akce vyplnění dotazníku je provedena vícekrát (znázorněno symbolem násobného výskytu).
sequenceDiagram participant O as Organizátor průzkumu participant U as Účastník průzkumu O->>U: Příprava dotazníků loop Vícenásobné provedení U->>U: Vyplnění dotazníku end U->>O: Zpracování dotazníků
- zde také vidím znázornění různých zodpovědností aktérů za části procesu (znázorněno v tzv. swimlines)
Objektové uzly
Objektové uzly reprezentují tok objektů (dat) mezi akcemi v diagramu aktivit. Existují dva způsoby jejich znázornění:
První způsob zobrazuje objekt jako samostatný uzel (obdélník) vložený přímo do toku mezi akcemi:
flowchart LR A["Vytvoření zadání zkoušky"] --> B[":Test"] --> C["Vyplnění zkouškového testu"]
Druhý způsob zobrazuje objekt jako malý čtvereček (pin) přímo na hranici akce, přičemž tok vede přímo mezi těmito piny:
flowchart LR A["Vytvoření zadání zkoušky"] --Test--> B["Vyplnění zkouškového testu"]
Oba zápisy jsou sémanticky ekvivalentní - liší se pouze vizuální reprezentací předávaného objektu.
Zachycení stavu objektu
Stav objektu lze zachytit třemi způsoby:
- Pojmenovaný - obsahuje název i třídu objektu
- Nepojmenovaný - uvádí pouze třídu objektu
- Stav se zapisuje v hranatých závorkách pod názvem objektu
classDiagram class `Název:Třída` { [Stav] } class `:Třída` { [Stav] }
- Přidání objektového toku
- objektový a řídící tok na sobě vůbec nezávisí a nekolidují
- Doporučení: začít bez objektových uzlů a pak je tam postupně přidat
- Pro zachycení předávaných dat/entit mezi akcemi (lze doplnit i informaci o stavu)
Diagram aktivit - UML
Přerušení provádění
Aktivita může být přerušena vnější událostí, která způsobí opuštění aktuální oblasti a přechod do jiného stavu (např. zrušení objednávky).
flowchart TD Start([Start]) --> Priprava["Příprava objednávky"] Udalost["Událost"] --> Zruseni["Zrušení objednávky"] Priprava --> Zruseni Priprava --> Dalsi["..."] Dalsi --> Konec([Konec]) Zruseni --> Konec
Oblast přerušení je vyznačena přerušovanou hranicí - pokud nastane událost uvnitř této oblasti, provádění aktivit v ní je okamžitě ukončeno a tok pokračuje mimo ni.
- pokud token projde “bleskem” ke zrušení objednávky, tak se zruší všechny akce vykonané v tom regionu
Chyby v diagramu aktivit
- z chyb si beru také to, že z akce vychází jen jedna šipka, veškeré rozdělování zajišťují kosočtverce a plošky
- do akce může vcházet více tokenů, ale samotná akce se spustí až tehdy, když jsou na všech vstupech tokeny