SharePoint Quando um Item é Modificado Dispara Loop Infinito: O que os Proprietários do Site Devem Verificar
🔍 WiseChecker

SharePoint Quando um Item é Modificado Dispara Loop Infinito: O que os Proprietários do Site Devem Verificar

Você criou um fluxo do Power Automate no SharePoint que é executado quando um item é modificado. O fluxo atualiza uma coluna no mesmo item da lista. Em vez de parar, o fluxo reinicia repetidamente em um loop infinito. Isso acontece porque a ação de atualização no fluxo conta como outra modificação, que aciona o fluxo novamente. Este artigo explica por que o loop ocorre e mostra as configurações que os proprietários do site devem verificar e alterar para interromper o ciclo.

Principais Conclusões: Como Quebrar o Loop Infinito de Gatilho no SharePoint

  • Condição de gatilho do Power Automate “Quando um item é modificado”: Adicione uma condição para ignorar o gatilho se a atualização veio do próprio fluxo.
  • Configurações de coluna no SharePoint: Desabilite o versionamento ou use uma coluna de status dedicada para evitar reativação.
  • Ação do fluxo “Atualizar item”: Sempre inclua uma verificação para impedir que o fluxo seja executado em suas próprias alterações.

ADVERTISEMENT

Por que o Gatilho de Item Modificado no SharePoint Cria um Loop Infinito

O gatilho do Power Automate “Quando um item é modificado” é disparado toda vez que o valor de uma coluna é alterado em um item da lista do SharePoint. Quando seu fluxo usa uma ação como “Atualizar item” para modificar o mesmo item, essa atualização conta como uma nova modificação. O gatilho é disparado novamente, o fluxo é executado de novo e a ação de atualização roda outra vez. Esse ciclo se repete indefinidamente até que o fluxo atinja o limite de execuções ou você o pare manualmente.

A causa raiz é que o fluxo não diferencia entre uma modificação feita por uma pessoa e uma modificação feita por ele mesmo. Por padrão, o Power Automate trata todas as alterações igualmente. O gatilho não possui um filtro interno para excluir alterações feitas pelo fluxo. Você precisa adicionar uma condição para quebrar o loop.

Como o Loop Começa

Uma sequência típica de loop é assim:

  1. Um usuário edita um item da lista. O gatilho é disparado.
  2. O fluxo é executado e atualiza uma coluna no mesmo item.
  3. A atualização aciona o gatilho novamente porque o item foi modificado.
  4. As etapas 2 e 3 se repetem até você parar o fluxo.

Cenários Comuns que Causam Loops

Qualquer fluxo que atualize o item que o acionou pode entrar em loop. Exemplos comuns incluem:

  • Alterar uma coluna de status após aprovação.
  • Atualizar um campo calculado com um carimbo de data/hora.
  • Definir um sinalizador para indicar que o processamento foi concluído.

Etapas para Parar o Loop Infinito de Gatilho

Você tem vários métodos para quebrar o loop. A melhor abordagem depende do design do seu fluxo. Siga as etapas abaixo para cada método.

Método 1: Adicionar uma Condição para Verificar o Campo Modificado Por

  1. Abra seu fluxo no Power Automate
    Vá para make.powerautomate.com. Selecione Meus fluxos e clique no fluxo que está em loop. Clique em Editar.
  2. Adicione uma condição de gatilho
    Clique no cartão do gatilho Quando um item é modificado. No painel direito, expanda Opções avançadas. Role até Condições de gatilho. Clique em Adicionar.
  3. Insira a expressão da condição
    Cole esta expressão na caixa de condição:
    @not(equals(triggerOutputs()?['body/Editor'], 'id-da-sua-conta-de-servico'))
    Substitua id-da-sua-conta-de-servico pelo ID do objeto da conta de serviço ou usuário que executa o fluxo. Para encontrar o ID, execute um teste e inspecione a saída do campo Editor. Essa condição impede que o gatilho seja disparado quando a alteração foi feita pelo próprio fluxo.
  4. Salve e teste
    Clique em Salvar. Ative o fluxo. Faça uma alteração manual em um item da lista. Verifique se o fluxo é executado uma vez e não entra em loop.

