чем отличаются переходы внешние от внутренних и локальных? в Spring doc 11.5 Настройка переходов

#spring-statemachine

#spring-statemachine

Вопрос:

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

Ответ №1:

Внутренний

Вы можете думать о внутреннем переходе как о самопереходе — из A в A; Исходное и целевое состояния всегда одинаковы.

Локальные и внешние

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

Пожалуйста, ознакомьтесь с официальной спецификацией UML (раздел 14.5.11 — Класс перехода, особенно — раздел ограничений, где формально определено вышеупомянутое), на основе которого реализован конечный автомат Spring.

Комментарии:

1. благодаря упоминанию, что конечный автомат Spring основан на спецификациях UML