SysML/UML Моделирование вложенной диаграммы конечного автомата в диаграмме действий

Я все еще новичок в SysML и UML и моделировании этих диаграмм. Я использую Cameo Systems Modeler 19.0.

Контекст. Моя проблема связана с непрерывным моделированием диаграммы деятельности, в которую вложена диаграмма конечного автомата. На диаграмме активности у меня есть действие Call Behavior Action, которое вызывает диаграмму конечного автомата. После этого действия поведения при вызове должны быть выполнены другие действия. Когда я имитирую диаграмму активности, симуляция переключается на диаграмму вызываемого конечного автомата без каких-либо проблем. Также симуляция этой диаграммы конечного автомата полностью функциональна.

Теперь о моей проблеме: когда я завершаю симуляцию диаграммы конечного автомата, выбирая состояния, путь и их триггеры, чтобы добраться до узла конечного состояния, он завершает симуляцию диаграммы конечного автомата (как и ожидалось). Но симуляция не будет продолжать выполняться на диаграмме родительских действий.

Я делаю что-то неправильно? Разве вы не должны быть в состоянии моделировать такие вложенные диаграммы? Ожидал ли я чего-то от Cameo Systems Modeler, чего эта программа просто не может?

Спасибо за вашу помощь! Если моего описания недостаточно, я с радостью предоставлю .mdzip в качестве минимального примера!


person e_frog    schedule 29.06.2020    source источник


Ответы (2)


В конечных автоматах UML и SysML достижение псевдосостояния завершения означает, что область, для которой поведение, определенное конечным автоматом, завершается (когда она находится в верхней области на диаграмме конечного автомата). В разных инструментах это лечится по-разному. Некоторые инструменты используют (по умолчанию или всегда) конечные автоматы в качестве мастеров для моделирования, и когда самый верхний конечный автомат входит в псевдосостояние завершения, моделирование останавливается, даже если оно было вызвано действием.

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

Мысль: многие инструменты отличаются от того, что определено в UML и SysML, особенно при моделировании динамического поведения. Таким образом, в Cameo могут быть некоторые специальные опции, которые, возможно, требуют некоторого внимания. Одним из решений для некоторых инструментов является создание главного конечного автомата, который запускает основную активность.

person sim    schedule 29.06.2020
comment
достижение псевдосостояния завершения означает, что вся система завершается: нет, только включающее состояние/регион, а в данном случае, когда кажется, что конечный автомат завершен, завершает вызывающее действие поведения вызова и только это, поэтому активность может продолжаться, если после нее есть край - person bruno; 29.06.2020
comment
ок спасибо за ваши ответы! дело в том, что если я заменю конечное состояние точкой выхода, модель не будет моделировать, потому что точка выхода явно не поддерживается: сообщение об ошибке: ОШИБКА: псевдосостояние точки выхода не поддерживается при выполнении. Может ли быть другой способ получить желаемый результат любым другим способом в Cameo? - person e_frog; 29.06.2020
comment
@e_frog точка завершения была правильным выбором. Только ты уверен, что все с государственной машиной покончено? у вас есть подсистема/машина/штат/регион и т. д., и хотя бы один не закончил объяснять? иначе это ошибка/ограничение вашего инструмента - person bruno; 29.06.2020
comment
@Бруно, ты прав, я поправил. Как правило, это очень специфичное поведение инструмента. Я не знаю Cameo, но в Rhapsody и некоторых других я работал с (прежним и недавно предложенным) способами преодоления этого. - person sim; 29.06.2020
comment
@ Бруно Да, это полностью закончилось. Я воспроизвел описанное поведение с помощью очень простого stm (только начальное состояние, примерное состояние и конечное состояние и два перехода без промежуточного сигнала). - person e_frog; 29.06.2020
comment
@e_frog, так что, вероятно, ошибка инструмента (или вариант, который вы не видели), посмотрите их FAQ и форум, чтобы узнать, является ли это известной проблемой, иначе не бойтесь связаться с ними, чтобы сообщить об ошибке, нет ничего хуже, чем ошибка обнаружено пользователями, но не сообщается (мне хорошо известно, что ^^) - person bruno; 29.06.2020
comment
@bruno Я сообщил об этом как о проблеме. Если что-то выйдет из этого и я вспомню этот пост, я обязательно дам обновленную информацию по этому вопросу! Спасибо! - person e_frog; 29.06.2020
comment
@bruno это определенно ошибка. Я выдал проблему, и служба поддержки идентифицировала ее как таковую. - person e_frog; 02.07.2020

Это определенно ошибка. Я выдал проблему, и служба поддержки идентифицировала ее как таковую.

Обновление: исправлено

person e_frog    schedule 02.07.2020