이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요
컬렉션 이벤트 유형의 트리거는 컬렉션의 생성, 업데이트, 삭제 이벤트를 수신합니다. 해당 컬렉션에 대한 데이터 작업이 발생하고 설정된 조건을 충족하면 해당 워크플로우를 트리거합니다. 예를 들어, 새 주문 생성 후 상품 재고를 차감하거나, 새 댓글 추가 후 수동 검토를 기다리는 등의 시나리오에 활용할 수 있습니다.
컬렉션 변경에는 다음과 같은 몇 가지 경우가 있습니다:

비즈니스 요구사항에 따라 트리거 시점을 선택할 수 있습니다. 변경 유형에 컬렉션 업데이트가 포함된 경우, 변경이 발생한 필드를 지정할 수도 있습니다. 선택한 필드가 변경될 때만 트리거 조건이 충족됩니다. 아무것도 선택하지 않으면 모든 필드의 변경이 트리거를 발생시킬 수 있습니다.

더 자세히는, 트리거되는 데이터 행의 각 필드에 대해 조건 규칙을 설정할 수 있습니다. 해당 필드가 조건을 충족할 때만 트리거가 실행됩니다.

컬렉션 이벤트가 트리거되면, 이벤트를 발생시킨 데이터 행이 트리거 컨텍스트 데이터로 실행 계획에 주입됩니다. 이는 이후 워크플로우의 노드에서 변수로 사용될 수 있습니다. 하지만, 이후 노드에서 이 데이터의 관계 필드를 사용해야 하는 경우, 먼저 관계 데이터의 사전 로드를 설정해야 합니다. 선택된 관계 데이터는 트리거 후 컨텍스트에 함께 주입되며, 계층적으로 선택하여 사용할 수 있습니다.
컬렉션 이벤트는 현재 일괄 데이터 작업 트리거를 지원하지 않습니다. 예를 들어, 게시물 데이터를 생성하면서 해당 게시물의 여러 태그 데이터(일대다 관계 데이터)를 동시에 추가하는 경우, 게시물 생성 워크플로우만 트리거되며, 동시에 추가된 여러 태그는 태그 생성 워크플로우를 트리거하지 않습니다. 다대다 관계 데이터의 연결 및 추가 시에도 중간 컬렉션의 워크플로우는 트리거되지 않습니다.
HTTP API 호출을 통해 애플리케이션 인터페이스로 컬렉션을 조작하는 경우에도 해당 이벤트를 트리거할 수 있습니다. 하지만 NocoBase 애플리케이션을 통하지 않고 데이터베이스 작업을 통해 직접 발생한 데이터 변경은 해당 이벤트를 트리거할 수 없습니다. 예를 들어, 데이터베이스 자체의 트리거는 애플리케이션 내 워크플로우와 연결되지 않습니다.
또한, SQL 작업 노드를 사용하여 데이터베이스를 조작하는 것은 데이터베이스를 직접 조작하는 것과 같으므로 컬렉션 이벤트를 트리거하지 않습니다.
워크플로우는 0.20 버전부터 외부 데이터 소스를 지원합니다. 외부 데이터 소스 플러그인을 사용하고 컬렉션 이벤트가 외부 데이터 소스로 설정된 경우, 해당 데이터 소스에 대한 데이터 작업이 애플리케이션 내에서 완료된 경우(사용자 생성, 업데이트 및 워크플로우 데이터 작업 등)에는 해당 컬렉션 이벤트를 트리거할 수 있습니다. 하지만 데이터 변경이 다른 시스템을 통해 발생하거나 외부 데이터베이스에서 직접 변경된 경우에는 컬렉션 이벤트를 트리거할 수 없습니다.
새 주문 생성 후 총액을 계산하고 재고를 차감하는 시나리오를 예로 들어보겠습니다.
먼저, 상품 컬렉션과 주문 컬렉션을 생성하며, 데이터 모델은 다음과 같습니다:
| 필드 이름 | 필드 유형 |
|---|---|
| 상품 이름 | 한 줄 텍스트 |
| 가격 | 숫자 |
| 재고 | 정수 |
| 필드 이름 | 필드 유형 |
|---|---|
| 주문 번호 | 자동 번호 |
| 주문 상품 | 다대일 (상품) |
| 주문 총액 | 숫자 |
그리고 기본적인 상품 데이터를 추가합니다:
| 상품 이름 | 가격 | 재고 |
|---|---|---|
| iPhone 14 Pro | 7999 | 10 |
| iPhone 13 Pro | 5999 | 0 |
다음으로, 주문 컬렉션 이벤트를 기반으로 워크플로우를 생성합니다:

몇 가지 설정 항목은 다음과 같습니다:
그런 다음, 워크플로우 로직에 따라 다른 노드를 설정합니다. 상품 재고가 0보다 큰지 확인하고, 0보다 크면 재고를 차감하며, 그렇지 않으면 주문을 무효화하고 삭제합니다:

노드 설정은 특정 노드 유형에 대한 소개 문서에서 자세히 설명됩니다.
이 워크플로우를 활성화하고 인터페이스를 통해 새 주문을 생성하여 테스트합니다. "iPhone 14 Pro"를 주문하면 해당 상품의 재고가 9로 줄어듭니다. 반면, "iPhone 13 Pro"를 주문하면 재고 부족으로 인해 주문이 삭제됩니다.
