logologo
시작
가이드
개발
플러그인
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
시작
가이드
개발
플러그인
API
logologo
워크플로우
개요
빠른 시작

트리거

개요
테이블 이벤트
예약된 작업
액션 전 이벤트
액션 후 이벤트
사용자 정의 액션 이벤트
승인
Webhook

노드

개요

인공지능

대규모 언어 모델

흐름 제어

조건
다중 조건 분기
반복
변수
병렬 분기
워크플로우 호출
플로우 출력
JSON 변수 매핑
지연
종료

계산

계산
날짜 계산
JSON 계산

데이터 작업

데이터 생성
데이터 업데이트
데이터 조회
데이터 삭제
SQL 작업

수동 처리

수동 처리
승인
참조

유형 확장

HTTP 요청
JavaScript 스크립트
알림
이메일 발송
응답
응답 메시지
변수
실행 기록
버전 관리
고급 옵션

확장 개발

개요
트리거 유형 확장
노드 유형 확장
API 참조
Previous Page개요
Next Page노드 유형 확장
TIP

이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요

#확장 트리거 유형

모든 워크플로우는 프로세스 실행을 시작하는 진입점 역할을 하는 특정 트리거를 구성해야 합니다.

트리거 유형은 일반적으로 특정 시스템 환경 이벤트를 나타냅니다. 애플리케이션의 런타임 수명 주기 동안 구독 가능한 이벤트를 제공하는 모든 부분이 트리거 유형 정의에 사용될 수 있습니다. 예를 들어, 요청 수신, 컬렉션 작업, 스케줄링된 작업 등이 있습니다.

트리거 유형은 문자열 식별자를 기반으로 플러그인의 트리거 테이블에 등록됩니다. 워크플로우 플러그인에는 몇 가지 내장 트리거가 있습니다:

  • 'collection':컬렉션 작업으로 트리거됩니다.
  • 'schedule':스케줄링된 작업으로 트리거됩니다.
  • 'action':작업 후 이벤트로 트리거됩니다.

확장 트리거 유형은 식별자가 고유해야 하며, 서버 측에서는 트리거의 구독/구독 취소 구현을 등록하고, 클라이언트 측에서는 인터페이스 구성 구현을 등록해야 합니다.

#서버 측

모든 트리거는 Trigger 기본 클래스를 상속받고 on/off 메서드를 구현해야 합니다. 이 메서드들은 각각 특정 환경 이벤트를 구독하고 구독을 취소하는 데 사용됩니다. on 메서드에서는 최종적으로 이벤트를 트리거하기 위해 특정 이벤트 콜백 함수 내에서 this.workflow.trigger()를 호출해야 합니다. 또한 off 메서드에서는 구독 취소와 관련된 정리 작업을 수행해야 합니다.

this.workflow는 Trigger 기본 클래스의 생성자에 전달되는 워크플로우 플러그인 인스턴스입니다.

import { Trigger } from '@nocobase/plugin-workflow';

class MyTrigger extends Trigger {
  timer: NodeJS.Timeout;

  on(workflow) {
    // register event
    this.timer = setInterval(() => {
      // trigger workflow
      this.workflow.trigger(workflow, { date: new Date() });
    }, workflow.config.interval ?? 60000);
  }

  off(workflow) {
    // unregister event
    clearInterval(this.timer);
  }
}

그다음, 워크플로우를 확장하는 플러그인에서 트리거 인스턴스를 워크플로우 엔진에 등록합니다:

import WorkflowPlugin from '@nocobase/plugin-workflow';

export default class MyPlugin extends Plugin {
  load() {
    // get workflow plugin instance
    const workflowPlugin = this.app.pm.get(WorkflowPlugin) as WorkflowPlugin;

    // register trigger
    workflowPlugin.registerTrigger('interval', MyTrigger);
  }
}

서버가 시작되고 로드된 후에는 'interval' 유형의 트리거를 추가하고 실행할 수 있습니다.

#클라이언트 측

클라이언트 측은 주로 트리거 유형에 필요한 구성 항목에 따라 구성 인터페이스를 제공합니다. 각 트리거 유형은 워크플로우 플러그인에 해당 유형 구성을 등록해야 합니다.

예를 들어, 위에 언급된 스케줄링된 실행 트리거의 경우, 구성 인터페이스 폼에 필요한 간격 시간 구성 항목(interval)을 정의합니다:

import { Trigger } from '@nocobase/workflow/client';

class MyTrigger extends Trigger {
  title = 'Interval timer trigger';
  // fields of trigger config
  fieldset = {
    interval: {
      type: 'number',
      title: 'Interval',
      name: 'config.interval',
      'x-decorator': 'FormItem',
      'x-component': 'InputNumber',
      default: 60000,
    },
  };
}

그런 다음, 확장된 플러그인 내에서 이 트리거 유형을 워크플로우 플러그인 인스턴스에 등록합니다:

import { Plugin } from '@nocobase/client';
import WorkflowPlugin from '@nocobase/plugin-workflow/client';

import MyTrigger from './MyTrigger';

export default class extends Plugin {
  // You can get and modify the app instance here
  async load() {
    const workflow = this.app.pm.get(WorkflowPlugin) as WorkflowPlugin;
    workflow.registerTrigger('interval', MyTrigger);
  }
}

그 후 워크플로우의 구성 인터페이스에서 새로운 트리거 유형을 확인할 수 있습니다.

팁

클라이언트 측에 등록된 트리거 유형 식별자는 서버 측과 일치해야 합니다. 그렇지 않으면 오류가 발생합니다.

트리거 유형 정의에 대한 자세한 내용은 워크플로우 API 참조 섹션을 참고하십시오.