Завдання та передумови
Дати оператору вибір погодити або відхилити набір заявок і після вибраної дії повернутися до спільного експорту.
Приклад містить навчальні дані та налаштування. Виберіть власні тестові джерела й підключення замість ідентифікаторів demo_*, відтворіть очікуваний результат і лише потім використовуйте робочі об’єкти.
Навчальні вхідні дані
requests.csv
Request;Status
R1;Draft
R2;Draft
Блоки, зв’язки й точні налаштування
Топологія прикладу 19: 6 блоків, 6 зв’язків. Збережено ідентифікатори вузлів і порти налаштованого графа.
Додайте наведені блоки в конструктор, відкрийте властивості кожного й установіть такі значення. Назви demo_* позначають навчальні джерела та підключення.
| Блок | Налаштування |
|---|---|
| 1 Файл src |
|
| 2 Вибір варіанта choice |
|
| 3 Встановлення значень полів approved |
|
| 4 Встановлення значень полів rejected |
|
| 5 Злиття гілок merge |
|
| 6 Вивантаження даних out |
|
Зв’язки портів
- src
out→ choicein - choice
approve→ approvedin - choice
reject→ rejectedin - approved
out→ mergeapproved - rejected
out→ mergerejected - merge
out→ outin
Повна конфігурація графа 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. Це одне рішення для всього вхідного набору.
Запуск і перевірка
- Запустіть потік інтерактивно та виберіть «Погодити».
- Перевірте дві змінені заявки, одну активну гілку та успішний merge.
- Повторіть запуск із «Відхилити» і звірте обидва Rejected.
Типові помилки
- Choice завжди потребує відповіді користувача; він не підходить для автоматичного запуску без участі людини.
- Merge single очікує одну активну гілку; для одночасного додавання двох таблиць використовується Union.
- Не плутайте ручний вибір одного сценарію з Router, який розкладає рядки за умовами.