서브워크플로 실행

서브워크플로 실행 (Execute Sub-workflow)

서브워크플로 실행(Execute Sub-workflow) 노드로 n8n을 실행하는 호스트 머신에서 다른 워크플로를 실행할 수 있어요.

노드 파라미터

소스(Source)

노드가 서브워크플로 정보를 어디서 가져올지 고릅니다.

  • 데이터베이스(Database): 데이터베이스에서 ID로 워크플로를 불러오는 옵션이에요. 다음 중 하나도 입력해야 합니다.
    • 목록에서(From list): 계정에서 사용할 수 있는 워크플로 목록에서 선택합니다.
    • 워크플로 ID(Workflow ID): 워크플로의 ID를 입력해요. 워크플로 URL에는 /workflow/ 다음에 ID가 들어 있습니다. 예를 들어 워크플로 URL이 https://my-n8n-acct.app.n8n.cloud/workflow/abCDE1f6gHiJKL7이라면 워크플로 IDabCDE1f6gHiJKL7입니다.
  • 로컬 파일(Local File): 로컬에 저장된 JSON 파일에서 워크플로를 불러오는 옵션입니다. 다음도 입력해야 해요.
    • 워크플로 경로(Workflow Path): 실행할 로컬 JSON 워크플로 파일의 경로를 입력합니다.
  • 파라미터(Parameter): 파라미터에서 워크플로를 불러오는 옵션입니다. 다음도 입력해야 해요.
    • 워크플로 JSON(Workflow JSON): 실행할 JSON 코드를 입력합니다.
  • URL: URL에서 워크플로를 불러오는 옵션입니다. 다음도 입력해야 해요.
    • 워크플로 URL(Workflow URL): 불러올 워크플로의 URL을 입력합니다.

워크플로 입력(Workflow Inputs)

데이터베이스목록에서 옵션으로 서브워크플로를 선택하면, 서브워크플로의 입력 항목들이 자동으로 표시되어 값을 채우거나 매핑할 준비가 됩니다.

요청된 입력 항목을 선택적으로 제거할 수 있는데, 그 경우 서브워크플로는 항목 값으로 null을 받아요. 타입 변환 시도(Attempt to convert types) 를 켜면 데이터를 서브워크플로 항목이 요청하는 타입으로 자동 변환하려고 시도할 수도 있습니다.

서브워크플로의 워크플로 입력 트리거 노드가 "모든 데이터 수용(Accept all data)" 입력 데이터 모드를 사용하면 입력 항목이 표시되지 않습니다.

모드(Mode)

이 파라미터로 노드의 실행 모드를 제어해요. 다음 옵션 중에서 고릅니다.

  • 모든 항목으로 한 번 실행(Run once with all items): 모든 입력 항목을 노드 단일 실행 하나로 전달합니다.
  • 항목별로 한 번씩 실행(Run once for each item): 각 입력 항목에 대해 노드를 한 번씩 차례로 실행해요.

노드 옵션

이 노드에는 서브워크플로 완료 대기(Wait for Sub-Workflow Completion) 옵션이 하나 있어요. 메인 워크플로가 다음 단계로 넘어가기 전에 서브워크플로 완료를 기다릴지(켬), 기다리지 않고 계속 진행할지(끔) 제어합니다.

템플릿과 예시

서브워크플로 실행 통합 템플릿 보기 또는 모든 템플릿 검색

서브워크플로 설정하고 사용하기

이 절에서는 부모 워크플로와 서브워크플로를 모두 설정하는 방법을 살펴봐요.

서브워크플로 만들기

  1. 새 워크플로를 만듭니다.

기존 워크플로에서 서브워크플로 만들기

기존 부모 워크플로에서 서브워크플로 실행 노드로 바로 서브워크플로를 만들 수도 있습니다. 노드에서 데이터베이스목록에서 옵션을 선택하고, 목록에서 서브워크플로 만들기(Create a sub-workflow) 를 고르세요.

