워크플로를 더 작은 부분으로 나누기

워크플로를 더 작은 부분으로 나누기

한 워크플로에서 다른 워크플로를 호출하고, 큰 워크플로를 더 작은 컴포넌트로 쪼개는 방법이에요.

한 워크플로에서 다른 워크플로를 호출할 수 있습니다. 이렇게 하면 모듈화된, 마이크로서비스 같은 워크플로를 만들 수 있어요. 또 워크플로가 커져서 메모리 문제를 겪을 만큼 커졌을 때도 도움이 됩니다. 서브워크플로를 만드는 데는 Execute WorkflowExecute Sub-workflow Trigger 노드를 씁니다.

서브워크플로 실행은 요금제의 월간 실행 횟수나 활성 워크플로 제한에 포함되지 않아요.

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

이 섹션에서는 부모 워크플로와 서브워크플로 둘 다 설정하는 과정을 보여줄게요.

서브워크플로 만들기

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

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

    Execute Sub-workflow 노드를 사용해 기존 부모 워크플로에서 바로 서브워크플로를 만들 수도 있어요. 노드에서 DatabaseFrom list 옵션을 선택하고 목록의 Create a sub-workflow를 선택하면 됩니다.

    컨텍스트 메뉴의 Sub-workflow conversion으로 선택한 노드를 바로 추출할 수도 있어요.

  2. 선택 사항: 어떤 워크플로가 이 서브워크플로를 호출할 수 있는지 설정합니다.

    1. Options 메뉴 > Settings를 선택합니다. n8n이 Workflow settings 모달을 엽니다.
    2. This workflow can be called by 설정을 바꿉니다. 워크플로 설정에 대한 자세한 내용은 Workflow settings 문서를 참고하세요.
  3. Execute Sub-workflow 트리거 노드를 추가합니다. (트리거 노드 아래에서 찾고 있다면 When Executed by Another Workflow라는 제목으로도 표시돼요.)

  4. Input data mode를 설정해 서브워크플로의 입력 데이터를 어떻게 정의할지 정합니다.

    • Define using fields below: 호출 워크플로가 제공해야 하는 개별 입력 이름과 데이터 타입을 정의하는 모드. 호출 워크플로의 Execute Sub-workflow 노드 또는 Call n8n Workflow Tool 노드가 여기 정의된 필드를 자동으로 가져옵니다.
    • Define using JSON example: 기대하는 입력 항목과 그 타입을 보여 주는 예시 JSON 객체를 제공하는 모드.
    • Accept all data: 모든 데이터를 무조건 허용하는 모드. 서브워크플로는 필수 입력 항목을 정의하지 않습니다. 이 서브워크플로가 입력의 불일치나 누락된 값을 스스로 처리해야 해요.
  5. 서브워크플로 기능을 구성하기 위해 필요한 다른 노드들을 추가합니다.

  6. 서브워크플로를 저장합니다.

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

서브워크플로에 오류가 있으면 부모 워크플로가 그것을 발동시킬 수 없어요.

만들기 전에 서브워크플로에 데이터 불러오기

이 작업은 이전 실행에서 데이터를 불러오는 능력이 필요한데, n8n Cloud와 등록된 Community 플랜에서 쓸 수 있어요.

서브워크플로를 만들면서 사용할 데이터를 불러오고 싶다면:

  1. 서브워크플로를 만들고 Execute Sub-workflow Trigger를 추가합니다.
  2. 노드의 Input data modeAccept all data로 설정하거나, 이미 아는 입력이라면 필드나 JSON으로 입력 항목을 정의합니다.
  3. 서브워크플로 설정에서 Save successful production executionsSave로 설정합니다.
  4. 부모 워크플로 설정으로 건너뛰어 가서 실행합니다.
  5. 이전 실행에서 데이터를 불러오는 단계를 따릅니다.
  6. 필요하면 Input data mode를 부모 워크플로가 보낸 입력과 일치하도록 조정합니다.

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

서브워크플로 호출하기

  1. 서브워크플로를 호출하고 싶은 워크플로를 엽니다.

  2. Execute Sub-workflow 노드를 추가합니다.

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

    워크플로 ID 찾기

    서브워크플로의 ID는 URL 마지막의 영숫자 문자열이에요.

  4. 서브워크플로가 정의한 필수 입력 항목을 채웁니다.

  5. 워크플로를 저장합니다.

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

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

워크플로 사이에서 데이터가 어떻게 오가나요

예를 들어 Workflow A에 Execute Sub-workflow 노드가 있고, 그 노드가 Workflow B라는 다른 워크플로를 호출한다고 해 볼게요.

  1. Execute Sub-workflow 노드가 Workflow B의 Execute Sub-workflow Trigger 노드(캔버스에서는 "When executed by another node"라는 제목)로 데이터를 전달합니다.
  2. Workflow B의 마지막 노드가 데이터를 Workflow A의 Execute Sub-workflow 노드로 다시 보냅니다.

서브워크플로 변환

기존 워크플로를 서브워크플로로 나누는 방법은 sub-workflow conversion 문서를 참고하세요.