Задача и предварительные условия

Позвольте оператору одобрить или отклонить набор заявок и вернуться к общему экспорту после выбранного действия.

В примере используются демонстрационные данные и настройки. Проверьте ожидаемый результат в своей среде до подключения рабочих получателей. Идентификаторы demo_* условны: выберите собственные учебные подключения или источники в редакторе. JSON ниже показывает структуру блоков и связей, а не готовый архив потока для переноса.

Учебные входные данные

requests.csv

Request;Status
R1;Draft
R2;Draft

Блоки, связи и точные настройки

Поясняющая схемаУвеличить ↗19. Ручной выбор сценария и слияние веток. Схема примера 19: 6 блоков, 6 связей. Идентификаторы узлов и порты настроенной схемы сохранены.
Схема потока 19

Схема примера 19: блоков — 6, связей — 6. Идентификаторы узлов и порты настроенной схемы сохранены.

Добавьте перечисленные блоки в конструкторе, откройте свойства каждого и задайте эти значения. Имена demo_* обозначают учебные источники и подключения.

БлокНастройка
1
Файл
src
  • Роль: source
  • Источник: demo_approval
  • Настройки чтения:
    • Лист: CSV
    • Диапазон: A1:B3
    • Первая строка — заголовок: так
    • Разделитель: ;
2
Выбор
choice
  • Заголовок: Рішення щодо набору заявок
  • Настройки чтения:
      • Идентификатор: approve
      • Подпись: Погодити
      • Идентификатор: reject
      • Подпись: Відхилити
  • wizard: так
3
Задать значения полей
approved
  • assignments:
      • Поле: Status
      • Источник: constant
      • Тип значения: text
      • Значение: Approved
4
Задать значения полей
rejected
  • assignments:
      • Поле: Status
      • Источник: constant
      • Тип значения: text
      • Значение: Rejected
5
Слияние веток
merge
  • Входы:
      • Идентификатор: approved
      • Подпись: Погоджено
      • Идентификатор: rejected
      • Подпись: Відхилено
  • Режим: single
6
Экспорт данных
out
  • Формат: csv
  • Имя файла: decisions
  • Назначение: download
  • Разделитель: ;
  • Часовой пояс: Europe/Kyiv

Связи портов

  • src out → choice in
  • choice approve → approved in
  • choice reject → rejected in
  • approved out → merge approved
  • rejected out → merge rejected
  • merge out → out in
Полная конфигурация схемы в JSON
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_approval",
        "options": {
          "sheet": "CSV",
          "range": "A1:B3",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "choice",
      "type": "choice",
      "label": "choice",
      "config": {
        "title": "Рішення щодо набору заявок",
        "options": [
          {
            "id": "approve",
            "label": "Погодити"
          },
          {
            "id": "reject",
            "label": "Відхилити"
          }
        ],
        "wizard": true
      }
    },
    {
      "id": "approved",
      "type": "set_fields",
      "label": "approved",
      "config": {
        "assignments": [
          {
            "field": "Status",
            "source": "constant",
            "value_type": "text",
            "value": "Approved"
          }
        ]
      }
    },
    {
      "id": "rejected",
      "type": "set_fields",
      "label": "rejected",
      "config": {
        "assignments": [
          {
            "field": "Status",
            "source": "constant",
            "value_type": "text",
            "value": "Rejected"
          }
        ]
      }
    },
    {
      "id": "merge",
      "type": "merge",
      "label": "merge",
      "config": {
        "inputs": [
          {
            "id": "approved",
            "label": "Погоджено"
          },
          {
            "id": "rejected",
            "label": "Відхилено"
          }
        ],
        "mode": "single"
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "csv",
        "filename": "decisions",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "choice",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "choice",
      "target": "approved",
      "source_port": "approve",
      "target_port": "in"
    },
    {
      "source": "choice",
      "target": "rejected",
      "source_port": "reject",
      "target_port": "in"
    },
    {
      "source": "approved",
      "target": "merge",
      "source_port": "out",
      "target_port": "approved"
    },
    {
      "source": "rejected",
      "target": "merge",
      "source_port": "out",
      "target_port": "rejected"
    },
    {
      "source": "merge",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

Ожидаемый результат

После выбора «Одобрить» decisions.csv содержит R1/Approved и R2/Approved; отклонённая ветка пропускается. После «Отклонить» оба статуса — Rejected. Это одно решение для всего входного набора.

Запуск и проверка

  1. Запустите поток интерактивно и выберите «Одобрить».
  2. Проверьте две обновлённые заявки, одну активную ветку и успешное слияние.
  3. Запустите снова с «Отклонить» и проверьте оба статуса Rejected.

Частые ошибки

  • Выбор всегда требует ответа пользователя; он не подходит для выполнения без участия человека.
  • Слияние single ожидает одну активную ветку; для одновременного добавления двух таблиц используйте объединение строк.
  • Не путайте ручной выбор одного сценария с маршрутизацией, распределяющей строки по условиям.