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 PageKnoten-Typen erweitern
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#API Referenz

#Serverseitig

Die in der serverseitigen Paketstruktur verfügbaren APIs sind im folgenden Code dargestellt:

import PluginWorkflowServer, {
  Trigger,
  Instruction,
  EXECUTION_STATUS,
  JOB_STATUS,
} from '@nocobase/plugin-workflow';

#PluginWorkflowServer

Die Workflow-Plugin-Klasse.

Normalerweise können Sie zur Laufzeit der Anwendung app.pm.get<PluginWorkflowServer>(PluginWorkflowServer) aufrufen, wo immer Sie die Anwendungsinstanz app erhalten können, um die Workflow-Plugin-Instanz (im Folgenden als plugin bezeichnet) zu erhalten.

#registerTrigger()

Erweitert und registriert einen neuen Trigger-Typ.

Signatur

registerTrigger(type: string, trigger: typeof Trigger | Trigger })

Parameter

ParameterTypBeschreibung
typestringBezeichner des Trigger-Typs
triggertypeof Trigger | TriggerTrigger-Typ oder -Instanz

Beispiel

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

function handler(this: MyTrigger, workflow: WorkflowModel, message: string) {
  // trigger workflow
  this.workflow.trigger(workflow, { data: message.data });
}

class MyTrigger extends Trigger {
  messageHandlers: Map<number, WorkflowModel> = new Map();
  on(workflow: WorkflowModel) {
    const messageHandler = handler.bind(this, workflow);
    // listen some event to trigger workflow
    process.on(
      'message',
      this.messageHandlers.set(workflow.id, messageHandler),
    );
  }

  off(workflow: WorkflowModel) {
    const messageHandler = this.messageHandlers.get(workflow.id);
    // remove listener
    process.off('message', messageHandler);
  }
}

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

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

#registerInstruction()

Erweitert und registriert einen neuen Knoten-Typ.

Signatur

registerInstruction(type: string, instruction: typeof Instruction | Instruction })

Parameter

ParameterTypBeschreibung
typestringBezeichner des Instruktions-Typs
instructiontypeof Instruction | InstructionInstruktions-Typ oder -Instanz

Beispiel

import PluginWorkflowServer, { Instruction, JOB_STATUS } from '@nocobase/plugin-workflow';

class LogInstruction extends Instruction {
  run(node, input, processor) {
    console.log('my instruction runs!');
    return {
      status: JOB_STATUS.RESOVLED,
    };
  },
};

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

    // register instruction
    workflowPlugin.registerInstruction('log', LogInstruction);
  }
}

#trigger()

Löst einen spezifischen Workflow aus. Dies wird hauptsächlich in benutzerdefinierten Triggern verwendet, um den entsprechenden Workflow auszulösen, wenn ein spezifisches benutzerdefiniertes Ereignis abgehört wird.

Signatur

trigger(workflow: Workflow, context: any)

Parameter

ParameterTypBeschreibung
workflowWorkflowModelDas auszulösende Workflow-Objekt
contextobjectKontextdaten, die zum Zeitpunkt des Triggers bereitgestellt werden
Tipp

Der context ist derzeit ein Pflichtfeld. Wenn er nicht bereitgestellt wird, wird der Workflow nicht ausgelöst.

Beispiel

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

class MyTrigger extends Trigger {
  timer: NodeJS.Timeout;

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

#resume()

Setzt einen wartenden Workflow mit einem spezifischen Knoten-Job fort.

