커스텀 노드 주입하기 (Dynamic Node)
1. 개요
동적 노드란?
기존 플러그인 vs 동적 노드
항목
커뮤니티 플러그인
동적 노드
언제 사용하는가?
2. 핵심 개념
스키마와 클래스 분리 (Lazy Loading)
Dynamic_ prefix 네이밍 규칙
책임 분리
영역
라이브러리 (ProgramGarden)
사용자
3. 사용 흐름 (4단계)
Step 1: 스키마 등록
Step 2: 워크플로우 정의
Step 3: 필요 타입 확인 & 클래스 주입
Step 4: 실행 & 정리
4. 동적 노드 클래스 작성법
기본 구조
BaseNode 상속
_outputs 정의 (OutputPort)
필드
타입
필수
설명
_inputs 정의 (InputPort, 선택)
필드
타입
필수
설명
execute() 메서드 구현
설정 필드 추가
5. API 레퍼런스
WorkflowExecutor 메서드
메서드
설명
반환
register_dynamic_schemas(schemas)
get_required_dynamic_types(workflow)
inject_node_classes(node_classes)
is_dynamic_node_ready(node_type)
clear_injected_classes()
DynamicNodeSchema 필드
필드
타입
필수
기본값
설명
6. 완전한 예제 (RSI + MACD)
스키마 정의
클래스 구현
워크플로우 JSON
실행 코드
7. 제약사항 & 보안
credential_id 사용 불가
검증 규칙
#
검증 항목
실패 시 예외
에러 메시지 목록
상황
에러 메시지
8. FAQ
Q. 스키마 등록과 클래스 주입을 왜 분리했나요?
Q. 기존 노드 타입명(예: ConditionNode)을 동적 노드 타입으로 사용할 수 있나요?
Q. 동적 노드에서 외부 라이브러리(pandas 등)를 사용할 수 있나요?
Q. clear_injected_classes() 후 스키마는 유지되나요?
Q. 하나의 워크플로우에 동적 노드와 내장 노드를 함께 사용할 수 있나요?
Q. DynamicNodeRegistry를 직접 사용해야 하나요?
마지막 업데이트