logologo
Start
Handleiding
Ontwikkeling
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
Handleiding
Ontwikkeling
Plugins
API
logologo
Workflow
Overzicht
Snelstart

Triggers

Overzicht
Tabel-events
Geplande taken
Pre-actie-event
Post-actie-event
Aangepast actie-event
Goedkeuring
Webhook

Node

Overzicht

Artificiële intelligentie

Groot taalmodel (LLM)

Procesbesturing

Voorwaarde
Meervoudige voorwaardelijke vertakking
Lus
Variabelen
Parallelle vertakking
Workflow aanroepen
Procesoutput
JSON-variabelemapping
Vertraging
Einde

Berekening

Berekening
Datumberekening
JSON-berekening

Gegevensoperaties

Gegevens toevoegen
Gegevens bijwerken
Gegevens opvragen
Gegevens verwijderen
SQL-operatie

Handmatige verwerking

Handmatige verwerking
Goedkeuring
CC

Types uitbreiden

HTTP-request
JavaScript-script
Notificatie
E-mail verzenden
Respons
Responsbericht
Variabelen
Uitvoeringslogboek
Versiebeheer
Geavanceerde opties

Extensie-ontwikkeling

Overzicht
Triggertypes uitbreiden
Nodetype uitbreiden
API-referentie
Previous PageNodetype uitbreiden
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#API Referentie

#Serverkant

De API's die u kunt gebruiken in de serverkant pakketstructuur, ziet u in de onderstaande code:

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

#PluginWorkflowServer

De klasse voor de workflow plugin.

Gewoonlijk, tijdens de runtime van de applicatie, kunt u overal waar u de applicatie-instantie app kunt verkrijgen, app.pm.get<PluginWorkflowServer>(PluginWorkflowServer) aanroepen om de workflow plugin-instantie te verkrijgen (hierna aangeduid als plugin).

#registerTrigger()

Hiermee breidt u de functionaliteit uit en registreert u een nieuw triggertype.

Handtekening

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

Parameters

ParameterTypeBeschrijving
typestringIdentificatie voor het triggertype
triggertypeof Trigger | TriggerTriggertype of -instantie

Voorbeeld

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

function handler(this: MyTrigger, workflow: WorkflowModel, message: string) {
  // activeer 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);
    // luister naar een gebeurtenis om de workflow te activeren
    process.on(
      'message',
      this.messageHandlers.set(workflow.id, messageHandler),
    );
  }

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

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

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

#registerInstruction()

Hiermee breidt u de functionaliteit uit en registreert u een nieuw knooppunttype.

Handtekening

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

Parameters

ParameterTypeBeschrijving
typestringIdentificatie voor het instructietype
instructiontypeof Instruction | InstructionInstructietype of -instantie

Voorbeeld

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() {
    // verkrijg de workflow plugin-instantie
    const workflowPlugin = this.app.pm.get<PluginWorkflowServer>(PluginWorkflowServer);

    // registreer de instructie
    workflowPlugin.registerInstruction('log', LogInstruction);
  }
}

#trigger()

Activeert een specifieke workflow. Dit wordt voornamelijk gebruikt in aangepaste triggers om de corresponderende workflow te activeren wanneer een specifieke aangepaste gebeurtenis wordt gedetecteerd.

Handtekening

trigger(workflow: Workflow, context: any)

Parameters

ParameterTypeBeschrijving
workflowWorkflowModelHet workflow-object dat moet worden geactiveerd
contextobjectContextdata die wordt meegegeven bij het activeren
Tip

context is momenteel een verplicht item. Als u dit niet opgeeft, wordt de workflow niet geactiveerd.

Voorbeeld

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

class MyTrigger extends Trigger {
  timer: NodeJS.Timeout;

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

#resume()

Hervat de uitvoering van een wachtende workflow met een specifieke knooppunt-taak.

