Реализация библиотеки управления машиной состояний в памяти приложения
Автор: Мясоедов А.А.
Журнал: Форум молодых ученых @forum-nauka
Статья в выпуске: 5 (105), 2025 года.
Бесплатный доступ
Статья посвящена проблемам реализации машины состояний для сущностей в информационных системах. Рассмотрена реализация библиотеки для управления машиной состояний с помощью языка программирования Kotlin. В публикации изложены подходы к реализации машин с конечным числом состояний, хранящихся в памяти приложения, для управления жизненным циклом сущностей информационной системы.
Машина состояний, конечный автомат, событие
Короткий адрес: https://sciup.org/140311874
IDR: 140311874
Текст научной статьи Реализация библиотеки управления машиной состояний в памяти приложения
В современной разработке программного обеспечения и построения информационных систем управление состоянием данных является одной из ключевых задач. Особенно это актуально в системах, работающих с документами, где необходимо отслеживать их жизненный цикл: создание, редактирование, утверждение, публикацию и другие события. Машина состояний — это математическая модель, которая позволяет формализовать переходы между состояниями объекта в зависимости от событий. В эту формализацию входят: правила перехода, условия, при которых может быть осуществлена смена состояния, побочные и сторонние эффекты при изменении состояния и другие подобные события.
Целью данной работы является создание библиотеки для управления машиной состояния [1] различных сущностей. Для реализации был выбран язык программирования Kotlin, так как он имеет глубокую поддержку функционального и контекстно-ориентированного программирования и отличную совместимость с JVM экосистемой.
Перед разработкой был проведён анализ существующих решений:
-
- Spring Statemachine [2]. Spring Statemachine является мощной библиотекой, встроенной в экосистему Spring. Она позволяет описывать машину состояний декларативно и имеет широкую функциональность, а также возможность гибкой модификации. Однако данное решение недостатки, а именно: избыточность для простых сценариев, слишком тесная связь со Spring экосистемой;
-
- Tinder. Tinder это легковесная библиотека для создания машин состояний на Kotlin [3]. Она предоставляет функциональность для описания различных состояний, переходов между ними, сторонних эффектов при переходах. Из минусов данной библиотеки можно выделить отсутствие возможности
-
с охранения состояния в персистентное хранилище и трудность модификации;
-
- Самописные библиотеки. Данные решения часто создаются для решения конкретной задачи и не являются универсальными.
Было решено реализовать легковесную библиотеку машины состояний на Kotlin, которая соответствует следующим требованиям:
-
- Декларативное описание состояний и переходов;
-
- Интеграция с корутинами для асинхронных операций;
-
- Возможность гибкой модификации библиотеки.
На рисунке 1 представлена диаграмма компонентов использования библиотеки.

Рис. 1 – Диаграмма компонентов использования библиотеки машины состояний.
Основной класс библиотеки StateMachine

Рис. 2 – Диаграмма классов машины состояний.
В классе StateMachine поле transitions отвечает за переходы между состояниями, а поле states за список возможных состояний. Метод isActionAvailable проверяет допустимость перехода. Методы performAction и performAsync совершают действия, связанные с переходами синхронно и асинхронно с помощью корутин соответственно.
Разработанная библиотека может быть использована в различных системах, требующих управления жизненным циклом документов или других сущностей с изменяемым состоянием. В будущем возможно расширение функционала с помощью добавления персистентности хранения состояний во внешнем источнике.