Como Projetar um Fluxo que Evite Loops Infinitos: Checklist Prático para Proprietários do SharePoint
🔍 WiseChecker

Como Projetar um Fluxo que Evite Loops Infinitos: Checklist Prático para Proprietários do SharePoint

Um loop infinito em um fluxo do Power Automate vinculado a uma lista ou biblioteca do SharePoint pode gerar milhares de execuções indesejadas, lotar o log de auditoria e prejudicar o desempenho do site. O loop ocorre quando um fluxo é disparado por uma alteração, faz outra alteração, e essa segunda alteração dispara o mesmo fluxo novamente, criando um ciclo vicioso. Este artigo explica os três padrões de gatilho mais comuns que causam loops e fornece um checklist prático que você pode aplicar a qualquer fluxo que possua ou mantenha.

Principais Conclusões: Três Itens do Checklist para Prevenir Loops Infinitos

  • Condição de gatilho no gatilho do SharePoint: Adicione uma condição que verifique uma coluna de status para que o fluxo seja executado apenas quando o item estiver em um estado específico, não em toda atualização.
  • Atualize apenas a coluna necessária, não o item inteiro: Use a ação “Atualizar item” com um único valor de coluna em vez da ação “Atualizar propriedades do arquivo” que modifica o item inteiro.
  • Configure controle de simultaneidade e limite de histórico de execução: Defina o grau de simultaneidade como 1 e habilite um mecanismo de bloqueio em nível de linha para evitar execuções sobrepostas que podem escalar para um loop.

ADVERTISEMENT

Por que os Fluxos do Power Automate Ficam Presos em Loops Infinitos

Todo fluxo disparado pelo SharePoint no Power Automate é iniciado quando um item é criado ou modificado. O gatilho é acionado, o fluxo executa uma ou mais ações, e uma dessas ações atualiza o mesmo item que iniciou o fluxo. Essa atualização parece uma nova alteração para o SharePoint, então o gatilho é acionado novamente. O ciclo se repete até que o fluxo atinja seu limite de execução ou você o pare manualmente.

A causa raiz é quase sempre uma ação que grava de volta no item que disparou o fluxo. Exemplos comuns incluem atualizar uma coluna de status após aprovação, definir um carimbo de data/hora ou copiar um valor de outra coluna. Se o fluxo não distinguir entre a alteração original do usuário e sua própria alteração, o loop continua.

O Power Automate não possui um quebrador de loop embutido. Você precisa projetar o fluxo para detectar e parar suas próprias atualizações. O checklist abaixo fornece três mecanismos concretos para conseguir isso.

Checklist Prático para Projetar um Fluxo Sem Loop

Aplique cada um dos três itens a seguir a todo fluxo novo ou existente que seja disparado por uma lista ou biblioteca do SharePoint. Teste cada item em um ambiente de desenvolvimento antes de mover o fluxo para produção.

1. Adicione uma Condição de Gatilho que Verifique uma Coluna de Status

Uma condição de gatilho é um filtro executado antes do fluxo iniciar. Se a condição for avaliada como falsa, o fluxo não é executado. Esta é a maneira mais eficaz de parar um loop porque o gatilho nunca é acionado para alterações feitas pelo próprio fluxo.

  1. Adicione uma coluna de status à sua lista do SharePoint
    Crie uma coluna de escolha chamada “StatusDoFluxo” com valores como “Pendente”, “Processando” e “Concluído”. Defina o valor padrão como “Pendente”.
  2. Abra as configurações do gatilho no Power Automate
    No designer de fluxo, selecione o gatilho “Quando um item é criado ou modificado”. Clique nas reticências (…) e escolha “Configurações”.
  3. Escreva a expressão da condição de gatilho
    No campo “Condições de Gatilho”, insira: @equals(triggerOutputs()?['body/StatusDoFluxo'], 'Pendente'). Isso garante que o fluxo seja executado apenas quando o item estiver no estado “Pendente”.
  4. Defina a coluna de status na ação do fluxo
    Na primeira ação após o gatilho, use a ação “Atualizar item” para alterar “StatusDoFluxo” de “Pendente” para “Processando”. Quando o fluxo terminar, atualize para “Concluído”. Como a condição de gatilho agora filtra por “Pendente”, o fluxo não será executado novamente quando o status mudar para “Processando” ou “Concluído”.

2. Atualize Apenas as Colunas que Precisam Ser Alteradas