  • Alleen workflows die zich in de wachtende status (EXECUTION_STATUS.STARTED) bevinden, kunnen worden hervat.
  • Alleen knooppunt-taken die zich in de JOB_STATUS.PENDING status bevinden, kunnen worden hervat.

Handtekening

resume(job: JobModel)

Parameters

ParameterTypeBeschrijving
jobJobModelHet bijgewerkte taakobject
Tip

Het meegegeven taakobject is over het algemeen een bijgewerkt object, en de status wordt meestal bijgewerkt naar een waarde anders dan JOB_STATUS.PENDING, anders blijft het wachten.

Voorbeeld

Zie de broncode voor details.

#Trigger

De basisklasse voor triggers, gebruikt om aangepaste triggertypen uit te breiden.

ParameterTypeUitleg
constructor(public readonly workflow: PluginWorkflowServer): TriggerConstructor
on?(workflow: WorkflowModel): voidGebeurtenishandler na het inschakelen van een workflow
off?(workflow: WorkflowModel): voidGebeurtenishandler na het uitschakelen van een workflow

on/off worden gebruikt om gebeurtenislisteners te registreren/deregistreren wanneer een workflow wordt ingeschakeld/uitgeschakeld. De meegegeven parameter is de workflow-instantie die overeenkomt met de trigger, die u kunt verwerken volgens de bijbehorende configuratie. Sommige triggertypen die al globaal naar gebeurtenissen luisteren, hoeven deze twee methoden mogelijk niet te implementeren. In een geplande trigger kunt u bijvoorbeeld een timer registreren in on en deze deregistreren in off.

#Instruction

De basisklasse voor instructietypen, gebruikt om aangepaste instructietypen uit te breiden.

ParameterTypeUitleg
constructor(public readonly workflow: PluginWorkflowServer): InstructionConstructor
runRunnerUitvoeringslogica voor de eerste keer dat het knooppunt wordt betreden
resume?RunnerUitvoeringslogica voor het betreden van het knooppunt na het hervatten vanuit een onderbreking
getScope?(node: FlowNodeModel, data: any, processor: Processor): anyBiedt de lokale variabele-inhoud voor de tak die door het corresponderende knooppunt wordt gegenereerd

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

Voor getScope kunt u verwijzen naar de implementatie van het lus-knooppunt, dat wordt gebruikt om lokale variabele-inhoud voor takken te bieden.

#EXECUTION_STATUS

Een constantentabel voor de statussen van workflow-uitvoeringsplannen, gebruikt om de huidige status van het corresponderende uitvoeringsplan te identificeren.

Constante naamBetekenis
EXECUTION_STATUS.QUEUEINGIn de wachtrij
EXECUTION_STATUS.STARTEDGestart
EXECUTION_STATUS.RESOLVEDSuccesvol voltooid
EXECUTION_STATUS.FAILEDMislukt
EXECUTION_STATUS.ERRORFout
EXECUTION_STATUS.ABORTEDAfgebroken
EXECUTION_STATUS.CANCELEDGeannuleerd
EXECUTION_STATUS.REJECTEDGeweigerd
EXECUTION_STATUS.RETRY_NEEDEDNiet succesvol uitgevoerd, opnieuw proberen nodig

Behalve de eerste drie, vertegenwoordigen alle andere een mislukte status, maar kunnen ze worden gebruikt om verschillende redenen voor mislukking te beschrijven.

#JOB_STATUS

Een constantentabel voor de statussen van workflow-knooppunt-taken, gebruikt om de huidige status van de corresponderende knooppunt-taak te identificeren. De status die door het knooppunt wordt gegenereerd, beïnvloedt ook de status van het gehele uitvoeringsplan.

Constante naamBetekenis
JOB_STATUS.PENDINGWachtend: Uitvoering heeft dit knooppunt bereikt, maar de instructie vereist dat het wordt opgeschort en wacht.
JOB_STATUS.RESOLVEDSuccesvol voltooid
JOB_STATUS.FAILEDMislukt: De uitvoering van dit knooppunt voldeed niet aan de geconfigureerde voorwaarden.
JOB_STATUS.ERRORFout: Er is een onverwerkte fout opgetreden tijdens de uitvoering van dit knooppunt.
JOB_STATUS.ABORTEDAfgebroken: De uitvoering van dit knooppunt is beëindigd door andere logica nadat het in een wachtende status verkeerde.
JOB_STATUS.CANCELEDGeannuleerd: De uitvoering van dit knooppunt is handmatig geannuleerd nadat het in een wachtende status verkeerde.
JOB_STATUS.REJECTEDGeweigerd: De voortzetting van dit knooppunt is handmatig geweigerd nadat het in een wachtende status verkeerde.
JOB_STATUS.RETRY_NEEDEDNiet succesvol uitgevoerd, opnieuw proberen nodig

#Clientkant

De API's die u kunt gebruiken in de clientkant pakketstructuur, ziet u in de onderstaande code:

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

#PluginWorkflowClient

#registerTrigger()

Registreert het configuratiepaneel voor het triggertype.

Handtekening

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

Parameters

ParameterTypeUitleg
typestringIdentificatie voor het triggertype, consistent met de identificatie die voor registratie wordt gebruikt.
triggertypeof Trigger | TriggerTriggertype of -instantie

#registerInstruction()

Registreert het configuratiepaneel voor het knooppunttype.

Handtekening

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

Parameters

ParameterTypeUitleg
typestringIdentificatie voor het knooppunttype, consistent met de identificatie die voor registratie wordt gebruikt.
instructiontypeof Instruction | InstructionKnooppunttype of -instantie

#registerInstructionGroup()

Registreert een knooppunttypegroep. NocoBase biedt standaard 4 knooppunttypegroepen:

