![]() |
Flows |
Třída ActivityEdge
ActivityEdge je abstraktní třída pro směrové spojení dvou uzlů aktivity: zdroje (source) a cíle (target). Hrana může řídit tok tokenu. Zdroj i cíl musí být z téže aktivity, jako je hrana.
![]() |
Flows |
Každá hrana má jednu podmínku nazvanou jako guard, přičemž výchozí hodnota je true. Tato podmínka je vyhodnocována za běhu a říká, zda token může být hranou přenesen. Nejčastěji se používá při rozhodování. guard je především součástí zkoušky Intermediate a Advanced, více se tedy zde nemá cenu rozepisovat.
Notace
Používá se otevřená šipka. Pokud má hrana název, je umístěna poblíž šipky.
![]() |
Příklad: Tok |
![]() |
Příklad: Tok se jménem |
![]() |
Příklad: Tok s "hlídačem" (guard) |
![]() |
Příklad: Konektory |
Řídící tok pouze předává token z jedné akce do jiné. Nepřenáší žádná data ani objekty.
Notace je stejná jako u třídy ActivityEdge.
Třída ObjectFlow
Objektový tok kromě tokenu může předávat z jedné akce do jiné i data či objekty.
Objektové toky nemusí mít akci na obou koncích. Objekt přenášený z jedné akce do další musí být kompatibilní mezi oběma akcemi.
Notace
Notace je popsána u třídy Pin.
Předávání tokenu řídícími a objektovými hranami
Řídící tok (Control Flow) pouze přenáší token z jednoho uzlu do dalšího. V případě, že akce má více vstupních hran, tak čeká, až doputuje token ze všech vstupních hran. Až poté je předáno řízení akci (přesněji je popsáno výše u akce). Říkáme tomu implicitní synchronizace.
![]() |
Řídící tok |
Tok objektu (Object flow) je veden nikoliv mezi akcemi, ale mezi tzv. piny (někteří autoři mají tendenci překládat slovo pin, já se do toho pouštět nehodlám. Rozhodně však nejde o zkratku). Kromě tokenu je po hraně přenášen i objekt.
Důležité je to, že pin se rozhodně nechová jako akce a jakmile dostane token, předává jej dál. Následující obrázek se sice velmi podobá předchozímu, ale to jen díky tomu, že např. akce X má dva vstupní piny a tedy se čeká na token a objekt z obou příchozích hran. Stejně tak z akce Y odcházení dva objekty pěkně společně.
![]() |
Tok objektů: AND |
Podobná situace nastává s tokem z akce Y. Z akce Y totiž vypluje objekt rozzářený jako sluníčko na jarním nebi, ale nikde není definováno, po které hraně se pustí dál. Lze to částečně řešit použitím podmínek hran (guard) či explicitním uvedením rozhodování.
Oba případy značně znečitelňují obrázek. Je proto doporučeno (mnou a mnoha dalšími, ne však standardem) se tomuto vyvarovat a vědět proč.
![]() |
Tok objektů: OR |
Žádné komentáře:
Okomentovat