Переходы в подсостояния или из них могут обладать еще более сложной семантикой. Так, на рис. 12.9 отображены следующие варианты переходов (спецификация переходов не показана)
Переходы в подсостояния или из них могут обладать еще более сложной семантикой. Так, на рис. 12.9 отображены следующие варианты переходов (спецификация переходов не показана):
переход в конкретное подсостояние (переход из состояния «Выбор участка» строго в начальное подсостояние);
выход из конкретного подсостояния (переходы из подсостояний «Формирование задания» и «Расчет» в состояние «Корректировка исходных данных»);
переход, стрелка которого соединена с границей некоторого составного состояния, обозначает переход в начальное подсостояние податомата (переход из состояния «Корректировка исходных данных»). Если внутри составного состояния имеется знак истории состояния (англ. state history), то переход выполняется в подсостояние, из которого в последний раз был выполнен выход из составного состояния, несмотря на начальное состояние. Так в примере, если после корректировки данных впервые выполняется определение скоростей, то по переходу система попадает в начальное подсостояние. Если в подсостояниях «Формирование задания» и «Расчет» обнаруживается необходимость корректировки исходных данных, то возврат управления осуществляется в вызвавшее корректировку подсостояние;
переход, стрелка которого выходит из границы некоторого составного состояния, обозначает переход из его конечного подсостояния (переход в конечное состояние).
Рис. 12.9. Сложные переходы
Как уже было отмечено, поведение параллельных подавтоматов независимо друг от друга, что позволяет реализовать многозадачность в программного обеспеченияах. Однако в некоторых случаях может возникнуть необходимость учета в модели синхронизации наступления отдельных событий. Для этой цели в UML имеется специальное псевдосостояние, которое называется синхронизирующим (англ. synch state).
Синхронизирующее состояние обозначается небольшой окружностью, внутри которой помещен символ звездочки «*». Оно используется совместно с переходом-соединением или переходом-ветвлением для того, чтобы явно указать события в других подавтоматах, оказывающие непосредственное влияние на поведение данного подавтомата. На рис. 12.10 показан пример использования синхронизирующих состояний.