Hello! I’ve faced a certain problem that stunned me.
I have two processes: processA.bpmn and processB.bpmn
processA launches a call activity that starts processB with input variable.
processB interacts with an external api and does such actions:
a. Get dictionary element by id and saves it to context at variable “element”
b. Get variable “element” from context, update it’s content and update “element” variable at context
c. Get variable “element” from context & update it by rest client at external api (PUT) method
There is a problem - external api can’t be reached or i can get 409 on its update, so i need to retry the whole processB entirely. ProcessA call activity has a custom retry time cycle of R5/PT1S to make fast five attempts. So if i fail to update dictionary element at processB activity “Update dictionary element” i throw an error and expect call activity to make a camunda retry, but it doesn’t.
What am i doing wrong? How should processB behave to launch a camunda retry on call activity “Launch update dictionary” at processA?
Retry strategies concept is related to incident management which is handled by camunda. (In case of service task failure, configured retry strategy to be used and incident to be created once all automatic retries get consumed.)
No need to throw BPMN Error. BPMN Errors can be used in case of business errors or handling errors via the process.
so in short, remove BPMN Error logic from your model. And since you need the whole called process to get recalled in case of service tasks’ failure then tick async before for the call activity only (not for service tasks)
This works fine, except one thing - call activity “Launch update dictionary” throws no incident. That’s an important moment at my process, because all incidents are handled manually