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

노드

개요

인공지능

대규모 언어 모델

흐름 제어

조건
다중 조건 분기
반복
변수
병렬 분기
워크플로우 호출
플로우 출력
JSON 변수 매핑
지연
종료

계산

계산
날짜 계산
JSON 계산

데이터 작업

데이터 생성
데이터 업데이트
데이터 조회
데이터 삭제
SQL 작업

수동 처리

수동 처리
승인
참조

유형 확장

HTTP 요청
JavaScript 스크립트
알림
이메일 발송
응답
응답 메시지
변수
실행 기록
버전 관리
고급 옵션

확장 개발

개요
트리거 유형 확장
노드 유형 확장
API 참조
Previous Page다중 조건 분기
Next Page변수
TIP

이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요

#루프

This feature is provided by the plugin «워크플로우: 루프 노드»

#소개

루프는 프로그래밍 언어의 for/while/forEach와 같은 구문 구조와 유사합니다. 특정 횟수만큼 또는 특정 데이터 컬렉션(배열)에 대해 작업을 반복해야 할 때 루프 노드를 사용할 수 있습니다.

#설치

내장 플러그인이므로 별도로 설치할 필요가 없습니다.

#노드 생성

워크플로우 설정 화면에서 플로우 내의 더하기('+'') 버튼을 클릭하여 '루프' 노드를 추가합니다.

루프 노드 생성

루프 노드를 생성하면 루프 내부의 브랜치가 만들어집니다. 이 브랜치 안에는 원하는 만큼 노드를 추가할 수 있습니다. 이 노드들은 워크플로우 컨텍스트의 변수뿐만 아니라, 루프 컨텍스트의 지역 변수도 사용할 수 있습니다. 예를 들어, 루프 컬렉션에서 매번 반복되는 데이터 객체나 루프 횟수의 인덱스(인덱스는 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. 워크플로우를 생성합니다. 트리거는 '컬렉션 이벤트'를 선택하고, '주문' 컬렉션에서 '레코드 추가 시' 트리거되도록 설정합니다. 또한 '주문 상세' 컬렉션과 상세 내 상품 컬렉션의 관계 데이터를 미리 로드하도록 설정해야 합니다.

    루프 노드_예시_트리거 설정

  3. 루프 노드를 생성하고, 루프 객체를 '트리거 데이터 / 주문 상세'로 선택합니다. 이는 주문 상세 컬렉션의 각 레코드를 처리한다는 의미입니다.

    루프 노드_예시_루프 노드 설정

  4. 루프 노드 내부에 '조건 판단' 노드를 생성하여 상품의 재고가 충분한지 판단합니다.

    루프 노드_예시_조건 판단 노드 설정

  5. 재고가 충분하면 '예' 브랜치에서 '계산 노드'와 '레코드 업데이트' 노드를 생성하여 계산된 차감 재고를 해당 상품 레코드에 업데이트합니다.

    루프 노드_예시_계산 노드 설정

    루프 노드_예시_재고 업데이트 노드 설정

  6. 그렇지 않으면 '아니요' 브랜치에서 '레코드 업데이트' 노드를 생성하여 주문 상세의 상태를 '유효하지 않음'으로 업데이트합니다.

    루프 노드_예시_주문 상세 업데이트 노드 설정

전체 워크플로우 구조는 다음과 같습니다.

루프 노드_예시_워크플로우 구조

이 워크플로우를 설정하고 활성화하면, 새 주문이 생성될 때 주문 상세 내 상품 재고를 자동으로 확인합니다. 재고가 충분하면 재고가 차감되고, 그렇지 않으면 주문 상세 내 상품이 '유효하지 않음'으로 업데이트됩니다(유효한 주문 총액을 계산하기 위함입니다).