Esta documentação foi traduzida automaticamente por IA.
Os gatilhos do tipo evento de coleção monitoram os eventos de criação, atualização e exclusão em uma coleção. Quando uma operação de dados ocorre nessa coleção e atende às condições configuradas, ela aciona o fluxo de trabalho correspondente. Por exemplo, cenários como deduzir o estoque de um produto após a criação de um novo pedido, ou aguardar a revisão manual após a adição de um novo comentário.
Existem algumas situações de alteração em uma coleção:

Você pode escolher o momento do gatilho de acordo com as diferentes necessidades do seu negócio. Quando a situação de alteração selecionada inclui a atualização da coleção, você também pode especificar os campos que foram alterados. A condição de gatilho é atendida somente quando os campos selecionados mudam. Se nenhum campo for selecionado, significa que uma alteração em qualquer campo pode acionar o fluxo de trabalho.

De forma mais detalhada, você pode configurar regras de condição para cada campo da linha de dados que aciona o gatilho. O gatilho só será disparado quando os campos atenderem às condições correspondentes.

Após um evento de coleção ser acionado, a linha de dados que gerou o evento será injetada no plano de execução como dados de contexto do gatilho, para ser usada como variáveis pelos nós subsequentes no fluxo de trabalho. No entanto, quando os nós subsequentes precisarem usar os campos de relacionamento desses dados, você precisará configurar primeiro o pré-carregamento dos dados de relacionamento. Os dados de relacionamento selecionados serão injetados no contexto junto com o gatilho e poderão ser selecionados e usados hierarquicamente.
Os eventos de coleção atualmente não suportam gatilhos por operações de dados em massa. Por exemplo, ao criar um artigo e adicionar simultaneamente várias tags para esse artigo (dados de relacionamento um-para-muitos), apenas o fluxo de trabalho para a criação do artigo será acionado. As várias tags criadas simultaneamente não acionarão o fluxo de trabalho para a criação de tags. Ao associar ou adicionar dados de relacionamento muitos-para-muitos, o fluxo de trabalho para a coleção intermediária também não será acionado.
Operações em coleções via chamadas de API HTTP para a interface do aplicativo também podem acionar eventos correspondentes. No entanto, se as alterações de dados forem feitas diretamente por meio de operações de banco de dados, em vez de pelo aplicativo NocoBase, os eventos correspondentes não poderão ser acionados. Por exemplo, gatilhos nativos do banco de dados não serão associados a fluxos de trabalho no aplicativo.
Além disso, usar o nó de ação SQL para operar no banco de dados é equivalente a operações diretas no banco de dados e não acionará eventos de coleção.
Os fluxos de trabalho suportam fontes de dados externas desde a versão 0.20. Se você estiver usando um plugin de fonte de dados externa e o evento de coleção estiver configurado para uma fonte de dados externa, desde que as operações de dados nessa fonte de dados sejam realizadas dentro do aplicativo (como criação de usuário, atualizações e operações de dados de fluxo de trabalho), os eventos de coleção correspondentes podem ser acionados. No entanto, se as alterações de dados forem feitas por meio de outros sistemas ou diretamente no banco de dados externo, os eventos de coleção não poderão ser acionados.
Vamos usar como exemplo o cenário de calcular o preço total e deduzir o estoque após a criação de um novo pedido.
Primeiro, criamos uma coleção de Produtos e uma coleção de Pedidos, com os seguintes modelos de dados:
| Nome do Campo | Tipo de Campo |
|---|---|
| Nome do Produto | Texto de Linha Única |
| Preço | Número |
| Estoque | Inteiro |
| Nome do Campo | Tipo de Campo |
|---|---|
| ID do Pedido | Sequencial |
| Produto do Pedido | Muitos-para-Um (Produtos) |
| Total do Pedido | Número |
E adicionamos alguns dados básicos de produtos:
| Nome do Produto | Preço | Estoque |
|---|---|---|
| iPhone 14 Pro | 7999 | 10 |
| iPhone 13 Pro | 5999 | 0 |
Em seguida, criamos um fluxo de trabalho baseado no evento da coleção de Pedidos:

Aqui estão algumas das opções de configuração:
Depois, configuramos outros nós de acordo com a lógica do fluxo de trabalho: verificar se o estoque do produto é maior que 0. Se for, deduzir o estoque; caso contrário, o pedido é inválido e deve ser excluído:

A configuração dos nós será explicada em detalhes na documentação para tipos de nós específicos.
Ative este fluxo de trabalho e teste-o criando um novo pedido pela interface. Após fazer um pedido para "iPhone 14 Pro", o estoque do produto correspondente será reduzido para 9. Se um pedido for feito para "iPhone 13 Pro", o pedido será excluído devido a estoque insuficiente.