  • Nur Workflows im Wartestatus (EXECUTION_STATUS.STARTED) können fortgesetzt werden.
  • Nur Knoten-Jobs im Status JOB_STATUS.PENDING können fortgesetzt werden.

Signatur

resume(job: JobModel)

Parameter

ParameterTypBeschreibung
jobJobModelDas aktualisierte Job-Objekt
Tipp

Das übergebene Job-Objekt ist in der Regel ein aktualisiertes Objekt, dessen status normalerweise auf einen anderen Wert als JOB_STATUS.PENDING aktualisiert wird, da es sonst weiterhin wartet.

Beispiel

Details finden Sie im Quellcode.

#Trigger

Die Basisklasse für Trigger, die zur Erweiterung benutzerdefinierter Trigger-Typen verwendet wird.

ParameterTypBeschreibung
constructor(public readonly workflow: PluginWorkflowServer): TriggerKonstruktor
on?(workflow: WorkflowModel): voidEvent-Handler nach dem Aktivieren eines Workflows
off?(workflow: WorkflowModel): voidEvent-Handler nach dem Deaktivieren eines Workflows

on/off werden verwendet, um Event-Listener zu registrieren/deregistrieren, wenn ein Workflow aktiviert/deaktiviert wird. Der übergebene Parameter ist die Workflow-Instanz, die dem Trigger entspricht und gemäß der Konfiguration verarbeitet werden kann. Einige Trigger-Typen, die bereits global abgehörte Events haben, müssen diese beiden Methoden möglicherweise nicht implementieren. Zum Beispiel können Sie in einem geplanten Trigger einen Timer in on registrieren und ihn in off deregistrieren.

#Instruction

Die Basisklasse für Instruktions-Typen, die zur Erweiterung benutzerdefinierter Instruktions-Typen verwendet wird.

ParameterTypBeschreibung
constructor(public readonly workflow: PluginWorkflowServer): InstructionKonstruktor
runRunnerAusführungslogik für den ersten Eintritt in den Knoten
resume?RunnerAusführungslogik für den Eintritt in den Knoten nach der Fortsetzung aus einer Unterbrechung
getScope?(node: FlowNodeModel, data: any, processor: Processor): anyStellt den lokalen Variableninhalt für den vom entsprechenden Knoten generierten Zweig bereit

Zugehörige Typen

export type Job =
  | {
      status: JOB_STATUS[keyof JOB_STATUS];
      result?: unknown;
      [key: string]: unknown;
    }
  | JobModel
  | null;

export type InstructionResult = Job | Promise<Job>;

export type Runner = (
  node: FlowNodeModel,
  input: JobModel,
  processor: Processor,
) => InstructionResult;

export class Instruction {
  run: Runner;
  resume?: Runner;
}

Für getScope können Sie die Implementierung des Schleifenknotens heranziehen, die verwendet wird, um lokale Variableninhalte für Zweige bereitzustellen.

#EXECUTION_STATUS

Eine Konstanten-Tabelle für die Status von Workflow-Ausführungsplänen, die zur Identifizierung des aktuellen Status des entsprechenden Ausführungsplans verwendet wird.

KonstantennameBedeutung
EXECUTION_STATUS.QUEUEINGIn Warteschlange
EXECUTION_STATUS.STARTEDGestartet
EXECUTION_STATUS.RESOLVEDErfolgreich abgeschlossen
EXECUTION_STATUS.FAILEDFehlgeschlagen
EXECUTION_STATUS.ERRORFehler
EXECUTION_STATUS.ABORTEDAbgebrochen
EXECUTION_STATUS.CANCELEDStorniert
EXECUTION_STATUS.REJECTEDAbgelehnt
EXECUTION_STATUS.RETRY_NEEDEDNicht erfolgreich ausgeführt, Wiederholung erforderlich

Außer den ersten drei repräsentieren alle anderen einen fehlgeschlagenen Status, können aber verwendet werden, um verschiedene Fehlerursachen zu beschreiben.

#JOB_STATUS

Eine Konstanten-Tabelle für die Status von Workflow-Knoten-Jobs, die zur Identifizierung des aktuellen Status des entsprechenden Knoten-Jobs verwendet wird. Der vom Knoten generierte Status beeinflusst auch den Status des gesamten Ausführungsplans.

KonstantennameBedeutung
JOB_STATUS.PENDINGWartend: Die Ausführung hat diesen Knoten erreicht, aber die Instruktion erfordert eine Unterbrechung und Wartezeit.
JOB_STATUS.RESOLVEDErfolgreich abgeschlossen
JOB_STATUS.FAILEDFehlgeschlagen: Die Ausführung dieses Knotens erfüllte die konfigurierten Bedingungen nicht.
JOB_STATUS.ERRORFehler: Während der Ausführung dieses Knotens ist ein unbehandelter Fehler aufgetreten.
JOB_STATUS.ABORTEDAbgebrochen: Die Ausführung dieses Knotens wurde nach dem Wartestatus durch eine andere Logik beendet.
JOB_STATUS.CANCELEDStorniert: Die Ausführung dieses Knotens wurde nach dem Wartestatus manuell storniert.
JOB_STATUS.REJECTEDAbgelehnt: Die Fortsetzung dieses Knotens wurde nach dem Wartestatus manuell abgelehnt.
JOB_STATUS.RETRY_NEEDEDNicht erfolgreich ausgeführt, Wiederholung erforderlich

#Clientseitig

Die in der clientseitigen Paketstruktur verfügbaren APIs sind im folgenden Code dargestellt:

import PluginWorkflowClient, {
  Trigger,
  Instruction,
} from '@nocobase/plugin-workflow/client';

#PluginWorkflowClient

#registerTrigger()

Registriert das Konfigurationspanel für den Trigger-Typ.

Signatur

registerTrigger(type: string, trigger: typeof Trigger | Trigger): void

Parameter

ParameterTypBeschreibung
typestringBezeichner des Trigger-Typs, konsistent mit dem für die Registrierung verwendeten Bezeichner
triggertypeof Trigger | TriggerTrigger-Typ oder -Instanz

#registerInstruction()

Registriert das Konfigurationspanel für den Knoten-Typ.

Signatur

registerInstruction(type: string, instruction: typeof Instruction | Instruction): void

Parameter

ParameterTypBeschreibung
typestringBezeichner des Knoten-Typs, konsistent mit dem für die Registrierung verwendeten Bezeichner
instructiontypeof Instruction | InstructionKnoten-Typ oder -Instanz

#registerInstructionGroup()

Registriert eine Knoten-Typ-Gruppe. NocoBase bietet standardmäßig 4 Knoten-Typ-Gruppen:

