Enfoque asincronico donde las Service tasks y el Process Engine ejecutan sobre procesos separados.
Por cada Service task dentro de un workflow, el engine creara un work item para que sea tomado por un worker (pull), quien sera el encargado de implementar la logica relacionada a la tarea (ver External Task Pattern).
Bajo este approach, el Engine Process opera en modo no-bloqueante. Es decir que el engine no se bloqueara cada vez que una Service task necesite ser ejecutada, evitando asi los tiempos muertos y logrando un mejor aprovechamiento de los recursos.
Workflow que simula el proceso de creacion de cuenta y consta de tres tareas:
- Account Creation: creacion de cuenta.
- CBU Creation: creacion de CBU.
- Alias Association: Long-Running task para la asociacion de alias.
Simple workflow que simula la revision de un pedido de prestamo. Consta de una tarea:
- Check Request: chequea el pedido de prestamo
Servicio encargado de crear instancias de Deposit Account Creation Workflow y Loan Approval Workflow en intervalos de tiempo constante definido por:
scheduler:
fixedRate: 500
initialDelay: 60000
$ docker-compose up -d
Output Logs:
...
process-engine_1 | 2020-06-09 19:10:26.344 ... ProcessRunnerScheduleService : Starting new accountCreationProcess with id e047ace5-aa84-11ea-a1d2-0242ac170002
process-engine_1 | 2020-06-09 19:10:26.348 ... ProcessRunnerScheduleService : Starting new loanApproval with id e048492b-aa84-11ea-a1d2-0242ac170002
account-worker_1 | 2020-06-09 19:10:26.353 ... ScheduledAccountWorker : Creating account ~ e047ace5-aa84-11ea-a1d2-0242ac170002
loan-worker_1 | 2020-06-09 19:10:26.356 ... LoanWorkerApplication : Check loan request ~ e048492b-aa84-11ea-a1d2-0242ac170002
cbu-worker_1 | 2020-06-09 19:10:26.364 ... CbuWorkerApplication : Creating CBU ~ e047ace5-aa84-11ea-a1d2-0242ac170002
alias-worker_1 | 2020-06-09 19:10:26.736 ... AliasWorkerApplication : Association Alias ~ 9a53ce67-aa84-11ea-a1d2-0242ac170002
alias-worker_1 | 2020-06-09 19:10:26.747 ... AliasWorkerApplication : Sleeping task of account workflow...zzzz
process-engine_1 | 2020-06-09 19:10:26.845 ... ProcessRunnerScheduleService : Starting new accountCreationProcess with id e0941f57-aa84-11ea-a1d2-0242ac170002
process-engine_1 | 2020-06-09 19:10:26.848 ... ProcessRunnerScheduleService : Starting new loanApproval with id e0946d7d-aa84-11ea-a1d2-0242ac170002
...
-
Camunda Web Console: http://localhost:8080/
-
H2 Data Base Console: http://localhost:8080/h2-console/
Existe un set de pruebas para ver los tiempos promedio de ejecucion de cada instancia de workflow.