Muitos loops infinitos começam porque o fluxo usa a ação “Atualizar propriedades do arquivo”, que envia todos os valores de coluna de volta para o SharePoint. Mesmo colunas que não foram alteradas são enviadas, e o SharePoint trata isso como uma modificação. O gatilho é acionado novamente mesmo que nenhum dado real tenha mudado.

  1. Use “Atualizar item” em vez de “Atualizar propriedades do arquivo”
    No Power Automate, a ação “Atualizar item” permite especificar apenas as colunas que você deseja alterar. Deixe todas as outras colunas em branco. O SharePoint não registrará uma alteração nessas colunas.
  2. Remova conteúdo dinâmico para colunas não alteradas
    Se você usou a ação “Obter item” anteriormente no fluxo para recuperar todos os campos, não passe esses valores para a ação de atualização. Passe apenas o valor da coluna única que você pretende alterar.
  3. Teste com uma atualização de coluna única
    Execute o fluxo manualmente em um item. Verifique o histórico de itens do SharePoint. Você deve ver apenas uma entrada de atualização, não uma série de atualizações causadas pelo loop.

3. Habilite Controle de Simultaneidade e Bloqueio em Nível de Linha

O controle de simultaneidade limita quantas instâncias do mesmo fluxo podem ser executadas ao mesmo tempo. Quando combinado com uma coluna de status, impede que duas execuções sobrepostas tentem atualizar o mesmo item.

  1. Defina o grau de simultaneidade como 1
    Nas configurações do gatilho, expanda “Controle de Simultaneidade”. Ative a alternância. Defina o “Grau de Paralelismo” como 1. Isso força o Power Automate a processar um evento de gatilho por vez para este fluxo.
  2. Habilite o bloqueio em nível de linha no SharePoint
    O bloqueio em nível de linha é uma configuração de lista do SharePoint que impede que duas solicitações modifiquem o mesmo item simultaneamente. Vá em Configurações da Lista > Configurações Avançadas e defina “Permitir que itens desta lista sejam baixados para clientes offline?” como “Não”. Isso força todas as atualizações a passarem pelo servidor, que aplica bloqueios de gravação.
  3. Combine com a coluna de status
    Quando a simultaneidade é 1 e a coluna de status é definida como “Processando” no início do fluxo, qualquer gatilho subsequente que for acionado durante a execução verá o status como “Processando” e será bloqueado pela condição de gatilho.

ADVERTISEMENT

O Que Fazer se um Fluxo Já Estiver em Loop

Se um fluxo estiver executando centenas ou milhares de vezes e você não conseguir pará-lo pelo portal do Power Automate, use as seguintes etapas de emergência.

Pare o fluxo imediatamente

Abra o fluxo no Power Automate e desative a alternância. Isso interrompe todas as novas execuções. As execuções existentes na fila ainda serão concluídas, mas nenhuma nova será iniciada.

Exclua execuções na fila

Vá para o histórico de execuções do fluxo. Selecione todas as execuções na fila que ainda não foram iniciadas e clique em “Cancelar”. Isso limpa o backlog.

Restaure a lista do SharePoint para um estado limpo

Se o loop alterou muitos itens, use o recurso “Histórico de Versões” do SharePoint para restaurar os itens ao estado anterior ao início do loop. Selecione o item, clique em “Histórico de Versões” e restaure a versão anterior à primeira execução do loop.

Aplique o checklist antes de reativar o fluxo

Não reative o fluxo até que você tenha adicionado uma condição de gatilho, alterado para atualizações de coluna única e habilitado o controle de simultaneidade. Teste com um item primeiro.

Padrão de Gatilho que Causa Loops vs Padrão Seguro

Item Padrão que Causa Loop Padrão Seguro
Condição de gatilho Nenhuma condição de gatilho; fluxo executa em qualquer alteração Condição de gatilho verifica o valor de uma coluna de status
Ação de atualização “Atualizar propriedades do arquivo” com todas as colunas “Atualizar item” com apenas a coluna alterada
Simultaneidade Padrão (execuções paralelas ilimitadas) Grau de simultaneidade definido como 1
Manipulação da coluna de status Nenhuma coluna de status; fluxo atualiza o item diretamente Coluna de status definida antes e depois da ação principal

Ao aplicar os três itens do checklist e entender a diferença entre o padrão que causa loop e o padrão seguro, você pode projetar fluxos que sejam executados de forma confiável sem criar ciclos indesejados. Comece adicionando uma coluna de status com uma condição de gatilho em todo novo fluxo que criar. Para fluxos existentes, audite as ações de atualização e substitua qualquer ação “Atualizar propriedades do arquivo” por uma ação “Atualizar item” direcionada. Teste cada alteração em um ambiente de sandbox antes de promover o fluxo para produção.

ADVERTISEMENT