Microsoft Power Automate is zeer krachtig in het creëren van automatiseringsstromen. Er zijn veel manieren om stromen te activeren, maar heb je ooit Power Automate-stromen gecreëerd die zo vaak werden geactiveerd dat het systeem begon te kraken? Hoe beëindig je zulke vervelende stromen? Power Automate biedt geen gemakkelijke manier om al je stromen op te heffen. Omdat ik ook tegen dit probleem aanliep, heb ik een gebruikersscript gemaakt dat een knop ‘Cancel all Flows’ toevoegt aan Power Apps. In dit artikel wordt uitgelegd hoe jij dat ook kunt doen.
Het Power Automate-probleem
Zoals ik al zei, zijn er veel manieren om een Power Automate Cloud-stroom te activeren. Ik heb meerdere scenario’s ervaren die ervoor zorgden dat de stroom te actief werd uitgevoerd. Hieronder enkele van deze scenario’s:
- De stroom wordt geactiveerd door een wijziging van een Dataverse-record. Er is een bulkupdate toegepast op alle records in een tabel. Dit zorgde ervoor dat de stroom duizenden keren werd uitgevoerd, één keer voor elk record
- Recursieve stroomaanroepen maken: Power Automate voorkomt standaard dat je recursieve stroomaanroepen kunt doen. Maar met behulp van de Request-trigger en HTTP-aanroepen kunt je nog steeds recusieve aanroepen bereiken. Dit kan soms erg handig zijn. Wanneer je flow een bug heeft en je recursie nooit breekt, zul je eindigen met duizenden runs die zich maar blijven vermenigvuldigen
Stroom uitschakelen
Het eerste dat je moet doen bij dergelijke scenario’s is je stroom uitschakelen. Dit zal je huidige runs niet annuleren, maar er worden in ieder geval geen nieuwe runs gestart. Na een tijdje zal Power Automate op de rem trappen. De omgeving is nog steeds gebonden aan jouw licenties. Als je zoveel stromen uitvoert, verbruik je je toegestane hoeveelheid om stromen uit te voeren en API-aanroepen uit te voeren. Er wordt een waarschuwingsbericht weergegeven dat je stroom vanaf dat moment wordt beperkt.
Deze throttling zorgt er vervolgens voor dat de runs heel erg vertragen. Het is dan bijna onmogelijk om alle duizenden stromen af te werken. Uiteindelijk wordt de stroom automatisch uitgeschakeld, maar alle actieve instanties stoppen niet. Ze zullen doorlopen tot ze klaar zijn.
Als jouw stroom wordt beperkt, werkt de knop ‘ Annuleren’ mogelijk snel, maar voordat de stroom de lopende acties daadwerkelijk annuleert, kan het nog lang duren. Dus zelfs als de pagina laat zien dat er geen runs zijn; kunnen stromen nog steeds actief zijn totdat ze worden geannuleerd en resources verbruiken.
Handmatige oplossen
Je kunt een stroom annuleren. Maar elke instantie moet handmatig worden geannuleerd. En elke pagina toont slechts 50 flowruns. Je moet dus op ‘meer laden’ blijven klikken en vervolgens voor elke stroom op de knop ‘Annuleren’ klikken. Dit is natuurlijk erg tijdrovend en je kunt er gemakkelijk een vergeten op te zeggen. Dit is dus niet de manier.
Juiste oplossing
Stel je hebt duizenden stromen lopen. Microsoft biedt geen enkele manier om al deze stromen te annuleren. Wat nu?
Toen ik dit exacte probleem moest oplossen heb ik een gebruikersscript gemaakt dat twee knoppen op de werkbalk in Power Automate toegevoegde. Deze knoppen worden toegevoegd op de pagina Uitvoeringsgeschiedenis van elke stroom.
Lopende stromen tellen: Deze knop telt gewoon alle lopende stromen. Als er veel stromen lopen, kost dit veel tijd. Er verschijnt een pop-upvenster waarin wordt aangegeven hoeveel stromen er zijn. Dit aantal zal gestaag toenemen terwijl de telling loopt. Zodra het tot een einde komt, krijg je de resultaten. Je kunt ook op de knop ‘Stop’ klikken om de telling te stoppen.
Alle stromen annuleren: Dit is de belangrijkste: een enkele klik om al je actieve instanties van een stroom te annuleren. Als er veel stromen lopen, kost dit veel tijd. Dit wordt nog verergerd door het feit dat er slechts 1000 stromen per 15 minuten kunnen worden geannuleerd.
Er verschijnt een venster waarin wordt aangegeven hoeveel stromen zijn geannuleerd.
Dit aantal loopt op in stappen van 50, omdat dit het paginagrote is. Uiteindelijk worden alle stromen geannuleerd. Er verschijnt een berichtwaarin staat hoeveel stromen er uiteindelijk zijn geannuleerd. Er zijn nu dus geen lopende stromen meer in je geschiedenis. Zoals ik al zei, kan het even duren voordat stromen hun actieve acties daadwerkelijk annuleren.
Goodies
Deze extensie is gebouwd met behulp van een gebruikersscript. Een gebruikersscript is een stukje JavaScript dat in een webpagina wordt geïnjecteerd. Dit wordt gedaan met behulp van de browserextensie Tampermonkey. Het kan in elke grote browser worden geïnstalleerd.
Tampermonkey
Nadat je Tampermonkey in je browser hebt geïnstalleerd, kun je gebruikersscripts installeren. In dit geval heb ik het script ‘Power Automate – Cancel all runs’ geïnstalleerd. Het script is te vinden op Greasy Fork. Dit is een site met veel gebruikersscripts.
Wanneer je de pagina opent, word je begroet met een groene knop ‘Installeren’.
Zodra je hierop klikt, zal Tampermonkey je vragen om het te installeren. Daarna wordt het script uitgevoerd wanneer het zich op de Microsoft Power Automate-site bevindt.
Voorkomen beter dan genezen
Power Automate is erg krachtig, maar we kunnen het misbruiken en breken. Microsoft biedt niet altijd de tools om de taak gemakkelijk uit te voeren. Gelukkig kunnen we met userscripts de functionaliteit van een website aanpassen. In dit geval een eenvoudig script om alle runs te annuleren.
Stromen Testen
Het beste is natuurlijk om je stromen te testen en te proberen deze actie in de eerste plaats te voorkomen. Bijvoorbeeld:
- Zorg ervoor dat stromen zijn uitgeschakeld wanneer u een bulkupdate uitvoert
- Voeg een teller toe die bijhoudt hoe diep je aanroepen lopen en stop als je te diep gaat. Nu kun je niet (gemakkelijk) te diep gaan in recursieve stromen
Bij Prodware zoeken we de grenzen van de technologie op om er het maximale uit te halen. In die gevallen moeten we creatief zijn om de problemen die we tegenkomen op te lossen. Het gebruik van standaardtools, zoals Tampermonkey, om de functionaliteit van een website uit te breiden, is een zeer handige manier om onze tools uit te breiden.
Ik hoop dat deze ervaring en oplossing je zullen helpen bij je dagelijkse gebruik van Power Automate!