Поток событий

В 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
 └── FlowDefinition
      ├── FlowEventDefinition
      │     ├── Глобальные события
      │     └── Локальные события
      └── FlowActionDefinition
            ├── Глобальные действия
            └── Локальные действия

Описание иерархии

  • FlowModel Представляет сущность модели с настраиваемой и исполняемой логикой Flow.

  • FlowDefinition Определяет полный набор логики Flow (включая условия запуска и шаги выполнения).

  • FlowEventDefinition Определяет источник запуска Flow, включая:

    • Глобальные события: например запуск приложения, завершение загрузки данных;
    • Локальные события: например изменение полей, клики по кнопкам.
  • FlowActionDefinition Определяет исполняемые действия Flow, включая:

    • Глобальные действия: например обновление страницы, глобальные уведомления;
    • Локальные действия: например изменение значений полей, переключение состояния компонентов.

Итог

КонцептНазначениеОбласть
Статический FlowЛогика Flow, заданная в кодеВсе экземпляры XXModel
Динамический FlowЛогика Flow, заданная в интерфейсеОдин экземпляр FlowModel
FlowEventОпределяет триггер (когда запускать)Глобальная или локальная
FlowActionОпределяет логику выполненияГлобальная или локальная
Правило связыванияУпрощённая инкапсуляция шагов потока событийУровень блока и действия