Завдання та передумови

Дати оператору вибір погодити або відхилити набір заявок і після вибраної дії повернутися до спільного експорту.

Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.

Навчальні вхідні дані

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 пропускається. Після вибору «Відхилити» обидва статуси — Rejected. Це одне рішення для всього вхідного набору.

Запуск і перевірка

  1. Запустіть потік інтерактивно та виберіть «Погодити».
  2. Перевірте дві змінені заявки, одну активну гілку та успішний merge.
  3. Повторіть запуск із «Відхилити» і звірте обидва Rejected.

Типові помилки

  • Choice завжди потребує відповіді користувача; він не підходить для автоматичного запуску без участі людини.
  • Merge single очікує одну активну гілку; для одночасного додавання двох таблиць використовується Union.
  • Не плутайте ручний вибір одного сценарію з Router, який розкладає рядки за умовами.