Jak reprezentować zagnieżdżone działania na diagramie aktywności UML?

16

To pytanie jest bardzo podobne do tego , ale odpowiedź nie odpowiada moim potrzebom. Koncentruje się na konkretnym narzędziu UML (Papyrus), podczas gdy moje pytanie jest bardziej ogólne na temat UML.

Chciałbym przedstawić zagnieżdżoną akcję na diagramie aktywności , ale nie wiem, jaki jest typowy sposób jej wykonania. Chodzi o to, że istnieje akcja o tym samym zakresie, co inne akcje, ale jej wykonanie jest bardziej skomplikowane. Chciałbym pokazać więcej szczegółów na temat jego wykonania, wciąż będąc w stanie pokazać tę akcję na tym samym poziomie, co inne.

W poniższym przykładzie, który jest schematem aktywności przedstawiającym rodzaj aktywności „z powrotem do domu ”, zagnieżdżone akcje są w Pet the catakcji. Zwróć uwagę, że na tym diagramie występuje inny potencjalny błąd, zobacz erratę na końcu pytania.

Wreszcie wróciłem do domu

Użyłem strukturalnego węzła, ale nie jestem pewien, czy jest to właściwy sposób, stąd pytanie. Na wykresie statycznym odpowiednikiem byłby stan złożony, ale po prostu nie mogę nic znaleźć na temat działania złożonego. Jeśli chodzi o węzeł strukturalny, po przeczytaniu kilku dokumentów na jego temat nadal nie rozumiem, jak powinien być używany, więc mogę się całkowicie mylić z tym diagramem.

Wiem również, że istnieje możliwość odwołania się do innej poddziałania z symbolem trójzębu, jak na poniższym obrazku, ale nie odpowiada moim potrzebom, ponieważ chciałbym uzyskać całą informację na tym samym schemacie (dzięki czemu mogę wydrukować bez utraty informacji):

Poddziałanie trójzębu

Więc jaki jest standardowy sposób reprezentowania takiej zagnieżdżonej akcji? Przez standard rozumiem prawidłowy UML, powszechnie widziany i, jeśli to możliwe, możliwy do wykonania na większości narzędzi do projektowania UML.

Niepowiązana errata: Inna sprawa jest niewłaściwa na moich diagramach, strzałki, które przychodzą do tej samej akcji ( Scratch behind the ears), powinny przejść do węzła scalającego przed wejściem do akcji. Zobacz komentarze poniżej, w tym cytat JOT .

Tim
źródło
Nie pytałeś o to, ale chcę podkreślić, że akcja „Zadrapanie za uszami” nigdy nie może zostać wykonana. Czy ktoś wie, dlaczego to prawda?
Jim L.
Cóż, nie wiem, ale mam nadzieję, że to tylko temperament kota, ponieważ schemat, który w końcu przekazałem mojemu szefowi, wygląda tak: /
Tim
Powodem jest to, że żeton z obu ścieżek musi zostać zaoferowany akcji, aby mogła się rozpocząć, co jest niemożliwe, ponieważ jeden pochodzi z innego, który nigdy się nie wydarzy.
Jim L.
@ JimL.Czy masz na myśli, że oba warunki muszą być spełnione, aby wejść w ten stan? Jak zatem wyrazić to, co zamierzam wyrazić? Scalony węzeł diamentowy przed wejściem do stanu?
Tim
Mówimy o akcji, a nie o stanie; ale tak, aby naprawić ten problem, konieczne jest scalenie.
Jim L.

Odpowiedzi:

23

Oba są „standardowe”. Pierwsze zdjęcie zgodnie ze specyfikacją UML to

Ustrukturyzowane węzły aktywności

StructuredActivityNode jest działaniem, które jest również ActivityGroup (patrz podpunkt 15.6) i którego zachowanie jest określone przez ActivityNodes i ActivityEdges, które zawiera. W przeciwieństwie do innych rodzajów ActivityGroup, StructuredActivityNode jest właścicielem ActivityNodes i ActivityEdges, które zawiera, a zatem węzeł lub krawędź może być bezpośrednio zawarty tylko w jednym StructuredActivityNode. StructuredActivityNode może być zagnieżdżony (jako StructuredActivityNode, jako akcja, jest również ActivityNode), jednak krawędź lub węzeł mogą być pośrednio zawarte w wielu zagnieżdżonych StructuredActivityNodes.

Grupy aktywności

ActivityGoups to konstrukcje grupujące dla ActivityNodes i ActivityEdges. Węzły i krawędzie mogą należeć do więcej niż jednej grupy. Ta podsekcja opisuje dwa konkretne rodzaje ActivityGroups, ActivityPartitions i InterruptibleActivityRegions. StructuredActivityNodes są trzecim rodzajem ActivityGroup, ale są to również akcje i zostały omówione w klauzuli 16.11 klauzuli 16 dotyczącej akcji.

Drugie zdjęcie to

Akcje wywoływania

InvocationAction to akcja, która skutkuje bezpośrednio lub pośrednio wywołaniem działania (patrz podpunkt 13.2). Funkcje wywoływania obejmują funkcje wywoływania do wywoływania operacji lub zachowań oraz do uruchamiania zachowań, które zostały wcześniej utworzone. Dodatkowe rodzaje wywołań Funkcje umożliwiają ukierunkowane wysyłanie sygnałów i innych obiektów oraz możliwość nadawania sygnałów do dostępnych odbiorników.

Główną różnicą między tymi dwoma przypadkami jest ponowne użycie. Podczas gdy na pierwszym miejscu masz tylko pewną złożoność w jednym miejscu (swoim Pet the cat), drugim jest, gdy (ponownie) używasz określonej akcji w wielu miejscach. Jednak zwykle używam wariantu wywoływania, nawet jeśli jest on tylko do jednorazowego użytku. Tutaj dodaję schemat złożony (który w EA otwiera się po kliknięciu dbl-click), aby pokazać szczegóły odpowiedniej akcji. Główny przepływ pokazuje tylko przegląd, a jeśli potrzebne są szczegóły, wystarczy kliknąć dbl-click.

Teraz tworzenie diagramu złożonego w EA jest (znowu) inne. Musisz utworzyć reklamę na poziomie pakietu, a następnie przeciągnąć ją do elementu wywołania. Teraz, gdy klikniesz dbl-kliknięcie, otworzy się osadzony schemat.

qwerty_so
źródło
Dziękuję za Twoją odpowiedź. Czy możesz podać więcej szczegółów na temat tego, kiedy korzystasz z tej możliwości? Uważam, że specyfikacja UML jest dość trudna do odczytania, po stronie użytkownika.
Tim
To nie wykład na dobranoc :-) Spróbuję dodać więcej wyjaśnień.
qwerty_so,
Zrobiłem aktualizację z uwagą dotyczącą innego EAUI.
qwerty_so,