logologo
Começar
Manual
Desenvolvimento
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
Começar
Manual
Desenvolvimento
Plugins
API
logologo
Fluxo de Trabalho
Visão Geral
Início Rápido

Gatilho

Visão Geral
Evento de tabela de dados
Tarefa agendada
Evento antes da ação
Evento após a ação
Evento de ação personalizada
Aprovação
Webhook

Nó

Visão Geral

AI

LLM

Controle de fluxo

Condição
Ramificação multicondicional
Loop
Variáveis
Ramificação paralela
Chamar workflow
Saída do fluxo
Mapeamento de variáveis JSON
Atraso
Fim

Cálculo

Cálculo
Cálculo de data
Cálculo JSON

Operação de dados

Adicionar dados
Atualizar dados
Consultar dados
Excluir dados
Operação SQL

Processamento manual

Processamento manual
Aprovação
CC (Enviar cópia)

Estender tipo

Requisição HTTP
Script JavaScript
Notificação
Enviar e-mail
Resposta
Mensagem de resposta
Variáveis
Log de execução
Gerenciamento de versões
Opções avançadas

Desenvolvimento de Extensões

Visão Geral
Estender tipo de gatilho
Estender tipo de nó
Referência da API
Previous PageVisão Geral
Next PageEstender tipo de nó
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Estender Tipos de Gatilho

Todo fluxo de trabalho precisa ser configurado com um gatilho específico, que serve como ponto de entrada para iniciar a execução do processo.

Um tipo de gatilho geralmente representa um evento específico do ambiente do sistema. Durante o ciclo de vida de execução do aplicativo, qualquer parte que forneça eventos que possam ser inscritos pode ser usada para definir um tipo de gatilho. Por exemplo, receber requisições, operações de coleção, tarefas agendadas, etc.

Os tipos de gatilho são registrados na tabela de gatilhos do plugin com base em um identificador de string. O plugin de fluxo de trabalho já vem com alguns gatilhos embutidos:

  • 'collection': Acionado por operações de coleção;
  • 'schedule': Acionado por tarefas agendadas;
  • 'action': Acionado por eventos pós-ação;

Tipos de gatilho estendidos precisam garantir que seus identificadores sejam únicos. A implementação para assinar/cancelar a assinatura do gatilho é registrada no lado do servidor, e a implementação para a interface de configuração é registrada no lado do cliente.

#Lado do Servidor

Qualquer gatilho precisa herdar da classe base Trigger e implementar os métodos on/off, que são usados para assinar e cancelar a assinatura de eventos específicos do ambiente, respectivamente. No método on, você precisa chamar this.workflow.trigger() dentro da função de callback do evento específico para, finalmente, acionar o evento. Já no método off, você precisa realizar o trabalho de limpeza relacionado ao cancelamento da assinatura.

O this.workflow é a instância do plugin de fluxo de trabalho passada para o construtor da classe base 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);
  }
}

Depois, no plugin que estende o fluxo de trabalho, registre a instância do gatilho no motor do fluxo de trabalho:

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

Após o servidor iniciar e carregar, o gatilho do tipo 'interval' poderá ser adicionado e executado.

#Lado do Cliente

A parte do lado do cliente principalmente fornece uma interface de configuração baseada nos itens de configuração exigidos pelo tipo de gatilho. Cada tipo de gatilho também precisa registrar sua configuração de tipo correspondente com o plugin de fluxo de trabalho.

Por exemplo, para o gatilho de execução agendada mencionado acima, defina o item de configuração de tempo de intervalo (interval) necessário no formulário da interface de configuração:

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

Em seguida, registre este tipo de gatilho com a instância do plugin de fluxo de trabalho dentro do plugin estendido:

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

Depois disso, o novo tipo de gatilho ficará visível na interface de configuração do fluxo de trabalho.

Dica

O identificador do tipo de gatilho registrado no lado do cliente deve ser consistente com o do lado do servidor, caso contrário, causará erros.

Para outros detalhes sobre a definição de tipos de gatilho, consulte a seção Referência da API de Fluxo de Trabalho.