
## Esecuzione sincrona e asincrona
I motori BPM supportano due tipi di esecuzione di attività: sincrona e asincrona. A mio parere, questi nomi sono piuttosto sfortunati e inadatti, e aggiungono solo confusione.
In effetti, si tratta dei confini delle transazioni e non della vera asincronia. Nel contesto BPMN, l’esecuzione asincrona delle attività è correlata a come il processo memorizza il suo stato e gestisce l’esecuzione del passaggio.
Quando si contrassegna un’attività come asincrona (ad esempio, con `asyncBefore` in Camunda o `async` in Flowable), l’esecuzione del processo viene esplicitamente divisa in transazioni separate. Nel limite asincrono, il motore memorizza lo stato corrente del processo nel database e crea un job nella coda dei job. Un componente speciale preleverà successivamente quel job e continuerà l’esecuzione in una **nuova transazione**. (In Camunda, `asyncAfter` differisce leggermente – significa che la divisione avviene dopo l’esecuzione dell’attività ma prima del passaggio successivo.)
Pertanto, l’asincronia in BPMN è un modo di gestire le transazioni o l’elaborazione dei task tramite una coda e non l’esecuzione parallela di codice o thread.
Source: Una chiamata non bloccante di un servizio esterno all’interno di un processo
