Error Boundary Event retry time cycle not used

I am trying to design a BPMN process and calling Java Delegate classes for service tasks. The Java Delegates are integrated via the Delegate Expression pattern. This works all fine.
My problem is that the Java classes are executed but there can be the need to throw an exception e.g. the action cannot be executed (the business project might be locked by another user). This exception is then designed in the BPMN as an “Error Boundary Event” with the qualified class name as the “Error Code” and the definition of a “Retry Time Cycle” e.g. “R3/PT30S”.
The definition of the retry time cycle is not used, the retries are fired directly one after the other, no wait between the tries. I have tried it also with throwing a BpmnError instead of a Java exception but it behaves the same.
Any idea what I am doing wrong?

process.bpmn (8.4 KB) (2.6 KB)

Best regards

1 Like

Hi @Edmund ,

the default behavior of the process engine is to execute a failed task is to retry it twice in a short time of period. If you want to change that behavior you can set the retry time cycle in the properties panel. If this is not set the default is taken (and that is what you currently experience).

In general we recommend not to model the retry explicitly in your process model. As this can easily overload the model. You can find some best practices around it here.

I hope that helps

as you can see, I have configured the retry explicitly in the property “R3/PT30S” but this configuration (you have marked it with a yellow circle) is not taken. The retries are executed within 2 Seconds.
Is there something wrong with this definition?


Hi Edmund,

in the model you shared the retry time cycle was not set. That’s why I have marked the point where you can set and put the value inside.

I will try to reproduce it. At the moment I am not sure why it is not working if you include the retry time cycle it should pick it up. I let you know if I find something.

Kind regards

Sorry, I found my mistake. I have set the retry time cycle at the Boundary Exception Event and not at the service task itself. I thought in this way i can decide for which exceptions it is ok to retry and for which it makes no sense.
Now it works.