Skip to main content

Function Node

What is a Function Node?

Function Node는 Flow 안에서 사용자가 직접 JavaScript 코드를 작성하여 데이터를 가공하거나 커스텀 로직을 실행할 수 있는 Node 유형입니다. 정형화된 Node만으로 표현하기 어려운 로직(조건 분기, 값 변환, 반복 처리 등)을 자유롭게 작성할 수 있습니다.

코드 시그니처

Function Node의 코드는 다음과 같은 형태로 작성합니다.

module.exports = async (draft, context) => {
// draft: 이전 Node까지 처리된 payload의 Immer draft 객체
// context: 실행 컨텍스트 (log, fn, request 등)

draft.output = draft.input.value * 2;
};
  • draft: Immer의 draft 객체로, 이전 Node까지의 처리 결과(payload)를 담고 있습니다. draft를 직접 변경(mutate)하면 Integration Hub 엔진이 이를 불변 객체로 변환하여 다음 Node로 전달합니다.
  • context: 실행 중 사용할 수 있는 부가 기능을 제공합니다.
    • context.log(...) / context.log.error(...): 실행 로그를 남깁니다. 남긴 로그는 실행 이력(Task/로그 조회 화면)에서 확인할 수 있습니다.
    • context.fn: Flow 단위로 공유되는 공통 함수를 호출할 때 사용합니다.
    • 그 외 요청(request) 정보 등 Flow 실행 컨텍스트가 포함됩니다.

draft의 상세 구조와 context가 제공하는 함수/객체 목록은 Draft, Context 문서를 참고하세요.

실행 방식

Function Node는 Flow가 실행될 때마다 Integration Hub 엔진이 소스 코드를 조회하여 동적으로 로드한 뒤 실행합니다. 개발 중(latest) 버전은 매 실행마다 모듈 캐시를 초기화하므로, 코드를 수정하고 즉시 재실행하여 결과를 확인할 수 있습니다. 반면 배포(버전 고정)된 Flow는 해당 버전이 저장된 시점의 코드로 고정되어 실행됩니다.