Hi community,
I want to share my idea with you. Currently I work in a setting where we use lot of external-task-workers. Our task-handlers are built on the official java-client provieded by Camunda.
Thinking about retries, we realized that the retry-behaviour has to be implemented in each and every handler separatley (right?), i.e.
- write some try-catch
- handle errors and think about handling
- finally calculate number of remaining retries as well as the next timeout
So we came up with a small spring-boot-starter facing this issue. With this starter you can specify the retry-behaviour within the process-model as usual, using an expression like R3/PT10M - as it possbile for ServiceTasks with DelegateExpression, but only as ExtensionProperty.
The starter then
- does a retry for any error that occoured, of course only if any retry remains
- evaluates the retry-behaviour and determines the next timeout
- probably skips retries, if
InstantIncidentException
- or creates a bpmn-error, if
ExternalTaskBusinessError
Please tell me what you think about this helper. Be aware that this is currently more a proof-of-concept and not set free to the wild. Further, this functionality might be part of the java-client itself in the future(?)
Cheers, Flo