Общая нотация триггера UML

Какова нотация общего триггера в конечном автомате UML? Как насчет нескольких общих триггеров?

Допустим, у нас есть конечный автомат с 20 состояниями. 18 из этих состояний имеют общий триггер, который будет переходить в State_A. Другой распространенный триггер будет переходить в State_D.

Что такое графическое обозначение для этого? любой пример будет оценен.

С уважением, Оле

ИЗМЕНИТЬ

Это верная запись?

введите здесь описание изображения


person Ole Tetzschner    schedule 13.01.2015    source источник
comment
Спасибо xmojmr, но это правильное обозначение?   -  person Ole Tetzschner    schedule 13.01.2015
comment
Это хороший вопрос. Подождем хорошего ответа (на ротацию вашего вопроса по всему земному шару уходит 24 часа). Для меня это выглядит подозрительно, потому что initial pseudostate/entry point pseudostate должно быть ограничено, поскольку в регионе может быть не более одной начальной вершины/В каждом регионе конечного автомата или составного состояния он имеет не более одного перехода к вершине в одном и том же регион. Прямо сейчас у меня даже нет подсказки для подходящих ключевых слов Google.   -  person xmojmr    schedule 13.01.2015


Ответы (3)


Хитрость заключается в том, чтобы разложить проблему на иерархические конечные автоматы (см. также Википедия: Конечный автомат UML → Иерархически вложенный состояния) с состояниями автомата и составными состояниями и т. д., как вы можете видеть ниже в примерах, взятых из онлайн-книги Кирилла Фахрутдинова.

uml-диаграммы. org: банкомат банка, пример схемы конечного автомата UML

введите здесь описание изображения

uml- charts.org: состояния потоков и жизненный цикл Java 6, пример диаграммы конечного автомата протокола UML

введите здесь описание изображения

person xmojmr    schedule 13.01.2015
comment
Спасибо за Ваш ответ. Можете ли вы проверить запись в моем отредактированном сообщении? - person Ole Tetzschner; 13.01.2015

Ваша запись действительна. Он использует точки входа, и это нормально. Имейте в виду, что существуют разные варианты обозначения точек входа. В качестве альтернативы точкам входа вы также можете использовать переходы, непосредственно нацеленные на подсостояния. Вот ваш «упрощенный» пример:

введите здесь описание изображения

Кстати, этот пример создан с помощью инструментов Yakindu Statecharts с открытым исходным кодом. Он обеспечивает встроенную симуляцию, поэтому вы можете интерактивно выполнять диаграммы состояний.

person Axel T.    schedule 27.04.2015

Используйте соединительный элемент. Соединение используется, когда множество переходов приводят к одному состоянию. Это делает диаграмму конечного автомата понятной. Чтение суперструктуры UML, части псевдосостояний StateMachine.

Пример диаграммы состояний с элементом Junction:

введите здесь описание изображения

person Vladimir    schedule 14.01.2015
comment
Владимир, спасибо, но с стыком мне еще предстоит рисовать переход почти из всех состояний. Если бы у меня было более 20 состояний, это был бы графический беспорядок. Если бы можно было нарисовать этот общий триггер с одним переходом, графику было бы легче читать/понимать. Любые решения этой проблемы? - person Ole Tetzschner; 15.01.2015
comment
Я боюсь, что нет специализированного элемента для разработки явного целевого состояния, но может подойти следующее решение. Если все ваши состояния являются подсостояниями одного родительского состояния, родительское состояние может быть связано переходом, начинающимся с края родительского состояния, в состояние, в котором вам нужен адрес из всех подсостояний. Всякий раз, когда поведение внутри родительского состояния достигает FinalState, переход, который я описал выше, будет активирован и начнет выполнять целевое состояние. Но необходимо также создать переход в конечное состояние из каждого состояния внутри родителя или добавить столько конечных состояний нужно близко к штатам. - person Vladimir; 16.01.2015
comment
@ Владимир, можете ли вы визуализировать свое решение, примененное к примеру State_A, State_B, State_C в вопросе ОП? Или визуализируйте это на каком-нибудь другом примере, напоминающем исходную задачу с машиной состояний с 20 состояниями. 18 из этих состояний имеют общий триггер...? - person xmojmr; 21.01.2015