Async Patronen & BPMN
Aanbevolen BPMN-patronen voor asynchrone documentgeneratie met de Valtimo Epistola-plugin.
Waarom asynchroon?
Documentgeneratie is een I/O-intensieve operatie. In plaats van het BPMN-proces te blokkeren tijdens het wachten op een PDF, gebruikt de plugin een asynchroon patroon: dien het verzoek in en wacht op een voltooiingssignaal.
Aanbevolen BPMN-patroon
Het standaardpatroon gebruikt drie elementen:
Servicetaak (Document Genereren)
→ Berichtvangstgebeurtenis (EpistolaDocumentGenerated)
→ Servicetaak (Document Downloaden)
- Document Genereren — dient het verzoek in, slaat het verzoek-ID op
- Berichtvangstgebeurtenis — het proces wacht hier tot het document klaar is
- Document Downloaden — haalt de voltooide PDF op als Base64
Hoe voltooiing werkt
De plugin bevat een gecentraliseerde batchpoller die:
- Op een configureerbaar interval draait (standaard: 30 seconden)
- Alle openstaande generatiejobs over alle wachtende processen opvraagt
- Verzoeken per tenant groepeert voor efficiënte API-aanroepen
- Het BPMN-bericht
EpistolaDocumentGeneratedcorreleert wanneer een job voltooid is
Dit betekent dat individuele processen geen timers of pollinglussen nodig hebben — de plugin handelt dit centraal af.
Foutafhandeling
Als een generatiejob mislukt, wordt het bericht nog steeds gecorreleerd maar met een foutstatus. Gebruik een BPMN-grensgebeurtenis of een conditionele gateway na de downloadstap om fouten netjes af te handelen.
Schaalbaarheid
De batchpoller is ontworpen voor honderden gelijktijdige generatiejobs. Bij hoge belasting:
- Jobs worden per tenant gegroepeerd om API-aanroepen te minimaliseren
- Mislukte jobs worden bijgehouden met fouttellers
- Gedeeltelijke fouten blokkeren andere jobs in dezelfde batch niet
Alternatieve patronen
Voor gebruiksscenario’s die directe feedback nodig hebben (bijv. voorbeeldgeneratie), overweeg het synchrone preview-endpoint direct te gebruiken in plaats van de asynchrone pluginacties.