Happy New Year 2016 to everyone !!!
I am trying automatic retries on errors using jBPM 6.3.Final Executor in my processes. This is a custom Spring-jBPM application. I have tried below 2 approaches -
1. Using Signal event subprocess in BPMN2 and SignallingTaskHandlerDecorator instead of ServiceTaskHandler class. This correctly signals the event subprocess on any error in Service Task and then the whole process gets retried from beginning. Please note I do not have any safe point in the process, so it will roll back everything on error. If I add a timer in between just to have a safe point, I can see it retrying 3 times (as configured) from the safe point (timer) and then again retrying the whole process from start. Is this due to number of retries got exhausted and the error is delegated to the parent? Also the process starts with a timer start event.
2. Second approach is using customAsync=true for one of the Service tasks. By doing this, It automatically retries the Service task 3 times and then again starts from beginning (timer start event) several times.
In both approaches, I can see newer records have been added in PROCESSINSTANCEINFO table, where older records still exist. Is this kind of duplicate? So at some point I can see 4 records for the same process with different ids. If I put interruptible=true for the event subprocess, then older records gets terminated. But there is no such option for async task.
Also, if I restart the server, nothing gets resumed. But the records still remain in PROCESSINSTANCEINFO table. Do I need to programmatically resume the instance upon restart? If yes then which one? as there would be more than one instances.
Please help on this.