Loop 프로세스(노드)
Loop 기능은 주어진 배열(Loop 대상 항목)의 각 요소에 대해 동일한 워크플로우 과정을 반복 실행하는 기능을 제공합니다.
주요 특징
반복 처리: 배열의 각 요소에 대해 지정된 워크플로우를 순차적으로 실행합니다.
분기 제어: 루프 진행 중에는 'loop' 분기로, 완료 시에는 'done' 분기로 이동합니다.
결과 수집: 각 반복의 결과를 수집하여 최종적으로 전체 결과 배열을 제공합니다.
파라미터 설정
Loop 프로세스를 사용하기 위해서는 다음 파라미터를 설정해야 합니다:
Loop 대상 항목 (필수)
반복 처리할 데이터 배열을 지정합니다.
List 객체 또는 JSON 배열 문자열 형태로 제공할 수 있습니다.
템플릿 변수를 사용하여 동적으로 생성할 수 있습니다.
// 직접 배열 지정 ["item1", "item2", "item3"] // 템플릿 변수 사용 ${previousResult.dataList} // JSON 문자열 형태 "[{\"id\":1,\"name\":\"첫번째\"},{\"id\":2,\"name\":\"두번째\"}]"
분기 구조 (Target ID)
Loop 프로세스는 특별한 분기 구조를 사용합니다:
{
"loop": "반복_진행중_다음_프로세스_ID",
"done": "반복_완료후_다음_프로세스_ID"
}
loop: 각 반복 시 실행될 다음 프로세스의 ID를 지정합니다.
done: 모든 반복이 완료된 후 실행될 프로세스의 ID를 지정합니다.
동작 흐름
초기화: Loop 프로세스가 시작되면 items 배열을 파싱하고 검증합니다.
반복 시작: 첫 번째 아이템을 결과로 출력하고 'loop' 분기로 이동합니다.
반복 진행: 각 반복마다 현재 아이템을 출력하고 이전 결과를 수집합니다.
완료 처리: 모든 아이템 처리가 완료되면 전체 결과를 출력하고 'done' 분기로 이동합니다.
결과 데이터
Loop 프로세스는 반복 상황에 따라 다른 결과를 제공합니다:
반복 진행 중: 현재 처리 중인 아이템의 JSON 문자열
반복 완료 시: 모든 반복 결과를 포함하는 배열의 JSON 문자열
사용 예시
다음은 사용자 목록에 대해 이메일을 발송하는 Loop 워크플로우 예시입니다:
// Loop 프로세스 파라미터
{
"items": [
{"email": "user1@example.com", "name": "김철수"},
{"email": "user2@example.com", "name": "이영희"},
{"email": "user3@example.com", "name": "박민수"}
]
}
// 각 반복에서 출력되는 데이터
// 1회차: {"email": "user1@example.com", "name": "김철수"}
// 2회차: {"email": "user2@example.com", "name": "이영희"}
// 3회차: {"email": "user3@example.com", "name": "박민수"}
// 완료 시 최종 결과: 모든 반복 결과가 포함된 배열
제한 사항 및 주의사항
최대 항목 수: 성능과 안정성을 위해 items 배열의 최대 크기(1000)가 제한됩니다.
빈 배열 처리: 빈 배열이 입력되면 오류가 발생하므로 사전에 검증이 필요합니다.
메모리 사용: 대용량 데이터 처리 시 메모리 사용량을 고려해야 합니다.
무한 루프 방지: 잘못된 분기 설정으로 인한 무한 루프를 방지하기 위한 검증이 포함되어 있습니다.
템플릿 변수 활용
Loop 프로세스에서는 다음과 같은 템플릿 변수를 활용할 수 있습니다:
// 이전 프로세스 결과를 items로 사용
{
"items": "${httpRequest.responseData}"
}
// 조건부로 아이템 필터링 후 사용
{
"items": "${filteredItems}"
}
오류 처리
Loop 프로세스는 다음과 같은 상황에서 오류를 발생시킵니다:
items 파라미터가 누락되거나 null인 경우
items가 올바른 배열 형식이 아닌 경우
배열이 비어있는 경우
최대 항목 수를 초과하는 경우
반복 인덱스가 유효하지 않은 경우
이러한 오류들은 워크플로우 실행을 중단시키므로, 사전에 데이터 검증을 수행하는 것이 좋습니다.