Воркфлоу
Воркфлоу — це граф кроків, який запускається, коли надіслано подію, або коли ви запускаєте його самі. Кожен крок отримує вихід попереднього. У панелі є візуальний конструктор; той самий воркфлоу можна створити через API.
Як виконується воркфлоу
Section titled “Як виконується воркфлоу”- Тригер запускає виконання, передаючи на вхід
dataподії. - Вузли виконуються в топологічному порядку: вузол починає лише після того, як завершилися всі вузли, від яких він залежить.
- Вихід кожного вузла стає входом вузлів, з якими він з’єднаний. Вузол із кількома вихідними ребрами розгалужується.
- Вузол
filter, умови якого не збіглися, пропускає все, що нижче за ним. Вузолbranchспрямовує виконання ребромtrueабоfalse. - Кожен крок записує свій статус, вхід, вихід і тривалість, тож виконання можна переглянути крок за кроком. Список виконань:
GET /api/v1/projects/{projectId}/workflows/{id}/executions.
Тригери
Section titled “Тригери”triggerType |
Коли запускається |
|---|---|
WEBHOOK_EVENT (типово) |
Для кожної події, тип якої збігається з triggerConfig.eventTypePattern. Без шаблону — для кожної події в проєкті. Воркфлоу виконується щонайбільше один раз на подію. |
MANUAL |
Коли ви викликаєте POST /api/v1/projects/{projectId}/workflows/{id}/trigger. JSON-тіло стає входом. |
Вмикайте й вимикайте воркфлоу через PATCH /api/v1/projects/{projectId}/workflows/{id}/toggle.
Типи вузлів
Section titled “Типи вузлів”type |
Що робить | Налаштування в data |
|---|---|---|
webhookTrigger |
Точка входу. Передає вхід тригера далі. | немає |
filter |
Продовжує, лише якщо умови збіглися; інакше вузли нижче пропускаються. | conditions, те саме дерево умов, що й у правилах |
branch |
Перевіряє умови й іде ребром true або false. Без умов — true. |
conditions |
transform |
Змінює дані. Якщо задано обидва, діє збережена трансформація; якщо її не знайдено, крок зазнає невдачі. | transformationId або template із плейсхолдерами {{field.path}} |
http |
Викликає URL і передає відповідь далі. | url (обов’язкове), method (типово POST), headers, body (типово — вхід), timeout у секундах, від 1 до 60, типово 30 |
slack |
Надсилає повідомлення у вхідний вебхук Slack. | webhookUrl, message, channel |
delivery |
Доставляє дані на наявний ендпоінт звичайним конвеєром доставки, з його повторами. | endpointId (обов’язкове) |
createEvent |
Надсилає в Railhook нову подію, яка далі проходить правила й підписки, як будь-яка інша. | projectId, eventType (обидва обов’язкові), payloadTemplate (типово — вхід) |
delay |
Призупиняє виконання, не займаючи потік воркера. | delaySeconds, від 1 до 300, типово 5 |
Створення воркфлоу
Section titled “Створення воркфлоу”Визначення — це список nodes, кожен з id, type і своїми data, та список edges від source до target. Ребро, що виходить із вузла branch, задає sourceHandle зі значенням "true" або "false".
curl -X POST "$RAILHOOK_URL/api/v1/projects/$PROJECT_ID/workflows" \ -H "X-API-Key: $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Big orders to the fraud service", "enabled": true, "triggerType": "WEBHOOK_EVENT", "triggerConfig": { "eventTypePattern": "order.*" }, "definition": { "nodes": [ { "id": "start", "type": "webhookTrigger", "data": {} }, { "id": "big", "type": "filter", "data": { "conditions": { "type": "predicate", "field": "amount", "operator": "GTE", "value": 1000, "valueType": "NUMBER" } } }, { "id": "check", "type": "http", "data": { "url": "https://fraud.example.com/check", "method": "POST" } } ], "edges": [ { "source": "start", "target": "big" }, { "source": "big", "target": "check" } ] } }'Обмеження часу
Section titled “Обмеження часу”| Обмеження | Типово |
|---|---|
| Одне виконання від початку до кінця | 600 секунд |
| Один вузол | 30 секунд |
Вузол http або slack |
60 секунд |
Вузол createEvent |
30 секунд |
На що зважати
Section titled “На що зважати”Що далі
Section titled “Що далі”ПравилаОднокрокові рішення маршрутизації, що виконуються до появи доставок.
ТрансформаціїЗбережені шаблони, які може використати вузол transform.
Довідник APIУсі запити й відповіді воркфлоу.