Управление рабочими процессами

Предварительные требования

Перед чтением этой страницы убедитесь, что Вы установили NocoBase CLI и выполнили инициализацию по инструкции Быстрый старт с Конструктором ИИ.

Введение

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

Возможности

Может:

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

Не может:

  • Не проектирует модель данных (используйте Skill моделирования данных)
  • Не устанавливает MCP и не решает проблемы окружения (используйте Skill управления окружениями)
  • Не удаляет рабочий процесс целиком (это операция повышенного риска, требующая отдельного подтверждения)
  • Не выдумывает несуществующие типы узлов или триггеров

Примеры промптов

Сценарий A: создание нового рабочего процесса

Помоги мне настроить рабочий процесс, который автоматически уменьшает остаток товара после создания заказа

Skill сначала уточнит тип триггера и структуру цепочки узлов, и после подтверждения создаст её пошагово.

20260419234303

Сценарий B: редактирование существующего рабочего процесса

В рабочем процессе создания заказа добавь узел уведомления, отправляющего администратору внутреннее сообщение, если остаток товара недостаточен

Если текущая версия уже выполнялась, перед редактированием будет создана новая ревизия — история выполнения не пострадает.

20260419234419

Сценарий C: диагностика сбоя выполнения

Последний запуск рабочего процесса уменьшения остатков после создания заказа завершился ошибкой — посмотри, в чём дело

Skill найдёт последнее неудачное выполнение, определит узел сбоя и сообщение об ошибке, предложит варианты исправления.

20260419234532

Сценарий D: анализ или сводка логики рабочего процесса

Помоги мне разобрать логику обработки рабочего процесса «Уменьшение остатков при создании заказа»

Результат:

# Анализ рабочего процесса: Уменьшение остатков при создании заказа

## Обзор рабочего процесса
**Название рабочего процесса:** Уменьшение остатков при создании заказа

### Триггер
- **Тип:** Событие после действия (Action)
- **Условие срабатывания:** срабатывает при выполнении действия «Создание» в коллекции `orders` (заказы) — глобальный триггер.
- **Связанные данные:** при срабатывании передаются связанные данные `details` (позиции заказа).
- **Режим выполнения:** асинхронный

---

### Цепочка выполнения узлов

**[Триггер] Создание заказа**


**[1] Цикл по позициям заказа (Loop)**
    * **Цель:** `{{$context.data.details}}`
    * *Действие: для каждой позиции выполняются следующие шаги:*


    **branchIndex=0 (тело цикла)**


    **[2] Запрос остатка товара (Query)**
    * **Коллекция:** `products`
    * **Условие фильтрации:** `id = {{$scopes.5u6lsjzf8vh.item.productId}}`


    **[3] Проверка достаточности остатка (Condition)**
    * **Движок:** `formula.js`
    * **Выражение:** `{{$jobsMapByNodeKey.n6rf8lf2lum.inventory}} < {{$scopes.5u6lsjzf8vh.item.quantity}}`

        ├── **YES (branchIndex=1, остатка недостаточно, условие TRUE):**
        │   ▼
**[4] Уведомление суперадминистратора (Notification)**
*Отправка уведомления пользователям с ролью root, содержащего:*
*название товара, ID товара, текущий остаток, требуемое количество в заказе.*

        └── **NO (branchIndex=0, остатка достаточно, пустая ветка)**


    **[5] Уменьшение остатка (SQL)**
    * **SQL-запрос:** `UPDATE products SET inventory = inventory - :quantity`

---

### Описание ключевой логики

| Этап | Описание |
| :--- | :--- |
| **Триггер** | При создании заказа система передаёт в рабочий процесс полный список позиций. |
| **Цикл** | Позиции обрабатываются по очереди — каждая соответствует товару и его количеству. |
| **Запрос** | По `productId` определяется текущий остаток товара. |
| **Проверка** | Проверяется, выполняется ли `inventory < quantity` (то есть остатка недостаточно). |
| **Уведомление** | Если остатка недостаточно, пользователю с ролью `root` отправляется внутреннее уведомление. |
| **Уменьшение** | Остаток уменьшается напрямую через SQL; поскольку ветви сходятся, уменьшение выполняется независимо от достаточности остатка. |

---

### ⚠️ Возможные проблемы дизайна

`downstreamId` узла условия указывает на узел «Уменьшение остатка», то есть независимо от выбранной ветви (достаточно остатка или нет) в итоге выполняется уменьшение. Фактическое поведение:

- **Остатка достаточно** $\rightarrow$ остаток уменьшается напрямую (нормальный сценарий). ✓
- **Остатка недостаточно** $\rightarrow$ сначала уведомляется администратор, **затем всё равно выполняется уменьшение** (остаток может стать отрицательным).

**Анализ:** такой подход — это шаблон «разрешить продажу с превышением и предупреждать», но также возможна логическая ошибка (по замыслу при недостатке остатка уменьшение должно блокироваться). Нужно уточнить намерение у бизнес-заказчика.

---

### Текущее состояние

- **Состояние включения:** `false` (отключён)
- **История выполнения:** выполнялся 1 раз.
- **Контроль версий:** текущая версия заморожена, для изменений нужно создать новую версию.

Часто задаваемые вопросы

Почему созданный рабочий процесс не запускается?

Только что созданный рабочий процесс по умолчанию отключён (enabled: false). Убедитесь, что триггер настроен правильно, и затем включите рабочий процесс вручную.

Затронет ли изменение рабочего процесса историю выполнений?

Нет. Если в текущей версии уже есть запись выполнения, Skill автоматически создаст новую ревизию (revision); история выполнений привязана к старой версии и не пострадает.

Связанные ссылки