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