logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo
Робочий процес
Огляд
Швидкий старт

Тригер

Огляд
Події таблиці даних
Завдання за розкладом
Подія перед дією
Подія після дії
Користувацька подія дії
Затвердження
Webhook

Вузол

Огляд

Штучний інтелект (AI)

Велика мовна модель (LLM)

Керування потоком

Умова
Розгалуження за умовами
Цикл
Змінна
Паралельне розгалуження
Виклик робочого процесу
Вивід потоку
Мапінг змінних JSON
Затримка
Завершення

Обчислення

Обчислення
Обчислення дати
Обчислення JSON

Операції з даними

Додавання даних
Оновлення даних
Запит даних
Видалення даних
Операції SQL

Ручна обробка

Ручна обробка
Затвердження
Копія (CC)

Розширені типи

HTTP-запит
Скрипт JavaScript
Сповіщення
Надсилання email
Відповідь
Повідомлення-відповідь
Змінна
Журнал виконання
Керування версіями
Розширені налаштування

Розробка розширень

Огляд
Розширення типів тригерів
Розширення типів вузлів
Довідник API
Previous PageРозгалуження за умовами
Next PageЗмінна
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#Цикл

This feature is provided by the plugin «Робочий процес: Вузол циклу»

#Вступ

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

#Встановлення

Це вбудований плагін, тому його не потрібно встановлювати.

#Створення вузла

В інтерфейсі конфігурації робочого процесу натисніть кнопку плюса ("+") у потоці, щоб додати вузол "Цикл":

Creating a Loop Node

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

#Конфігурація вузла

20241016135326

#Об'єкт циклу

Цикл по-різному обробляє різні типи даних об'єкта циклу:

  1. Масив: Найпоширеніший випадок. Зазвичай ви можете вибрати змінну з контексту робочого процесу, наприклад, кілька результатів даних із вузла запиту або попередньо завантажені дані зв'язків "один-до-багатьох". Якщо вибрано масив, вузол циклу буде ітерувати кожен елемент масиву, і під час кожної ітерації поточний елемент буде присвоюватися локальній змінній у контексті циклу.

  2. Число: Коли вибрана змінна є числом, воно використовуватиметься як кількість ітерацій. Значення числа підтримує лише додатні цілі числа; від'ємні числа не запускатимуть цикл, а дробова частина десяткового числа буде ігноруватися. Індекс кількості ітерацій у локальній змінній також є значенням об'єкта циклу. Це значення починається з 0. Наприклад, якщо число об'єкта циклу дорівнює 5, то об'єкт та індекс у кожній ітерації будуть послідовно: 0, 1, 2, 3, 4.

  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. Створіть три колекції: Товари <-(1:m)-- Деталі замовлення --(m:1)-> Замовлення. Модель даних виглядає так:

    Колекція "Замовлення"

    Назва поляТип поля
    Деталі замовленняОдин-до-багатьох (Деталі замовлення)
    Загальна ціна замовленняЧисло

    Колекція "Деталі замовлення"

    Назва поляТип поля
    ТоварБагато-до-одного (Товар)
    КількістьЧисло

    Колекція "Товари"

    Назва поляТип поля
    Назва товаруОднорядковий текст
    ЦінаЧисло
    ЗалишокЦіле число
  2. Створіть робочий процес. Для тригера оберіть "Подія колекції", а потім колекцію "Замовлення", щоб він спрацьовував "Після додавання запису". Також необхідно налаштувати попереднє завантаження даних зв'язків для колекції "Деталі замовлення" та колекції "Товари" в межах цих деталей:

    Loop Node_Example_Trigger Configuration

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

    Loop Node_Example_Loop Node Configuration

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

    Loop Node_Example_Condition Node Configuration

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

    Loop Node_Example_Calculation Node Configuration

    Loop Node_Example_Update Stock Node Configuration

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

    Loop Node_Example_Update Order Detail Node Configuration

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

Loop Node_Example_Workflow Structure

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