Lus
BPM Server kent diverse acties waarmee een lus kan worden gebouwd, zoals bijvoorbeeld de actie Conditionele Lus. In dit hoofdstuk zal worden uitgelegd wat een lus is.
We gaan de werking van een lus illustreren via de volgende voorbeeldtaak:
In deze taak worden duizenden facturen verstuurd. De facturen mogen alleen tijdens werktijd worden verstuurd. Daarnaast is er bepaald dat er maximaal 1 factuur per 5 seconden mag worden verstuurd, en dus zal er na elke verzending een pauze van 5 seconden zijn.
Het versturen van de facturen moet doorgaan zolang aan de volgende condities wordt voldaan:
- Er zijn nog te versturen facturen.
- De tijd ligt in de reeks 8:00 t/m 17:59.
In stap 3 wordt de factuur per e-mail verstuurd. In de daaropvolgende stap 4 wordt er 5 seconden gepauzeerd. Na deze pauze kan de volgende factuur verstuurd worden en dus moet de taak weer vervolgd worden bij stap 3.
De stappen 3 t/m 4 moeten dus herhaaldelijk worden uitgevoerd totdat de eerder beschreven condities niet meer gelden (bijvoorbeeld de tijd is 18:00, dus ná 17:59).
Het herhaaldelijk uitvoeren van één of meerdere stappen noemen we een lus. Een lus heeft een begin en een eind. In een taak dient dit begin en einde aangegeven te worden door een "begin lus"-actie en een "einde lus"-actie.
In de voorbeeldtaak bevindt de "begin lus"-actie zich in stap 2, middels de actie Conditionele Lus. De "einde lus"-actie bevindt zich hier in stap 5, middels de actie Einde Lus.
NB: BPM Server kent maar 1 actie welke als "einde lus"-actie kan worden ingezet: Einde Lus. Deze actie wordt dus gebruikt als einde van elk type lus.
De taak volgt de volgende logica:
- In stap 2 (Conditionele Lus) bepaalt de taak of er wordt voldaan aan de in de actie gedefinieerde condities.
Indien dat zo is zal de taak doorgaan met de eerste actie in de lus, wat de actie in stap 3 is (E-mail verzenden).
Indien dat niet zo is zal de lus worden "verlaten". Dit betekent dan dat de taak wordt vervolgd bij de eerstvolgende stap na het einde van de huidige lus. Het einde van de lus in dit voorbeeld is de "Einde Lus"-actie in stap 5. Dit betekent dat de taak zal worden vervolgd bij stap 6.
NB: Mocht het zo zijn dat de taak niet meer dan 5 stappen kent, en stap 6 dus niet bestaat, zal de taak worden beëindigd.
- Indien stap 5 wordt bereikt, waarin de actie Einde Lus zich bevindt, zal de taak teruggaan naar de stap met het begin van deze lus, wat in stap 2 is. De actie Einde Lus bepaalt dus nooit of de lus beëindigd moet worden. Dat wordt altijd bepaald door de actie die het begin van de lus kenmerkt, in dit geval dus de actie Conditionele Lus in stap 2. Het enige wat de actie Einde Lus doet, is ervoor zorgen dat de taak wordt vervolgd bij het begin van de lus.
Het kan voorkomen dat de stappen binnen een lus niet worden uitgevoerd. Stel dat de taak in ons voorbeeld pas wordt gestart om 19:00. Deze tijd voldoet niet aan de condities van het begin van de lus (stap 2, actie Conditionele Lus). Op dat moment zal de lus meteen worden beëindigd en zal de taak worden vervolgd bij stap 6.