logologo
Start
Handbuch
Entwickler
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Handbuch
Entwickler
Plugins
API
logologo
Workflow
Überblick
Schnellstart

Trigger

Überblick
Tabellen-Events
Geplante Aufgaben
Pre-Action-Event
Post-Action-Event
Benutzerdefinierte Action-Events
Genehmigung
Webhook

Knoten

Überblick

Künstliche Intelligenz (KI)

Large Language Model (LLM)

Ablaufsteuerung

Bedingung
Mehrfachverzweigung
Schleife
Variablen
Parallele Zweige
Workflow aufrufen
Workflow-Ausgabe
JSON-Variablen-Mapping
Verzögerung
Ende

Berechnung

Berechnung
Datumsberechnung
JSON-Berechnung

Datenoperationen

Daten erstellen
Daten aktualisieren
Daten abfragen
Daten löschen
SQL-Operation

Manuelle Aufgabe

Manuelle Aufgabe
Genehmigung
CC

Typen erweitern

HTTP-Request
JavaScript-Skript
Benachrichtigung
E-Mail senden
Antwort
Antwortnachricht
Variablen
Ausführungsprotokoll
Versionsverwaltung
Erweiterte Optionen

Erweiterungsentwicklung

Überblick
Trigger-Typen erweitern
Knoten-Typen erweitern
API-Referenz
Previous PageÜberblick
Next PageKnoten-Typen erweitern
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Trigger-Typen erweitern

Jeder Workflow benötigt einen spezifischen Trigger. Dieser dient als Startpunkt für die Ausführung des Prozesses.

Ein Trigger-Typ repräsentiert in der Regel ein spezifisches Systemereignis. Während des Lebenszyklus einer Anwendung kann jeder Teil, der abonnierbare Ereignisse bereitstellt, zur Definition eines Trigger-Typs verwendet werden. Beispiele hierfür sind der Empfang von Anfragen, Operationen an Daten-Sammlungen oder geplante Aufgaben.

Trigger-Typen werden anhand eines String-Identifikators in der Trigger-Tabelle des Plugins registriert. Das Workflow-Plugin enthält bereits mehrere integrierte Trigger:

  • 'collection': Wird durch Operationen an Daten-Sammlungen ausgelöst;
  • 'schedule': Wird durch geplante Aufgaben ausgelöst;
  • 'action': Wird durch Ereignisse nach einer Aktion ausgelöst;

Erweiterte Trigger-Typen müssen einen eindeutigen Identifikator besitzen. Die Implementierung für das Abonnieren und Abbestellen des Triggers wird serverseitig registriert, während die Implementierung für die Konfigurationsoberfläche clientseitig erfolgt.

#Serverseitig

Jeder Trigger muss von der Basisklasse Trigger erben und die Methoden on und off implementieren. Diese dienen dazu, spezifische Umgebungsereignisse zu abonnieren bzw. das Abonnement aufzuheben. Innerhalb der on-Methode müssen Sie in der spezifischen Event-Callback-Funktion this.workflow.trigger() aufrufen, um das Ereignis letztendlich auszulösen. Die off-Methode sollte die notwendigen Bereinigungsarbeiten für die Abmeldung übernehmen.

this.workflow ist die Workflow-Plugin-Instanz, die dem Konstruktor der Basisklasse Trigger übergeben wird.

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);
  }
}

Anschließend registrieren Sie in dem Plugin, das den Workflow erweitert, die Trigger-Instanz bei der Workflow-Engine:

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);
  }
}

Nachdem der Server gestartet und geladen wurde, kann der Trigger vom Typ 'interval' hinzugefügt und ausgeführt werden.

#Clientseitig

Der clientseitige Teil stellt hauptsächlich eine Konfigurationsoberfläche bereit, die auf den für den Trigger-Typ erforderlichen Konfigurationselementen basiert. Jeder Trigger-Typ muss seine entsprechende Typkonfiguration ebenfalls beim Workflow-Plugin registrieren.

Definieren Sie beispielsweise für den oben genannten Trigger mit zeitgesteuerter Ausführung das erforderliche Konfigurationselement für das Intervall (interval) im Formular der Konfigurationsoberfläche:

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,
    },
  };
}

Anschließend registrieren Sie diesen Trigger-Typ innerhalb des erweiterten Plugins bei der Workflow-Plugin-Instanz:

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);
  }
}

Danach wird der neue Trigger-Typ in der Workflow-Konfigurationsoberfläche sichtbar sein.

Hinweis

Der clientseitig registrierte Identifikator des Trigger-Typs muss mit dem serverseitigen übereinstimmen, da es sonst zu Fehlern kommt.

Weitere Details zur Definition von Trigger-Typen finden Sie im Abschnitt Workflow API Referenz.