Método 2: Usar uma Coluna de Status Dedicada

  1. Adicione uma coluna Sim/Não à lista
    No SharePoint, abra a lista. Clique em Adicionar coluna e escolha Sim/Não. Nomeie como Processado. Defina o valor padrão como Não.
  2. Modifique a condição de gatilho
    No Power Automate, abra o cartão do gatilho. Adicione uma condição de gatilho que verifica se a coluna Processado é igual a Não. Use esta expressão:
    @equals(triggerOutputs()?['body/Processado'], false)
  3. Atualize a ação do fluxo
    No fluxo, após a lógica principal, adicione uma ação Atualizar item. Defina Processado como Sim. Como a condição de gatilho agora exige que Processado seja Não, a atualização para Sim não reativa o fluxo.
  4. Salve e teste
    Clique em Salvar. Ative o fluxo. Edite um item. Confirme que o fluxo é executado uma vez e para.

Método 3: Desligar o Versionamento para a Coluna Atualizada

  1. Vá para as configurações da lista
    No SharePoint, abra a lista. Clique no ícone de engrenagem e escolha Configurações da lista.
  2. Abra as configurações de versionamento
    Clique em Configurações de versionamento.
  3. Desabilite o versionamento
    Em Aprovação de conteúdo, selecione Não. Em Criar uma versão cada vez que você editar um item, selecione Não. Clique em OK. Nota: Isso impede que o gatilho seja disparado em alterações de versão, mas não evita todos os loops. Use este método apenas quando o fluxo atualizar uma coluna que não requer histórico de versões.

ADVERTISEMENT

Se o Loop Ainda Ocorrer Após a Correção Principal

O fluxo ainda entra em loop após adicionar uma condição de gatilho

A condição de gatilho pode não corresponder ao nome real do campo. Verifique o ID do campo Editor nas saídas do gatilho. No SharePoint, o ID do campo para o campo “Modificado por” nem sempre é Editor. Pode ser Author ou um nome interno personalizado. Use uma ação Compor para exibir o corpo completo do gatilho e inspecionar os nomes dos campos.

Múltiplos fluxos na mesma lista

Se você tiver mais de um fluxo acionado por modificações de item na mesma lista, um fluxo pode atualizar o item e acionar outro fluxo. Esse segundo fluxo pode atualizar o item novamente e acionar o primeiro fluxo. Revise todos os fluxos na lista. Adicione a mesma condição de gatilho a todos os fluxos que atualizam o item da lista.

Configurações de simultaneidade causam execuções sobrepostas

Se o seu fluxo tiver simultaneidade habilitada, várias instâncias podem ser executadas ao mesmo tempo. Uma atualização de uma instância pode acionar outra instância. Vá para as configurações do fluxo. Em Controle de simultaneidade, defina o grau de paralelismo como 1. Isso força o fluxo a processar um gatilho por vez.

Comportamento do Gatilho: Fluxo Padrão vs Fluxo Automatizado

Item Gatilho Padrão (Quando um item é modificado) Fluxo Automatizado com Condição de Gatilho
Dispara em qualquer alteração de coluna Sim Sim, mas filtrado pela condição
Dispara em alterações feitas pelo fluxo Sim Não se a condição excluir a conta do fluxo
Requer parada manual em loop Sim Não
Melhor para atualizações de um único usuário Não Sim

A principal diferença é a capacidade de filtrar alterações feitas pelo próprio fluxo. Sem uma condição de gatilho, qualquer modificação, incluindo as do fluxo, reinicia o gatilho. Com uma condição que verifica o campo Editor ou uma coluna de status dedicada, o fluxo ignora suas próprias alterações e é executado apenas uma vez por edição do usuário.

Para implementar a solução mais confiável, use uma coluna de status Sim/Não dedicada combinada com uma condição de gatilho. Esse método funciona independentemente de qual conta de usuário executa o fluxo. Teste o fluxo com um único item antes de ativá-lo em toda a lista. Monitore o histórico de execuções do fluxo nos primeiros minutos para confirmar que o loop parou.

ADVERTISEMENT