Первый публичный релиз VisualFSM доступен на Maven Central
Базовые классы, JVM и KMM версия:
Поддержка RxJava 3 (FeatureRx, AsyncWorkerRx и их зависимости):
Поддержка RxJava 2 (FeatureRx, AsyncWorkerRx и их зависимости):
Инструменты для анализа и построения графа:
Документация и исходный код: https://github.com/Kontur-Mobile/VisualFSM
Базовые классы, JVM и KMM версия:
implementation('ru.kontur.mobile.visualfsm:visualfsm-core:1.0.0')
Поддержка RxJava 3 (FeatureRx, AsyncWorkerRx и их зависимости):
implementation('ru.kontur.mobile.visualfsm:visualfsm-rxjava3:1.0.0')
Поддержка RxJava 2 (FeatureRx, AsyncWorkerRx и их зависимости):
implementation('ru.kontur.mobile.visualfsm:visualfsm-rxjava2:1.0.0')
Инструменты для анализа и построения графа:
testImplementation('ru.kontur.mobile.visualfsm:visualfsm-tools:1.0.0')
Документация и исходный код: https://github.com/Kontur-Mobile/VisualFSM
GitHub
GitHub - Kontur-Mobile/VisualFSM: VisualFSM - Kotlin Multiplatform library for FSM based MVI with visualization and analysis tools
VisualFSM - Kotlin Multiplatform library for FSM based MVI with visualization and analysis tools - Kontur-Mobile/VisualFSM
Опубликован bugfix релиз 1.0.1, список изменений:
Исправление ошибок:
- Модуль visualfsm-tools: при построении графа FSM использовались не только sealed классы состояний, но и другие вложенные классы, теперь при построении графа FSM используются только sealed классы.
- Все модули: исправлено создание артефактов javadoc.
Исправление ошибок:
- Модуль visualfsm-tools: при построении графа FSM использовались не только sealed классы состояний, но и другие вложенные классы, теперь при построении графа FSM используются только sealed классы.
- Все модули: исправлено создание артефактов javadoc.
Опубликован bugfix релиз 1.0.2, список изменений:
Исправление ошибок:
- AsyncWorker и AsyncWorkerRx: Добавлена дополнительная проверка в сценарии отмены асинхронной задачи. Перед запуском Action обработки результата проверяется, что задача не была отменена другим состоянием.
Исправление ошибок:
- AsyncWorker и AsyncWorkerRx: Добавлена дополнительная проверка в сценарии отмены асинхронной задачи. Перед запуском Action обработки результата проверяется, что задача не была отменена другим состоянием.
Опубликован bugfix релиз 1.0.3, список изменений:
Исправление ошибок:
- Исправлено состояние гонки между FeatureRx и AsyncWorkerRx при отмене асинхронной задачи.
Исправление ошибок:
- Исправлено состояние гонки между FeatureRx и AsyncWorkerRx при отмене асинхронной задачи.
Опубликован релиз 1.1.0, список изменений:
Новая функциональность:
- KSP кодогенерация TransitionsFactory. Cокращает код Action и Transition - больше не нужно указывать в конструкторе Transition классы начального и конечного состояния, и не нужно вручную реализовывать getTransitions() метод внутри Action. Как подключить кодогенерацию читайте в Quickstart
Новая функциональность:
- KSP кодогенерация TransitionsFactory. Cокращает код Action и Transition - больше не нужно указывать в конструкторе Transition классы начального и конечного состояния, и не нужно вручную реализовывать getTransitions() метод внутри Action. Как подключить кодогенерацию читайте в Quickstart
GitHub
VisualFSM/docs/Quickstart.md at main · Kontur-Mobile/VisualFSM
VisualFSM - Kotlin Multiplatform library for FSM based MVI with visualization and analysis tools - Kontur-Mobile/VisualFSM
Опубликован bugfix релиз 1.1.1, список изменений:
Исправление ошибок:
- Исправлено состояние гонки между Feature и AsyncWorker при вызове proceed метода.
- Исправлен порядок инициализации объекта Feature.
Исправление ошибок:
- Исправлено состояние гонки между Feature и AsyncWorker при вызове proceed метода.
- Исправлен порядок инициализации объекта Feature.
Опубликованы примеры использования библиотеки VisualFSM в Android и KMM (Android + iOS) проектах:
- в KMM (Android + iOS) проекте используются Kotlin Coroutines, Jetpack Compose, SwiftUI. 80% кода на Kotlin (FSM и Android Ui) и 20% на Swift (iOS Ui):
https://github.com/Kontur-Mobile/VisualFSM-Sample-KMM
- в Android проекте используются Kotlin Coroutines, Jetpack Compose:
https://github.com/Kontur-Mobile/VisualFSM-Sample-Android
- в KMM (Android + iOS) проекте используются Kotlin Coroutines, Jetpack Compose, SwiftUI. 80% кода на Kotlin (FSM и Android Ui) и 20% на Swift (iOS Ui):
https://github.com/Kontur-Mobile/VisualFSM-Sample-KMM
- в Android проекте используются Kotlin Coroutines, Jetpack Compose:
https://github.com/Kontur-Mobile/VisualFSM-Sample-Android
GitHub
GitHub - Kontur-Mobile/VisualFSM-Sample-KMM: Sample of usage VisualFSM for KMM (Android + iOS) application - Kotlin Coroutines…
Sample of usage VisualFSM for KMM (Android + iOS) application - Kotlin Coroutines, Jetpack Compose, SwiftUI - Kontur-Mobile/VisualFSM-Sample-KMM
Опубликован bugfix релиз 1.1.2, список изменений:
- Исправлена видимость функции VisualFSM.getAdjacencyMap() для реализации кастомных проверок в unit тестах.
- Исправлена видимость функции VisualFSM.getAdjacencyMap() для реализации кастомных проверок в unit тестах.
Опубликован релиз 1.2.0, список изменений:
Новая функциональность:
- Новый Task для AsyncWorker - ExecuteIfNotExistWithSameClass. Запустить задачу, только если операция с тем же классом состояния в данный момент не выполняется. Используется для операций с выдачей результата в несколько этапов. Например, отображение данных по мере загрузки или отображение прогресса.
- Kotlin 1.7.20
Новая функциональность:
- Новый Task для AsyncWorker - ExecuteIfNotExistWithSameClass. Запустить задачу, только если операция с тем же классом состояния в данный момент не выполняется. Используется для операций с выдачей результата в несколько этапов. Например, отображение данных по мере загрузки или отображение прогресса.
- Kotlin 1.7.20
Опубликован релиз 1.2.1, содержащий небольшие улучшения:
- Добавлен модификатор internal для сгенерированной TransitionFactory, если базовый класс Action содержит модификатор internal
- Добавлена проверка корректности имени классов обобщений(Generics) Feature и Transition на этапе кодогенерации
- Добавлен метод getEdgeName в инструменты VisualFSM для получения имени ребра по Transition классу
- Произведена замена Flow на StateFlow для подписки на состояния Feature
- Добавлен модификатор internal для сгенерированной TransitionFactory, если базовый класс Action содержит модификатор internal
- Добавлена проверка корректности имени классов обобщений(Generics) Feature и Transition на этапе кодогенерации
- Добавлен метод getEdgeName в инструменты VisualFSM для получения имени ребра по Transition классу
- Произведена замена Flow на StateFlow для подписки на состояния Feature
Опубликован релиз 1.3.0, список изменений:
Улучшения:
⁃ Добавлена возможность подмены Coroutine Dispatcher в AsyncWorker через конструктор
Исправления ошибок:
⁃ Исправлен обработчик исключений onStateSubscriptionError в AsyncWorker, в который попадают все необработанные исключения
Улучшения:
⁃ Добавлена возможность подмены Coroutine Dispatcher в AsyncWorker через конструктор
Исправления ошибок:
⁃ Исправлен обработчик исключений onStateSubscriptionError в AsyncWorker, в который попадают все необработанные исключения
Опубликован релиз 1.3.1, список изменений:
Исправления ошибок:
⁃ Исправлена обработка задачи AsyncWorker ExecuteAndCancelExist
Исправления ошибок:
⁃ Исправлена обработка задачи AsyncWorker ExecuteAndCancelExist
Опубликован релиз 1.3.2, список изменений:
Исправления ошибок:
- Исправлено поведение AsyncWorker.proceed() после вызова AsyncWorker.unbind() метода
⁃ Исправлена обработка задачи AsyncWorker ExecuteAndCancelExist
Исправления ошибок:
- Исправлено поведение AsyncWorker.proceed() после вызова AsyncWorker.unbind() метода
⁃ Исправлена обработка задачи AsyncWorker ExecuteAndCancelExist
Опубликован релиз 1.3.3, содержащий небольшие улучшения:
- Исправлено использование AtomicFU, больше нет необходимости подключать его в качестве зависимости к основному проекту
- Добавлен suppress для предупреждений в сгенерированном коде
- Исправлено использование AtomicFU, больше нет необходимости подключать его в качестве зависимости к основному проекту
- Добавлен suppress для предупреждений в сгенерированном коде
Опубликован релиз 1.4.0, список изменений:
Улучшения:
- Кастомизация визуализации графа
Для повышения читаемости графа добавлена возможность управлять graphviz атрибутами при генерации графа.
Используя 'DotAttributes' можно изменять стиль всего графа, задавать форму и цвет ребер и нод.
Используйте готовый пресет 'DotAttributesDefaultPreset' или создайте собственный для своего проекта.
Улучшения:
- Кастомизация визуализации графа
Для повышения читаемости графа добавлена возможность управлять graphviz атрибутами при генерации графа.
Используя 'DotAttributes' можно изменять стиль всего графа, задавать форму и цвет ребер и нод.
Используйте готовый пресет 'DotAttributesDefaultPreset' или создайте собственный для своего проекта.
Опубликован релиз 1.5.1, список изменений:
Новые возможности:
- Добавлена функциональность по генерации csv файла со всеми переходами для анализа FSM сторонними средствами
Новые возможности:
- Добавлена функциональность по генерации csv файла со всеми переходами для анализа FSM сторонними средствами
Опубликован релиз 2.0.0, список изменений:
- добавлена возможность в generic параметрах Transition указывать в качестве источника и назначения перехода sealed класс для описания группы переходов в одном Transition
- добавлен новый тип Transition - SelfTransition, для сокращения записи перехода состояния без изменения класса состояния
- обновлены версии зависимостей
Изменения без обратной совместимости:
- минимальная версия Kotlin в проекте 1.9
- минимальная версия JDK в проекте 17
- изменение поведения Transition в generic параметрах которого указан базовый sealed класс
Обновлен пример использования в KMM проекте:
https://github.com/Kontur-Mobile/VisualFSM-Sample-KMM
- добавлена возможность в generic параметрах Transition указывать в качестве источника и назначения перехода sealed класс для описания группы переходов в одном Transition
- добавлен новый тип Transition - SelfTransition, для сокращения записи перехода состояния без изменения класса состояния
- обновлены версии зависимостей
Изменения без обратной совместимости:
- минимальная версия Kotlin в проекте 1.9
- минимальная версия JDK в проекте 17
- изменение поведения Transition в generic параметрах которого указан базовый sealed класс
Обновлен пример использования в KMM проекте:
https://github.com/Kontur-Mobile/VisualFSM-Sample-KMM
Опубликован релиз 3.0.0, список изменений:
Новая функциональность:
- добавлена опциональная возможность задавать внешний источник состояний для Feature (IStateSource). Это может быть полезно для взаимодействия между Features через общее состояние или для работы с другими фреймворками, основанными на работе с состояниями. Документация
Исправление ошибок:
- исправлена ошибка построения графа при использовании вложенных классов в классах состояний
Удаление устаревших методов и интеграций:
- прекращена поддержка RxJava 2
- удалены устаревшие конструкторы Feature
- удалены устаревшие методы отрисовки графа состояний
Новая функциональность:
- добавлена опциональная возможность задавать внешний источник состояний для Feature (IStateSource). Это может быть полезно для взаимодействия между Features через общее состояние или для работы с другими фреймворками, основанными на работе с состояниями. Документация
Исправление ошибок:
- исправлена ошибка построения графа при использовании вложенных классов в классах состояний
Удаление устаревших методов и интеграций:
- прекращена поддержка RxJava 2
- удалены устаревшие конструкторы Feature
- удалены устаревшие методы отрисовки графа состояний
GitHub
VisualFSM/docs/ru/ExternalStateSource-RU.md at main · Kontur-Mobile/VisualFSM
VisualFSM - Kotlin Multiplatform library for FSM based MVI with visualization and analysis tools - Kontur-Mobile/VisualFSM
Опубликован релиз 4.0.0, список изменений
- добавлен аргумент LogParams в Feature для настройки встроенного логирования с поддержкой пользовательских логгеров и форматтеров. Эта возможность является альтернативой реализации интерфейса TransitionCallbacks с целью логгирования
- обновлён TransitionCallbacks: переопределение каждого из методов теперь опционально, добавлен метод onInitialStateReceived
- удалены deprecated методы в Transition
- обновлены зависимости
- добавлен аргумент LogParams в Feature для настройки встроенного логирования с поддержкой пользовательских логгеров и форматтеров. Эта возможность является альтернативой реализации интерфейса TransitionCallbacks с целью логгирования
- обновлён TransitionCallbacks: переопределение каждого из методов теперь опционально, добавлен метод onInitialStateReceived
- удалены deprecated методы в Transition
- обновлены зависимости