컨텍스트 메뉴의 서브워크플로 변환으로 선택한 노드들을 직접 추출할 수도 있어요.

  1. 선택사항: 서브워크플로를 호출할 수 있는 워크플로를 구성합니다.
    1. 옵션(Options) 메뉴 > 설정(Settings) 을 선택합니다. n8n이 워크플로 설정 모달을 엽니다.
    2. 이 워크플로를 호출할 수 있는 대상(This workflow can be called by) 설정을 변경해요. 워크플로 구성 방법은 워크플로 설정을 참고하세요.
  2. 서브워크플로 실행 트리거 노드를 추가합니다(트리거 노드에서 검색하면 다른 워크플로에 의해 실행될 때(When Executed by Another Workflow) 라고도 표시됩니다).
  3. 입력 데이터 모드(Input data mode) 를 설정해 서브워크플로의 입력 데이터를 어떻게 정의할지 정합니다.
    • 아래 필드로 정의(Define using fields below): 호출 워크플로가 제공해야 하는 개별 입력 이름과 데이터 타입을 정의하는 모드예요. 호출 워크플로의 서브워크플로 실행 노드나 Call n8n Workflow 도구 노드가 여기 정의된 필드를 자동으로 가져옵니다.
    • JSON 예시로 정의(Define using JSON example): 예상 입력 항목과 타입을 보여주는 예시 JSON 객체를 제공하는 모드입니다.
    • 모든 데이터 수용(Accept all data): 모든 데이터를 무조건 수용하는 모드예요. 서브워크플로는 필수 입력 항목을 정의하지 않습니다. 이 서브워크플로는 입력의 불일치나 누락된 값을 스스로 처리해야 해요.
  4. 필요에 따라 서브워크플로 기능을 만들기 위해 다른 노드를 추가합니다.
  5. 서브워크플로를 저장합니다.

서브워크플로에 오류가 있으면 안 됩니다

서브워크플로에 오류가 있으면 부모 워크플로가 이를 트리거할 수 없어요.

빌드 전에 서브워크플로로 데이터 불러오기

이 기능은 이전 실행에서 데이터 불러오기가 필요하며, n8n Cloud와 등록된 Community 요금제에서 사용할 수 있습니다.

빌드하는 동안 쓸 데이터를 서브워크플로로 불러오고 싶다면:

  1. 서브워크플로를 만들고 서브워크플로 실행 트리거를 추가하세요.
  2. 노드의 입력 데이터 모드모든 데이터 수용으로 설정하거나, 입력 항목이 이미 알려져 있다면 필드나 JSON으로 정의합니다.
  3. 서브워크플로 설정에서 성공한 프로덕션 실행 저장(Save successful production executions)저장(Save) 으로 설정해요.
  4. 부모 워크플로 설정으로 건너뛰어서 실행합니다.
  5. 이전 실행에서 데이터 불러오기 단계를 따릅니다.
  6. 필요하면 부모 워크플로가 보낸 입력에 맞게 입력 데이터 모드를 조정합니다.

이제 트리거 노드에 예시 데이터를 고정(pin)할 수 있어서, 나머지 워크플로를 구성하는 동안 실제 데이터로 작업할 수 있어요.

서브워크플로 호출하기

  1. 서브워크플로를 호출할 워크플로를 엽니다.
  2. 서브워크플로 실행 노드를 추가합니다.
  3. 서브워크플로 실행 노드에서 호출할 서브워크플로를 설정합니다. ID로 호출하거나, 로컬 파일에서 불러오거나, 노드에 파라미터로 워크플로 JSON을 추가하거나, URL로 워크플로를 지정할 수 있어요.

워크플로 ID 찾기

서브워크플로의 ID는 URL 끝의 영숫자 문자열입니다.

  1. 서브워크플로가 정의한 필수 입력 항목을 채웁니다.
  2. 워크플로를 저장합니다.

워크플로가 실행되면 데이터를 서브워크플로로 보내고 실행합니다.

서브워크플로 실행 노드를 열고 서브 실행 보기(View sub-execution) 링크를 선택하면 부모 워크플로에서 서브워크플로로 이어지는 실행 흐름을 따라갈 수 있어요. 마찬가지로 서브워크플로의 실행에는 부모 워크플로 실행으로 돌아가는 링크가 있어 반대 방향으로도 탐색할 수 있습니다.

워크플로 사이에 데이터가 전달되는 방식

예를 들어 워크플로 A에 서브워크플로 실행 노드가 있다고 상상해봐요. 그 노드가 워크플로 B라는 다른 워크플로를 호출합니다.

  1. 서브워크플로 실행 노드가 데이터를 워크플로 B의 서브워크플로 실행 트리거 노드(캔버스에는 "다른 노드에 의해 실행될 때"라고 표시)로 전달해요.
  2. 워크플로 B의 마지막 노드가 데이터를 워크플로 A의 서브워크플로 실행 노드로 다시 보냅니다.