Як представити вкладені дії на діаграмі діяльності UML?


16

Це питання дуже схоже на це , але відповідь не відповідає моїм потребам. Він зосереджений на певному інструменті UML (Papyrus), тоді як моє питання є більш загальним щодо UML.

Я хотів би представити вкладені дії на діаграмі діяльності , але я не знаю, що це загальний спосіб зробити це. Ідея полягає в тому, що існує дія такого ж обсягу, що й інші дії, але більш складна в її виконанні. Я хотів би показати більше подробиць про його виконання, в той час як ще зможете показати цю дію на тому ж рівні, що й інші.

На наведеному нижче прикладі, що представляє собою діаграму активності, яка показує якусь активність " повернення додому ", вкладені дії знаходяться в Pet the catдії. Зверніть увагу, що в цій діаграмі є ще одна потенційна помилка, див. Помилку в кінці питання.

Нарешті повертаємось додому

Я використав структурований вузол, але не впевнений, що це правильний шлях, звідси і питання. У діаграмі стану еквівалент був би складеним станом, але я просто не можу знайти нічого про складене дію. Щодо структурованого вузла, прочитавши кілька документів про нього, я все ще не розумію, як це слід використовувати, тому я можу бути абсолютно невірним із цією схемою.

Я також знаю, що є можливість посилатися на іншу суб-діяльність із символом тризуба, як на зображенні нижче, але це не відповідає моїм потребам, оскільки мені хотілося б, щоб вся інформація була на тій же схемі (тому я можу друкувати це без втрати інформації):

Тризубна суб-активність

То який стандартний спосіб представити таку вкладену дію? Під стандартом я маю на увазі дійсний UML, звичайно сприйнятий і, якщо можливо, виконаний на більшості інструментів проектування UML.

Непов’язана помилка : Інша річ неправильна в моїх діаграмах, стрілки, які приходять до тієї ж дії ( Scratch behind the ears), повинні перейти до вузла, що об’єднується, перш ніж вступити в дію. Дивіться коментарі нижче, включаючи цю цитату JOT .


Ви про це не запитували, але хочу зазначити, що акція "Подряпини за вухами" ніколи не може бути виконана. Хтось знає, чому це правда?
Джим Л.

Ну, я не знаю, але сподіваюся, що це просто котяча вдача, тому що схема, яку я нарешті дав своєму начальнику, виглядає так: /
Тім

Причина полягає в тому, що маркер з обох контурів повинен бути запропонований дії, щоб воно почалося, що неможливо, оскільки він походить від іншого, який ніколи не відбудеться.
Джим Л.

@ JimL. Ви маєте на увазі, що для вступу в цей стан повинні бути істинні обидві умови? Тоді яким би був спосіб висловити те, що я маю намір висловити? Зливається алмазний вузол перед входом до держави?
Тім

Ми говоримо про дію, а не про стан; але так, для усунення цієї проблеми потрібне об'єднання.
Джим Л.

Відповіді:


23

Обидва є "стандартними". Перше зображення за специфікаціями UML

Структуровані вузли діяльності

StructuredActivityNode - це дія, яка також є групою Activity (див. Підпункт 15.6), поведінка якої визначена у „ActivityNodes” та „ActivityEdges”, які він містить. На відміну від інших видів ActivityGroup, StructuredActivityNode є власником ActivityNodes та ActivityEdges, який він містить, і тому вузол або край можуть бути безпосередньо містяться в одному StructuredActivityNode. Вузоли StructuredActivity можуть бути вкладені (як StructuredActivityNode, як дія, також є ActivityNode), тому край або вузол можуть бути опосередковано містяться у ряді вкладених StructuredActivityNodes.

Групи активності

ActivityGoups - це групуючі конструкції для ActivityNodes та ActivityEdges. Вузли та краї можуть належати до декількох груп. Цей підпункт описує два конкретні види ActivityGroups, ActivityPartitions та InterruptibleActivityRegions. StructuredActivityNodes є третім видом ActivityGroup, але вони також є Action і обговорюються в підпункті 16.11 пункту 16 про дії.

2-й малюнок є

Дії виклику

Акція виклику - це дія, яка безпосередньо або опосередковано призводить до виклику поведінки (див. Підпункт 13.2). InvocationActions включає в себе CallActions для виклику операцій або поведінки та для запуску поведінки, які були раніше інстанційними. Додаткові види InvocationActions дозволяють цілеспрямовано відправляти сигнали та інші об'єкти та можливість передавати сигнали доступним приймачам.

Основна відмінність обох випадків - повторне використання. Хоча на першому місці ви просто маєте певну складність у одному місці (вашому Pet the cat), друге - це коли ви (повторно) використовуєте певну дію у кількох місцях. Однак я схильний використовувати варіант виклику, навіть якщо це лише для одного використання. Тут я додаю складену діаграму (яка в EA відкривається при натисканні dbl), щоб показати деталі відповідної дії. Основний потік просто показує огляд, і якщо потрібні деталі, вони знаходяться лише в один клік.

Тепер створення складеної діаграми в EA (знову ж) відрізняється. Потрібно створити AD на рівні пакета, а потім перетягнути його в елемент виклику. Тепер, коли ви натиснете dbl, відкриється вбудована діаграма.


Спасибі за вашу відповідь. Чи можете ви детальніше розповісти про те, коли ви користуєтесь якою можливістю? Я вважаю специфікацію UML досить важкою для читання з боку користувача.
Тім

Це не лекція перед сном :-) Я спробую додати ще одне пояснення.
qwerty_so

Я зробив оновлення із зауваженням щодо іншого EAUI.
qwerty_so
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.