Skip to Content
ComponentsCalsOrchestrationDesigner

OrchestrationDesigner

비주얼 워크플로우 편집기 컴포넌트


개요

OrchestrationDesigner는 노드와 커넥터를 사용해 워크플로우, 프로세스 흐름, 조직도 등을 시각적으로 설계할 수 있는 다이어그램 편집기입니다.

주요 특징

  • 노드/커넥터 CRUD: ref API(addNode, removeNode, addConnector 등)로 외부에서 제어
  • 팔레트: 드래그앤드롭 또는 클릭으로 노드 추가
  • 직교 라우팅: Dijkstra 기반 장애물 회피 커넥터 자동 경로 탐색
  • 인터랙션 제어: selectable, movable, resizable, connectable, reconnectable 독립 토글
  • 커스텀 노드 템플릿: nodeTemplate prop으로 노드 외형 자유 정의
  • 포트 연결/재연결: 노드 호버 시 포트 표시, 드래그로 연결 생성 및 재연결
  • 줌/팬: 마우스 휠 줌, 패닝 모드 전환
  • Undo/Redo: 내장 히스토리 관리

기본 사용

노드와 커넥터만으로 읽기 전용 다이어그램을 렌더링합니다.

시작
데이터 처리
Action parameters 0
승인?
종료

인터랙티브 편집

팔레트에서 드래그앤드롭 또는 클릭으로 노드를 추가하고, 포트를 드래그해 커넥터를 연결합니다.

Start
Process
Decision
End
시작
데이터 처리
Action parameters 0

커스텀 노드 템플릿

nodeTemplate prop으로 노드 렌더링을 완전히 커스터마이즈할 수 있습니다.

시작
데이터 처리Process
승인?
종료

API Reference

Props

PropTypeDefaultDescription
initialNodesDesignerNode[][]초기 노드 목록
initialConnectorsDesignerConnector[][]초기 커넥터 목록
initialViewportViewport-초기 뷰포트 (x, y, zoom)
nodeGroupsNodeTypeGroup[]-팔레트 노드 유형 그룹
showPalettebooleantrue팔레트 표시 여부
paletteWidthnumber240팔레트 너비 (px)
paletteColumnsnumber3팔레트 그리드 열 수
showToolbarbooleantrue툴바 표시 여부
toolbarButtonsDesignerToolbarButton[]-툴바 버튼 목록 (완전 외부 제어)
showGridbooleantrue캔버스 그리드 표시
gridSizenumber20그리드 크기 (px)
snapToGridbooleanfalse노드 이동/드롭 시 그리드 스냅
nodeTemplate(node: DesignerNode) => ReactNode-커스텀 노드 렌더러
renderConnector(connector: DesignerConnector) => ReactNode-커스텀 커넥터 렌더러
nodeActionsNodeAction[][]노드 선택 시 표시할 액션 버튼
selectablebooleanfalse노드/커넥터 클릭 선택 허용
movablebooleanfalse노드 드래그 이동 허용
resizablebooleanfalse노드 리사이즈 허용
connectablebooleanfalse포트 드래그로 새 커넥터 생성 허용
reconnectablebooleanfalse커넥터 엔드포인트 재연결 허용
panModebooleanfalse좌클릭 드래그로 캔버스 패닝
visiblebooleantrue표시 여부

Events

EventTypeDescription
onPaletteNodeClick(item: NodeTypeItem) => void팔레트 노드 클릭 시
onNodeDrop(type: string, position: Position) => DesignerNode | void캔버스에 DnD 드롭 — 노드 반환 시 자동 추가
onChange(nodes: DesignerNode[], connectors: DesignerConnector[]) => void상태 변경 콜백

Ref API (OrchestrationDesignerRef)

MethodTypeDescription
addNode(node: DesignerNode) => void노드 추가
removeNode(nodeId: string) => void노드 제거
updateNode(nodeId: string, updates: Partial<DesignerNode>) => void노드 속성 업데이트
addConnector(connector: DesignerConnector) => void커넥터 추가
removeConnector(connectorId: string) => void커넥터 제거
undo() => void실행 취소
redo() => void다시 실행
zoomToFit() => void전체 노드에 맞춰 줌
autoLayout() => void자동 레이아웃 정렬

주요 타입

DesignerNode

interface DesignerNode { id: string type: string title: string position: Position size?: Size color?: string shape?: "rect" | "diamond" | "circle" status?: NodeStatus locked?: boolean connectionPoints?: ConnectionPoint[] data?: Record<string, unknown> }

DesignerConnector

interface DesignerConnector { id: string sourceNodeId: string targetNodeId: string sourcePointId?: string targetPointId?: string label?: string color?: string }

NodeTypeGroup

interface NodeTypeGroup { id: string label: string color?: string items: NodeTypeItem[] }

접근성

권장 사항

  • ✅ 노드 선택 시 액션 바가 표시되어 키보드 접근 가능합니다.
  • ✅ Delete/Backspace 키로 선택된 노드/커넥터를 삭제할 수 있습니다.
  • ✅ 마우스 휠로 줌 조절이 가능합니다.
  • ❌ 현재 포트 연결은 마우스 드래그 전용입니다. 키보드만으로 커넥터를 생성할 수 없습니다.

관련 컴포넌트

  • Kanban: 컬럼 기반 카드 보드 컴포넌트
Last updated on