Overlappende uitvoering van geplande workflows preventing-overlapping-execution-of-scheduled-workflows
Uitvoering van geplande workflows
In Campaign Standard garandeert de workflowengine dat een workflowinstantie slechts door één proces wordt uitgevoerd. Het blokkeren van activiteiten zoals invoer, lange lopende vragen of schrijft in het gegevensbestand verhindert de uitvoering van een andere taak wanneer het lopen.
Aan de andere kant blokkeren niet-blokkerende activiteiten de uitvoering van andere taken niet (gewoonlijk activiteiten die wachten op een gebeurtenis zoals de Scheduler -activiteit).
Dit kan leiden tot een scenario waarbij een op een planning gebaseerde workflow kan worden uitgevoerd, zelfs als de vorige uitvoering van dezelfde workflow nog niet is voltooid, wat kan leiden tot onverwachte gegevensproblemen.
Daarom moet u er bij het ontwerpen van een geplande workflow met meerdere activiteiten voor zorgen dat de workflow niet opnieuw wordt gepland totdat deze is voltooid. Hiervoor moet u uw workflow configureren om te voorkomen dat deze wordt uitgevoerd als een of meer taken uit een eerdere uitvoering nog in behandeling zijn.
De workflow configureren
Als u wilt controleren of een of meer taken uit een vorige werkstroom nog niet zijn uitgevoerd, moet u een Query - en Test -activiteit gebruiken.
-
Voeg een Query activiteit na de Scheduler activiteit toe, dan vorm het als volgt.
-
Wijzig de bron van de activiteit in WorkflowTaskDetail , wat betekent dat de huidige taken van de werkstroom erop gericht zijn.
-
Configureer de query met de onderstaande regels:
-
De eerste regelfilters uit de huidige taak (query2) evenals de volgende planningtaak (planning2) die tot het huidige werkschema behoort.
note note NOTE Wanneer een Scheduler activiteit begint, voegt het onmiddellijk een andere planningtaak toe om bij de volgende geplande tijd te lopen en het werkschema te beginnen. Daarom is het belangrijk om zowel de vraag als planningstaken te filtreren wanneer het zoeken naar hangende taken van een vorige uitvoering. -
De tweede regel bepaalt of taken uit een vorige uitvoering van de workflow nog actief zijn (in behandeling), wat overeenkomt met de uitvoerstatus 0.
-
-
Voeg een Test -activiteit toe om te controleren op het aantal lopende taken dat door de Query -activiteit wordt geretourneerd. Hiertoe configureert u twee uitgaande overgangen.
- De eerste overgang gaat door met de uitvoering van de workflow als er geen taken in behandeling zijn.
- De tweede overgang annuleert de uitvoering van de workflow als er nog taken in behandeling zijn.
U kunt nu de rest van uw workflow naar wens configureren. Als de uitvoering van de workflow wordt geannuleerd vanwege lopende taken, kan de workflow deze stappen doorlopen wanneer de workflow volgens het schema opnieuw wordt uitgevoerd. Hierdoor wordt ervoor gezorgd dat de workflow alleen wordt uitgevoerd als er geen actieve (hangende) taken uit een vorige uitvoering zijn.