Что происходит в государственной машине UML, если алгоритм выбора перехода (TSA) находит два перехода, которые должны как огонь и следующее верно:UML состояние машины: Конфликт ПОСЛЕ выбора
- переход # 1 заканчивается непосредственно в а состояние
- переход # 2 заканчивается (промежуточно) в выборе квазистационарных
Поскольку и переходы огня, они не могут противоречить друг другу. Иначе они не были бы выбраны TSA в первую очередь.
В настоящее время происходит следующее: Поскольку выбор оценивается (после перехода №2), он принимает путь (переход), который приведет к выходу состояния предка исходного состояния перехода # 2. Из-за этого выхода из состояния предка возникает конфликт с переходом №1.
UML диаграмма, показывающая такую ситуацию
(улучшение по обсуждению с Томасом Kilian в комментариях к его (теперь удален) ответ)
... если происходит Event_1 и х < 0.
Вопросы
- Является ли государственная машина плохо сформированной или что должно произойти сейчас?
- Это незаконно для трансионов после выбора выхода из состояния? По крайней мере, он не хорошо сочетается с «последовательностью выполнения перехода» (exit (s), поведением перехода (переходами), enter (s)). Поскольку в этом случае это будет выход, поведение, выход, поведение, введите (и). Я не мог найти ничего об этом в спецификации UML Superstructure (глава 15). Но тогда все об ортогональных регионах очень туманно описано в этом документе ...
Мотивация
Я задаю вопрос из перспективы библиотечного реализатора. Поэтому я не фокусируюсь на том, как лучше проектировать эту ситуацию. Мне нужно выяснить, как правильно справляться с этой ситуацией (или мне нужно знать, что это незаконная ситуация).
Что такое "Точная семантика машины UML State"? Это документ, который я могу найти на веб-сайте OMG? – DrP3pp3r
1. «Это будет означать, что ваш государственный аппарат может находиться в обоих [...] состояниях одновременно!» Вы говорите, что это возможно в примере или что это возможно в соответствии с спецификацией UML? В моем толковании спецификации суперструктуры UML это незаконно. 2. «Также предупреждение о том, что по умолчанию в UML состояния имеют мелкую историю». Я не думаю, что это правда. Спецификация UML Spec указывает: «Переход к охватывающему состоянию представляет собой переход к исходному псевдостату в каждом регионе». – DrP3pp3r
продолжение ... 3. «зная, что вы пытаетесь моделировать». Дело в том, что я не пытаюсь самостоятельно моделировать себя прямо сейчас. Я пишу библиотеку государственных машин. И я хочу знать, как правильно обращаться с проектами других людей. Поэтому мой вопрос в основном заключается в следующем: что мне делать, если кто-то бросает такую модель в мои рамки? – DrP3pp3r