  • 'control' (besturing)
  • 'collection' (collectie-bewerkingen)
  • 'manual' (handmatige verwerking)
  • 'extended' (overige uitbreidingen)

Als u andere groepen wilt uitbreiden, kunt u deze methode gebruiken om ze te registreren.

Handtekening

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

Parameters

ParameterTypeUitleg
typestringIdentificatie voor de knooppuntgroep, consistent met de identificatie die voor registratie wordt gebruikt.
group{ label: string }Groepsinformatie, bevat momenteel alleen de titel.

Voorbeeld

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

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

#Trigger

De basisklasse voor triggers, gebruikt om aangepaste triggertypen uit te breiden.

ParameterTypeUitleg
titlestringNaam van het triggertype
fieldset{ [key: string]: ISchema }Collectie van triggerconfiguratie-items
scope?{ [key: string]: any }Collectie van objecten die mogelijk worden gebruikt in het configuratie-item Schema
components?{ [key: string]: React.FC }Collectie van componenten die mogelijk worden gebruikt in het configuratie-item Schema
useVariables?(config: any, options: UseVariableOptions ) => VariableOptionsWaardetoegang voor triggercontextdata
  • Als useVariables niet is ingesteld, betekent dit dat dit type trigger geen functie voor waarde-opvraging biedt, en dat de contextdata van de trigger niet kan worden geselecteerd in de workflow-knooppunten.

#Instruction

De basisklasse voor instructies, gebruikt om aangepaste knooppunttypen uit te breiden.

ParameterTypeUitleg
groupstringIdentificatie voor de knooppunttypegroep, momenteel beschikbare opties: 'control'/'collection'/'manual'/'extended'
fieldsetRecord<string, ISchema>Collectie van knooppuntconfiguratie-items
scope?Record<string, Function>Collectie van objecten die mogelijk worden gebruikt in het configuratie-item Schema
components?Record<string, React.FC>Collectie van componenten die mogelijk worden gebruikt in het configuratie-item Schema
Component?React.FCAangepaste rendercomponent voor het knooppunt
useVariables?(node, options: UseVariableOptions) => VariableOptionMethode voor het knooppunt om variabele-opties voor knooppunten te bieden
useScopeVariables?(node, options?) => VariableOptionsMethode voor het knooppunt om lokale variabele-opties voor takken te bieden
useInitializers?(node) => SchemaInitializerItemTypeMethode voor het knooppunt om initializer-opties te bieden
isAvailable?(ctx: NodeAvailableContext) => booleanMethode om te bepalen of het knooppunt beschikbaar is

Gerelateerde typen

export type NodeAvailableContext = {
  workflow: object;
  upstream: object;
  branchIndex: number;
};
  • Als useVariables niet is ingesteld, betekent dit dat dit knooppunttype geen functie voor waarde-opvraging biedt, en dat de resultaatdata van dit type knooppunt niet kan worden geselecteerd in de workflow-knooppunten. Als de resultaatwaarde enkelvoudig is (niet selecteerbaar), kunt u statische inhoud retourneren die de corresponderende informatie uitdrukt (zie: broncode van het rekenknooppunt). Als het selecteerbaar moet zijn (bijvoorbeeld een eigenschap van een Object), kunt u de corresponderende selectiecomponent-uitvoer aanpassen (zie: broncode van het knooppunt voor het aanmaken van data).
  • Component is een aangepaste rendercomponent voor het knooppunt. Wanneer de standaard weergave van het knooppunt niet volstaat, kunt u deze volledig overschrijven en gebruiken voor aangepaste knooppuntweergave. Als u bijvoorbeeld meer actieknoppen of andere interacties wilt bieden voor het startknooppunt van een taktype, dan moet u deze methode gebruiken (zie: broncode van de parallelle tak).
  • useInitializers wordt gebruikt om een methode te bieden voor het initialiseren van blokken. In een handmatig knooppunt kunt u bijvoorbeeld gerelateerde gebruikersblokken initialiseren op basis van upstream-knooppunten. Als deze methode wordt geboden, is deze beschikbaar bij het initialiseren van blokken in de interfaceconfiguratie van het handmatige knooppunt (zie: broncode van het knooppunt voor het aanmaken van data).
  • isAvailable wordt voornamelijk gebruikt om te bepalen of een knooppunt in de huidige omgeving kan worden gebruikt (toegevoegd). De huidige omgeving omvat de huidige workflow, upstream-knooppunten en de huidige takindex, enz.