Ця документація була автоматично перекладена штучним інтелектом.
Цикл є аналогом синтаксичних конструкцій for/while/forEach у мовах програмування. Ви можете використовувати вузол циклу, коли потрібно повторити певні операції задану кількість разів або для певної колекції даних (масиву).
Це вбудований плагін, тому його не потрібно встановлювати.
В інтерфейсі конфігурації робочого процесу натисніть кнопку плюса ("+") у потоці, щоб додати вузол "Цикл":

Після створення вузла циклу буде згенеровано внутрішню гілку циклу. Ви можете додати будь-яку кількість вузлів у цю гілку. Ці вузли можуть використовувати не лише змінні з контексту робочого процесу, але й локальні змінні з контексту циклу, наприклад, об'єкт даних, що ітерується в поточній колекції циклу, або індекс кількості ітерацій (індекс починається з 0). Область видимості локальних змінних обмежена внутрішньою частиною циклу. Якщо є вкладені цикли, ви можете використовувати локальні змінні конкретного циклу на кожному рівні.

Цикл по-різному обробляє різні типи даних об'єкта циклу:
Масив: Найпоширеніший випадок. Зазвичай ви можете вибрати змінну з контексту робочого процесу, наприклад, кілька результатів даних із вузла запиту або попередньо завантажені дані зв'язків "один-до-багатьох". Якщо вибрано масив, вузол циклу буде ітерувати кожен елемент масиву, і під час кожної ітерації поточний елемент буде присвоюватися локальній змінній у контексті циклу.
Число: Коли вибрана змінна є числом, воно використовуватиметься як кількість ітерацій. Значення числа підтримує лише додатні цілі числа; від'ємні числа не запускатимуть цикл, а дробова частина десяткового числа буде ігноруватися. Індекс кількості ітерацій у локальній змінній також є значенням об'єкта циклу. Це значення починається з 0. Наприклад, якщо число об'єкта циклу дорівнює 5, то об'єкт та індекс у кожній ітерації будуть послідовно: 0, 1, 2, 3, 4.
Рядок: Коли вибрана змінна є рядком, його довжина використовуватиметься як кількість ітерацій, обробляючи кожен символ рядка за індексом.
Інші: Значення інших типів (включно з об'єктними типами) розглядаються як об'єкт циклу для одноразової обробки і будуть виконані лише один раз. Зазвичай у таких випадках використання циклу не потрібне.
Окрім вибору змінних, для числових та рядкових типів можна також безпосередньо вводити константи. Наприклад, введення 5 (числовий тип) призведе до 5 ітерацій вузла циклу. Введення abc (рядковий тип) призведе до 3 ітерацій, обробляючи символи a, b та c відповідно. У інструменті вибору змінних оберіть бажаний тип для константи.
Починаючи з версії v1.4.0-beta, додано опції, пов'язані з умовами циклу. Ви можете увімкнути умови циклу в конфігурації вузла.
Умова
Подібно до конфігурації умов у вузлі умови, ви можете комбінувати налаштування та використовувати змінні з поточного циклу, такі як об'єкт циклу, індекс циклу тощо.
Час перевірки
Подібно до конструкцій while та do/while у мовах програмування, ви можете вибрати оцінку налаштованої умови перед початком кожної ітерації циклу або після її завершення. Оцінка умови після ітерації дозволяє іншим вузлам у тілі циклу виконатися один раз перед перевіркою умови.
Коли умова не виконується
Подібно до операторів break та continue у мовах програмування, ви можете вибрати вихід із циклу або перехід до наступної ітерації.
Починаючи з версії v1.4.0-beta, якщо вузол всередині циклу не виконується (через невиконання умов, помилки тощо), ви можете налаштувати подальший потік. Підтримуються три методи обробки:
throw у програмуванні)break у програмуванні)continue у програмуванні)За замовчуванням встановлено "Вийти з робочого процесу", але ви можете змінити це за потреби.
Наприклад, під час оформлення замовлення необхідно перевірити наявність кожного товару в замовленні. Якщо запасів достатньо, їх кількість зменшується; в іншому випадку товар у деталях замовлення позначається як недійсний.
Створіть три колекції: Товари <-(1:m)-- Деталі замовлення --(m:1)-> Замовлення. Модель даних виглядає так:
Колекція "Замовлення"
| Назва поля | Тип поля |
|---|---|
| Деталі замовлення | Один-до-багатьох (Деталі замовлення) |
| Загальна ціна замовлення | Число |
Колекція "Деталі замовлення"
| Назва поля | Тип поля |
|---|---|
| Товар | Багато-до-одного (Товар) |
| Кількість | Число |
Колекція "Товари"
| Назва поля | Тип поля |
|---|---|
| Назва товару | Однорядковий текст |
| Ціна | Число |
| Залишок | Ціле число |
Створіть робочий процес. Для тригера оберіть "Подія колекції", а потім колекцію "Замовлення", щоб він спрацьовував "Після додавання запису". Також необхідно налаштувати попереднє завантаження даних зв'язків для колекції "Деталі замовлення" та колекції "Товари" в межах цих деталей:

Створіть вузол циклу та оберіть об'єкт циклу як "Дані тригера / Деталі замовлення", що означає, що він оброблятиме кожен запис у колекції "Деталі замовлення":

Всередині вузла циклу створіть вузол "Умова", щоб перевірити, чи достатньо запасів товару:

Якщо запасів достатньо, у гілці "Так" створіть вузол "Обчислення" та вузол "Оновити запис", щоб оновити відповідний запис товару з розрахованою зменшеною кількістю запасів:


В іншому випадку, у гілці "Ні" створіть вузол "Оновити запис", щоб оновити статус деталі замовлення на "недійсний":

Загальна структура робочого процесу виглядає так:

Після налаштування та активації цього робочого процесу, при створенні нового замовлення, автоматично перевірятиметься наявність товарів у деталях замовлення. Якщо запасів достатньо, вони будуть списані; в іншому випадку товар у деталях замовлення буде оновлено як недійсний (щоб можна було розрахувати дійсну загальну суму замовлення).