Scenario Patterns, UC 2. druhu¶
Úvod¶
Tato kapitola zavádí dva pojmy vrstvy LLA: Scénářový vzor (jak se vztah z Class Modelu promítá do textu scénáře) a Use Case 2. druhu (Use Case vzniklý vytknutím přes include). Zároveň slouží jako referenční katalog kanonických formulací — analytik zde najde konkrétní věty, které ve scénáři použije.
Vnitřní scénář Use Case 1. druhu je implementací daného UC — popisem algoritmu pracujícího s pojmy a vztahy z CLM (viz Architektura BPM-UCM-CLM, Vrstvy HLA a LLA). Po formální stránce (jednoduchý popis algoritmu, žádná synonyma, ošetření mezních stavů) se psaní řídí normami z kapitoly Principy scénáře UC, slovní programování; tato kapitola popisuje jev a dává hotové formulace.
Scénářový vzor¶
Scénářový vzor je kanonická formulace, kterou se v textu scénáře vyjadřuje práce s určitým vztahem z Class Modelu. Text je vzorem předurčen — pro tentýž vztah se v každém UC použije stejná věta (META pravidlo). Formulace se liší podle toho, kdo akci provádí: obsluha (vybírá ze zobrazeného seznamu) × systém (vyhledává podle klíče a ošetřuje nenalezení). Pojmy ve formulaci jsou vždy třídy/atributy z CLM (placeholdery <…> se nahradí konkrétními třídami z modelu IS).
Společný anti-pattern: nepsat technologicky („dosadí se F.K. / id") — analyticky se prováže na prvek, ne na id.
Odkaz do seznamu¶
- Obsluha: „Obsluze se zobrazí seznam
<destination>. Obsluha vybere<destination>a<source>se prováže na daný prvek<destination>." (seznam je předložen → bez větve NENALEZENO) - Systém: „Přijme se kód
<destination>. Podle tohoto kódu se v seznamu<destination>najde<destination>. Pokud nenalezena,ERR_<DESTINATION>_NENALEZEN.<source>se prováže na nalezený prvek<destination>." - Příklad (
Auto→Barva): „Obsluze se zobrazí seznam Barev. Obsluha vybere Barvu a Auto se prováže na danou Barvu."
Kompozice ku 1¶
- Obsluha: „V prvku
<celek>se vytvoří nová<cast>." — následuje editace jejích atributů. - Systém: „Do
<celek>se vloží nová<cast>; do jejích atributů se dosadí přijaté hodnoty." - Část se nevybírá ze seznamu (to by byl Odkaz) — vzniká nová a vlastní. Příklad: „V prvku Osoba se vytvoří nová Adresa a vyplní se její atributy."
Kompozice ku N¶
- Přidání části — obsluha: „Obsluha přidá k danému
<celek>nový<cast>a edituje jeho atributy." - Přidání části — systém: „Vytvoří se nový
<cast>a vloží se do seznamu částí daného<celek>." - Hromadné zpracování: „Pro každý
<cast>daného<celek>se provede: { … }" (tělo ohraničeno labelem nebo složenými závorkami). - Příklad: „Obsluha přidá k dané Faktuře nový Řádek faktury a vybere Zboží ze zobrazeného seznamu."
Sdílená agregace¶
- Agregace ex post: „Najdou se všechny prvky
<cast>, které<podmínka>, a agregují se do nově vzniklého prvku<celek>." - Migrace části: „
<cast>se převáže z původního prvku<celek>na jiný prvek<celek>." - Strom (
parent_role): „Z prvku<cast>se naviguje na jeho rodiče; kořen rodiče nemá."
Asociační třída¶
- Vznik spojení — obsluha: „Obsluha vybere
<prvni>a vybere<druhy>. Vytvoří se nový prvek<asociacni_trida>a prováže se na vybraný<prvni>a<druhy>." - Vznik spojení — systém: dohledání obou klíčů (při nenalezení
ERR_…_NENALEZEN), vytvoření nosiče a provázání. - Projití přes nosič: „Obsluha vybere
<prvni>a zobrazí se všechny<druhy>pro tento<prvni>" (volitelně s podmínkou nad atributy nosiče). - Nese-li nosič jen holé spojení (bez další informace), je dvojice unikátní — před vznikem se ověří duplicita.
Generalizace (zástupnost)¶
Generalizace nevede ke vztahu mezi výskyty, proto nemá „prováže se" formulaci — projeví se zástupností: kde scénář pracuje s prvkem <předek>, smí to být kterýkoli <potomek>.
- Zobrazení heterogenního seznamu: „Zobrazí se seznam prvků
<předek>" (různé potomky). - Volba chování podle typu je polymorfní dispatch → viz Výběr algoritmu a Reakce.
Vznik prvku a editace atributu¶
- Vznik: „Vytvoří se nový prvek
<třída>." (nepoužívat „založí se" — evokuje uložení). Bod ustáleného stavu: „obsluha může uložit a pokračovat dál". - Editace atributu — obsluha: „Obsluha zadá
<atribut>prvku<třída>." + kontrola vstupu (Exception Flow), např. „Zkontroluje se modulo 11, pokud nesouhlasí,ERR_RC_MODULO11." - Editace atributu — systém: „Systém vloží
<hodnotu>do prvku<třída>."
Výběr algoritmu (STRATEGY)¶
Podle typu se provede jeden z variantních Use Case (princip Open-Closed).
- Obsluha: „Obsluze se zobrazí seznam typů. Obsluha vybere typ a provede se UC
<zpracování>podle vybraného typu." - Systém: „Načte se typ a podle něj se provede odpovídající UC
<zpracování>." - Příklad: „Přijme se zpráva, načte se její typ a podle něj se provede UC Zpracování zprávy."
Reakce (OBSERVER)¶
Na událost se provedou všechny navázané reagující Use Case.
- „Provedou se všechny reakce na
<událost>, viz UC Reakce na<událost>." - Příklad: „Provedou se všechny reakce na změnu zůstatku, viz UC Reakce na změnu zůstatku."
Rozlišující znaky¶
Scénářový vzor není totéž co vztah v Class Modelu. Vztah v CLM popisuje strukturu (kdo na koho odkazuje, multiplicita); scénářový vzor je jeho projekce do děje (jak se to projeví v algoritmu). Týž vztah CLM má proto víc scénářových formulací (obsluha × systém × druh akce), ne jednu.
Use Case 2. druhu¶
Use Case 2. druhu je Use Case, který nevznikl bodem potřebnosti v okolí (cinknutím systému), ale vytknutím části scénáře do samostatného Use Case přes include. Slouží ke zpřehlednění a re-use opakujícího se kusu scénáře.
Use Case 2. druhu žije ve vrstvě LLA; include je nástroj vnitřního scénáře a v HLA se nepoužívá (tam je každý Use Case 1. druhu vázán na cinknutí v okolí).
Generalizace mezi Use Case dává Use Case 2. druhu polymorfní chování (kde scénář volá obecný předek-UC, smí být proveden kterýkoli potomek-UC) — viz Výběr algoritmu (vyber jeden) a Reakce (zavolej všechny).
Rozlišující znaky¶
Use Case 1. druhu vzniká cinknutím systému v okolí (BPM → UCM, vrstva HLA, užitek pro okolí). Use Case 2. druhu vzniká vytknutím přes include uvnitř scénáře (vrstva LLA), bez vlastního cinknutí.
Nejčastější chyby¶
- Volná formulace místo kanonické — věta scénáře se píše „od oka" místo vzorem předurčeného tvaru; výstup pak není opakovatelný ani kontrolovatelný.
- Pojem ve scénáři mimo CLM — scénář zavede prvek, který není třídou v Class Modelu; rozpadá se sdílený slovník UCM ↔ CLM.
- F.K. / id místo provázání na prvek — technologická formulace v analytickém scénáři.
- Include v HLA — vytýkání (Use Case 2. druhu) patří do LLA.
Vazby¶
Kapitola navazuje na Architektura BPM-UCM-CLM (scénář otevírá vstup z UCM do CLM) a Vrstvy HLA a LLA (scénář je LLA). Formální normy psaní drží Principy scénáře UC, slovní programování. Use Case 1. druhu definuje Use Case 1. druhu. Polymorfní chování Use Case 2. druhu stojí na Generalizaci (tatáž generalizace jako mezi třídami, aplikovaná na Use Case). Strukturu vztahů, jejichž scénářové formulace zde katalog uvádí, definují Odkaz do seznamu, Kompozice ku 1, Kompozice ku N, Sdílená agregace, Asociační třída, Class, Generalizace.
Verze a změny¶
- 1.1 — Rozšířeno na referenční katalog kanonických formulací (per vzor, obsluha/systém); přejmenováno na Scenario Patterns, UC 2. druhu (pravidla psaní přesunuta do Principy scénáře UC).
- 1.0 — Zavedení pojmů Scénářový vzor a Use Case 2. druhu (přehledová úroveň).