Przejdź do treści

Ochrona przed pętlą

Reguła może wywołać zdarzenie, które uruchomi kolejną regułę. To bywa użyteczne — i bywa katastrofą: „zmiana statusu → wyślij e-mail → zmiana statusu” potrafi kręcić się bez końca, zalewając klienta wiadomościami.

Jak to działa

Każde wykonanie ma głębokość w łańcuchu. Reguła uruchomiona przez zdarzenie systemowe ma głębokość 1; reguła uruchomiona przez akcję tamtej — 2; i tak dalej.

Po przekroczeniu 10 poziomów łańcuch jest przerywany. Wykonanie dostaje status „wykryto pętlę” i widoczny komunikat z osiągniętą głębokością. Nic więcej się nie wykonuje.

Czego ta ochrona nie robi

Nie wykrywa pętli przed uruchomieniem — jest bezpiecznikiem, nie analizą. Dziesięć poziomów zdąży się wykonać, zanim licznik zadziała. Jeśli w tym łańcuchu jest wysyłka e-maila, klient dostanie do dziesięciu wiadomości.

Zanim włączysz regułę, która zmienia to, co ją wyzwala

Regułę wyzwalaną zmianą statusu, która sama zmienia status, zawęź warunkiem na status docelowy — wtedy drugi obieg nie spełni warunku i zatrzyma się sam, bez czekania na bezpiecznik.

Przerwa nie zeruje licznika

Akcja „Czekaj” wstrzymuje regułę, ale wznowienie odtwarza głębokość łańcucha zamiast liczyć ją od nowa. Bez tego para reguł wołających się nawzajem przez przerwę omijałaby bezpiecznik w nieskończoność.

Sprawdzanie reguły

POST /api/automations/loop-check analizuje zestaw reguł i wskazuje te, które mogą się wywoływać wzajemnie — zanim je włączysz.