logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo

Введение

Что такое FlowEngine?
Связь FlowEngine и плагинов
Быстрый старт
План обучения

Руководство

Регистрация FlowModel
Создание FlowModel
Рендеринг FlowModel
Поток событий и конфигурация FlowModel
Персистентность FlowModel
Жизненный цикл FlowModel
Система контекста FlowModel
Реактивный механизм: Observable
FlowModel vs React.Component

Определения

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageЖизненный цикл FlowModel
Next PageРеактивный механизм: Observable
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Обзор системы контекстов

Система контекстов движка рабочих процессов NocoBase разделена на три уровня, каждый из которых соответствует своей области видимости. Правильное использование позволяет гибко совместно использовать и изолировать сервисы, конфигурации и данные, повышая удобство сопровождения и масштабируемость бизнес-логики.

  • FlowEngineContext (Глобальный контекст): Является глобально уникальным, доступен для всех моделей и рабочих процессов. Подходит для регистрации глобальных сервисов, конфигураций и т. д.
  • FlowModelContext (Контекст модели): Используется для совместного использования контекста внутри дерева моделей. Дочерние модели автоматически делегируют контекст родительской модели, поддерживая переопределение по имени. Подходит для изоляции логики и данных на уровне модели.
  • FlowRuntimeContext (Контекст выполнения рабочего процесса): Создается при каждом выполнении рабочего процесса и существует на протяжении всего его жизненного цикла. Подходит для передачи данных, хранения переменных и записи состояния выполнения внутри рабочего процесса. Поддерживает два режима: mode: 'runtime' | 'settings', которые соответствуют режиму выполнения и режиму настройки соответственно.

Все FlowEngineContext (Глобальный контекст), FlowModelContext (Контекст модели), FlowRuntimeContext (Контекст выполнения рабочего процесса) и т. д. являются подклассами или экземплярами FlowContext.


#🗂️ Схема иерархии

FlowEngineContext (Глобальный контекст)
│
├── FlowModelContext (Контекст модели)
│     ├── Дочерний FlowModelContext (Дочерняя модель)
│     │     ├── FlowRuntimeContext (Контекст выполнения рабочего процесса)
│     │     └── FlowRuntimeContext (Контекст выполнения рабочего процесса)
│     └── FlowRuntimeContext (Контекст выполнения рабочего процесса)
│
├── FlowModelContext (Контекст модели)
│     └── FlowRuntimeContext (Контекст выполнения рабочего процесса)
│
└── FlowModelContext (Контекст модели)
      ├── Дочерний FlowModelContext (Дочерняя модель)
      │     └── FlowRuntimeContext (Контекст выполнения рабочего процесса)
      └── FlowRuntimeContext (Контекст выполнения рабочего процесса)
  • FlowModelContext может получить доступ к свойствам и методам FlowEngineContext через механизм делегирования, что позволяет совместно использовать глобальные возможности.
  • FlowModelContext дочерней модели может получить доступ к контексту родительской модели (синхронная связь) через механизм делегирования, поддерживая переопределение по имени.
  • Асинхронные родительские и дочерние модели не устанавливают отношения делегирования, чтобы избежать загрязнения состояния.
  • FlowRuntimeContext всегда получает доступ к соответствующему FlowModelContext через механизм делегирования, но не передает изменения вверх по иерархии.

#🧭 Режимы выполнения и настройки (mode)

FlowRuntimeContext поддерживает два режима, которые различаются параметром mode:

  • mode: 'runtime' (Режим выполнения): Используется на этапе фактического выполнения рабочего процесса. Свойства и методы возвращают реальные данные. Например:

    console.log(runtimeCtx.steps.step1.result); // 42
  • mode: 'settings' (Режим настройки): Используется на этапе проектирования и настройки рабочего процесса. Доступ к свойствам возвращает строку-шаблон переменной, что упрощает выбор выражений и переменных. Например:

    console.log(settingsCtx.steps.step1.result); // '{{ ctx.steps.step1.result }}'

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