Реализация библиотеки управления машиной состояний в памяти приложения

Мясоедов А.А.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 5 (105), 2025 года.

Бесплатный доступ

Статья посвящена проблемам реализации машины состояний для сущностей в информационных системах. Рассмотрена реализация библиотеки для управления машиной состояний с помощью языка программирования Kotlin. В публикации изложены подходы к реализации машин с конечным числом состояний, хранящихся в памяти приложения, для управления жизненным циклом сущностей информационной системы.

машина состояний \ конечный автомат \ событие

Похожие статьи в разделе Прикладные информационные (компьютерные) технологии. Методы основанные на применении компьютеров

Нечеткая система управления состоянием многооперационного станка
Нечеткая система управления состоянием многооперационного станка

Тугенгольд Андрей Кириллович, Изюмов Андрей Игоревич, Волошин Роман Николаевич, Соломыкин Михаил Юрьевич

Определение оптимальных траекторий формообразующих движений при обработке резанием
Определение оптимальных траекторий формообразующих движений при обработке резанием

Заковоротный В.Л., Волошин Д.А., Долгов В.В., Лукьянов А.Д., Флек М.Б.

Короткий адрес: https://sciup.org/140311874

IDS: 140311874   |   УДК: 004.9

Implementation of a State Machine Management Library in Application Memory

The article is devoted to the problems of implementing a state machine for entities in information systems. The implementation of a library for managing a state machine using the Kotlin programming language is considered. The publication presents approaches to implementing machines with a finite number of states stored in the application memory for managing the life cycle of entities in an information system.

Текст научной статьи Реализация библиотеки управления машиной состояний в памяти приложения

В современной разработке программного обеспечения и построения информационных систем управление состоянием данных является одной из ключевых задач. Особенно это актуально в системах, работающих с документами, где необходимо отслеживать их жизненный цикл: создание, редактирование, утверждение, публикацию и другие события. Машина состояний — это математическая модель, которая позволяет формализовать переходы между состояниями объекта в зависимости от событий. В эту формализацию входят: правила перехода, условия, при которых может быть осуществлена смена состояния, побочные и сторонние эффекты при изменении состояния и другие подобные события.

Целью данной работы является создание библиотеки для управления машиной состояния [1] различных сущностей. Для реализации был выбран язык программирования Kotlin, так как он имеет глубокую поддержку функционального и контекстно-ориентированного программирования и отличную совместимость с JVM экосистемой.

Перед разработкой был проведён анализ существующих решений:

  • -    Spring Statemachine [2]. Spring Statemachine является мощной библиотекой, встроенной в экосистему Spring. Она позволяет описывать машину состояний декларативно и имеет широкую функциональность, а также возможность гибкой модификации. Однако данное решение недостатки, а именно: избыточность для простых сценариев, слишком тесная связь со Spring экосистемой;

  • -    Tinder. Tinder это легковесная библиотека для создания машин состояний на Kotlin [3]. Она предоставляет функциональность для описания различных состояний, переходов между ними, сторонних эффектов при переходах. Из минусов данной библиотеки можно выделить отсутствие возможности

  • с охранения состояния в персистентное хранилище и трудность модификации;

  • -    Самописные библиотеки. Данные решения часто создаются для решения конкретной задачи и не являются универсальными.

Было решено реализовать легковесную библиотеку машины состояний на Kotlin, которая соответствует следующим требованиям:

  • -    Декларативное описание состояний и переходов;

  • -    Интеграция с корутинами для асинхронных операций;

  • -    Возможность гибкой модификации библиотеки.

На рисунке 1 представлена диаграмма компонентов использования библиотеки.

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

Основной класс библиотеки StateMachine отвечает за совершение переходов, проверку их корректности и хранение состояний отдельных сущностей. Action и State пользовательские перечисления, которые зависят от конкретной бизнес области. На рисунке 2 представлена диаграмма классов машины состояний.

Рис. 2 – Диаграмма классов машины состояний.

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

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