Пример использования VisualFSM в KMM (Android + iOS) приложении - Kotlin Coroutines, Jetpack Compose, SwiftUI
ENG | RUS
VisualFSM – это Kotlin-библиотека для реализации MVI-архитектуры
(Model-View-Intent
)[1] и набор инструментов для визуализации и анализа диаграммы
состояний конечного автомата (Finite-state machine
, далее FSM)[2].
Визуализация происходит по исходному коду реализации FSM. Не требует написания отдельных
конфигураторов для FSM, достаточно добавлять новые классы State
и Action
– они автоматически
добавятся в граф состояний и переходов FSM.
Анализ исходного кода и построение графа выполняется с помощью рефлексии и реализован отдельным модулем, что позволяет подключить его только к тестовой среде.
Feature: AuthFeature.kt
States: AuthFSMState.kt
Actions: actions
AsyncWorker: AuthFSMAsyncWorker.kt
Маппер States в модель данных Ui: ScreenDataMapper.kt
Генерация графа и пример тестов: AuthFSMTests.kt
Для визуализации на CI используйте утилиту graphviz, для визуализации на компьютере разработчика используйте webgraphviz.
Login | Registration | ConfirmationRequested |
![]() |
![]() |
![]() |
AsyncWorkState.Registering | Login with snackbar | UserAuthorized |
![]() |
![]() |
![]() |
MVI
расшифровывается как Model-View-Intent. Это архитектурный паттерн, который следует подходу
однонаправленный поток данных (unidirectional data flow). Данные передаются от Model
к View
только в одном направлении.
FSM
— это абстрактная сущность, которая может находиться только в одном из конечного количества
состояний в определённый момент. Она может переходить из одного состояния в другой в ответ на
входные данные.