  • 'control': Steuerung
  • 'collection': Sammlungs-Operationen
  • 'manual': Manuelle Verarbeitung
  • 'extended': Weitere Erweiterungen

Wenn Sie weitere Gruppen erweitern möchten, können Sie diese Methode zur Registrierung verwenden.

Signatur

registerInstructionGroup(type: string, group: { label: string }): void

Parameter

ParameterTypBeschreibung
typestringBezeichner der Knoten-Gruppe, konsistent mit dem für die Registrierung verwendeten Bezeichner
group{ label: string }Gruppeninformationen, derzeit nur der Titel

Beispiel

export default class YourPluginClient extends Plugin {
  load() {
    const pluginWorkflow = this.app.pm.get(PluginWorkflowClient);

    pluginWorkflow.registerInstructionGroup('ai', { label: `{{t("AI", { ns: "${NAMESPACE}" })}}` });
  }
}

#Trigger

Die Basisklasse für Trigger, die zur Erweiterung benutzerdefinierter Trigger-Typen verwendet wird.

ParameterTypBeschreibung
titlestringName des Trigger-Typs
fieldset{ [key: string]: ISchema }Sammlung von Trigger-Konfigurationselementen
scope?{ [key: string]: any }Sammlung von Objekten, die im Konfigurationselement-Schema verwendet werden können
components?{ [key: string]: React.FC }Sammlung von Komponenten, die im Konfigurationselement-Schema verwendet werden können
useVariables?(config: any, options: UseVariableOptions ) => VariableOptionsWertzugriff für Trigger-Kontextdaten
  • Wenn useVariables nicht gesetzt ist, bedeutet dies, dass dieser Trigger-Typ keine Funktion zur Wertabfrage bereitstellt und die Kontextdaten des Triggers in den Workflow-Knoten nicht ausgewählt werden können.

#Instruction

Die Basisklasse für Instruktionen, die zur Erweiterung benutzerdefinierter Knoten-Typen verwendet wird.

ParameterTypBeschreibung