logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Fluxo de trabalho
Visão geral
Início rápido

Gatilhos

Visão geral
Eventos de coleção
Tarefas agendadas
Eventos pré-ação
Eventos pós-ação
Eventos de ação personalizada
Aprovação
Webhook

Nós

Visão geral

Inteligência Artificial

Grande Modelo de Linguagem

Controle de fluxo

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

Cálculo

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

Operações de dados

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

Processamento manual

Processamento manual
Aprovação
CC

Tipos de extensão

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

Desenvolvimento de extensões

Visão geral
Estender tipos de gatilho
Estender tipos de nó
Referência da API
Previous PageVisão geral
Next PageEstender tipos 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.