Поток событий
В FlowEngine все интерфейсные компоненты управляются событиями. Поведение, взаимодействие и изменения данных компонентов запускаются событиями и выполняются в рамках Flow.
Статический и динамический Flow
В FlowEngine Flow можно разделить на два типа:
1. Статический Flow
- Определяется разработчиками в коде;
- Применяется ко всем экземплярам класса модели;
- Обычно используется для обработки общей логики класса модели;
2. Динамический Flow
- Настраивается пользователями в интерфейсе;
- Действует только для конкретного экземпляра;
- Обычно используется для персонализированного поведения в конкретных сценариях;
Кратко: статический Flow — это шаблон логики, заданный на классе, а динамический Flow — персонализированная логика, заданная на экземпляре.
Правила связывания и динамический Flow
В системе конфигурации FlowEngine есть два способа реализации событийной логики:
1. Правила связывания
- Это инкапсуляция встроенных шагов потока событий;
- Проще в настройке и более семантичны;
- По сути это всё равно упрощённая форма потока событий.
2. Динамический Flow
- Полные возможности конфигурации Flow;
- Настраиваются:
- Триггер (
on): определяет момент запуска; - Шаги выполнения (
steps): определяют исполняемую логику;
- Триггер (
- Подходят для более сложной и гибкой бизнес-логики.
Следовательно, правила связывания ≈ упрощённый поток событий, и их базовые механизмы совпадают.
Согласованность FlowAction
И правила связывания, и потоки событий должны использовать один и тот же набор FlowAction. То есть:
- FlowAction определяет действия, которые может вызывать Flow;
- Оба подхода используют единую систему действий, а не две отдельные;
- Это обеспечивает переиспользование логики и единообразное расширение.
Концептуальная иерархия
Концептуально, базовая абстрактная связь в FlowModel выглядит так:
Описание иерархии
-
FlowModel Представляет сущность модели с настраиваемой и исполняемой логикой Flow.
-
FlowDefinition Определяет полный набор логики Flow (включая условия запуска и шаги выполнения).
-
FlowEventDefinition Определяет источник запуска Flow, включая:
- Глобальные события: например запуск приложения, завершение загрузки данных;
- Локальные события: например изменение полей, клики по кнопкам.
-
FlowActionDefinition Определяет исполняемые действия Flow, включая:
- Глобальные действия: например обновление страницы, глобальные уведомления;
- Локальные действия: например изменение значений полей, переключение состояния компонентов.

