워크플로를 더 작은 부분으로 나누기
워크플로를 더 작은 부분으로 나누기
한 워크플로에서 다른 워크플로를 호출하고, 큰 워크플로를 더 작은 컴포넌트로 쪼개는 방법이에요.
한 워크플로에서 다른 워크플로를 호출할 수 있습니다. 이렇게 하면 모듈화된, 마이크로서비스 같은 워크플로를 만들 수 있어요. 또 워크플로가 커져서 메모리 문제를 겪을 만큼 커졌을 때도 도움이 됩니다. 서브워크플로를 만드는 데는 Execute Workflow와 Execute Sub-workflow Trigger 노드를 씁니다.
서브워크플로 실행은 요금제의 월간 실행 횟수나 활성 워크플로 제한에 포함되지 않아요.
서브워크플로 설정하고 사용하기
이 섹션에서는 부모 워크플로와 서브워크플로 둘 다 설정하는 과정을 보여줄게요.
서브워크플로 만들기
-
새 워크플로를 만듭니다.
기존 워크플로에서 서브워크플로 만들기
Execute Sub-workflow 노드를 사용해 기존 부모 워크플로에서 바로 서브워크플로를 만들 수도 있어요. 노드에서 Database와 From list 옵션을 선택하고 목록의 Create a sub-workflow를 선택하면 됩니다.
컨텍스트 메뉴의 Sub-workflow conversion으로 선택한 노드를 바로 추출할 수도 있어요.
-
선택 사항: 어떤 워크플로가 이 서브워크플로를 호출할 수 있는지 설정합니다.
- Options 메뉴 > Settings를 선택합니다. n8n이 Workflow settings 모달을 엽니다.
- This workflow can be called by 설정을 바꿉니다. 워크플로 설정에 대한 자세한 내용은 Workflow settings 문서를 참고하세요.
-
Execute Sub-workflow 트리거 노드를 추가합니다. (트리거 노드 아래에서 찾고 있다면 When Executed by Another Workflow라는 제목으로도 표시돼요.)
-
Input data mode를 설정해 서브워크플로의 입력 데이터를 어떻게 정의할지 정합니다.
- Define using fields below: 호출 워크플로가 제공해야 하는 개별 입력 이름과 데이터 타입을 정의하는 모드. 호출 워크플로의 Execute Sub-workflow 노드 또는 Call n8n Workflow Tool 노드가 여기 정의된 필드를 자동으로 가져옵니다.
- Define using JSON example: 기대하는 입력 항목과 그 타입을 보여 주는 예시 JSON 객체를 제공하는 모드.
- Accept all data: 모든 데이터를 무조건 허용하는 모드. 서브워크플로는 필수 입력 항목을 정의하지 않습니다. 이 서브워크플로가 입력의 불일치나 누락된 값을 스스로 처리해야 해요.
-
서브워크플로 기능을 구성하기 위해 필요한 다른 노드들을 추가합니다.
-
서브워크플로를 저장합니다.
서브워크플로에 오류가 있으면 안 됩니다
서브워크플로에 오류가 있으면 부모 워크플로가 그것을 발동시킬 수 없어요.
만들기 전에 서브워크플로에 데이터 불러오기
이 작업은 이전 실행에서 데이터를 불러오는 능력이 필요한데, n8n Cloud와 등록된 Community 플랜에서 쓸 수 있어요.
서브워크플로를 만들면서 사용할 데이터를 불러오고 싶다면:
- 서브워크플로를 만들고 Execute Sub-workflow Trigger를 추가합니다.
- 노드의 Input data mode를 Accept all data로 설정하거나, 이미 아는 입력이라면 필드나 JSON으로 입력 항목을 정의합니다.
- 서브워크플로 설정에서 Save successful production executions을 Save로 설정합니다.
- 부모 워크플로 설정으로 건너뛰어 가서 실행합니다.
- 이전 실행에서 데이터를 불러오는 단계를 따릅니다.
- 필요하면 Input data mode를 부모 워크플로가 보낸 입력과 일치하도록 조정합니다.
이제 트리거 노드에 예시 데이터를 고정(pin)할 수 있어서, 나머지 워크플로를 구성하는 동안 실데이터로 작업할 수 있습니다.
서브워크플로 호출하기
-
서브워크플로를 호출하고 싶은 워크플로를 엽니다.
-
Execute Sub-workflow 노드를 추가합니다.
-
Execute Sub-workflow 노드에서 호출할 서브워크플로를 설정합니다. 워크플로를 ID로 호출하거나, 로컬 파일에서 불러오거나, 노드의 파라미터로 워크플로 JSON을 추가하거나, URL로 워크플로를 지정할 수 있어요.
워크플로 ID 찾기
서브워크플로의 ID는 URL 마지막의 영숫자 문자열이에요.
-
서브워크플로가 정의한 필수 입력 항목을 채웁니다.
-
워크플로를 저장합니다.
워크플로가 실행되면 데이터를 서브워크플로에 보내고 실행시킵니다.
Execute Sub-workflow 노드를 열고 View sub-execution 링크를 선택하면 부모 워크플로에서 서브워크플로로 이어지는 실행 흐름을 따라갈 수 있어요. 마찬가지로 서브워크플로의 실행에는 부모 워크플로 실행으로 돌아가는 링크도 있어서 반대 방향으로도 이동할 수 있습니다.
워크플로 사이에서 데이터가 어떻게 오가나요
예를 들어 Workflow A에 Execute Sub-workflow 노드가 있고, 그 노드가 Workflow B라는 다른 워크플로를 호출한다고 해 볼게요.
- Execute Sub-workflow 노드가 Workflow B의 Execute Sub-workflow Trigger 노드(캔버스에서는 "When executed by another node"라는 제목)로 데이터를 전달합니다.
- Workflow B의 마지막 노드가 데이터를 Workflow A의 Execute Sub-workflow 노드로 다시 보냅니다.
서브워크플로 변환
기존 워크플로를 서브워크플로로 나누는 방법은 sub-workflow conversion 문서를 참고하세요.