I see that you cross posted this to Stackoverflow here as well. Please do not do that, we are monitoring both channels.
To put the answer here.
In Flowable when an execution fail (due to some exception), the transaction would be rollbacked to the previous wait state in your workflow. This means that the next time it runs it would continue from there.
You can make a Service Task async which would make it a wait state. In that case an Async Job would be created and that would be retried (by default 3 times, but that is configurable). If the Service Task fails all the time (the configured number of retries) the job would be moved into the dead letter job and then you need to manually trigger it.
Hey @filiphr How service tasks are triggered manually?
In Control we have option “Move Job” is that the one moves the dead letter jobs to executable jobs?
The dead letter job concept only applies if the service task is asynchronous. If it is, the service task will be retried a few times (default 3) before becoming a deadletter job.
Flowable Control (note: not open source) has indeed a move job functionality. There is a java API that does this: managementService#moveDeadLetterJobToExecutableJob or /management/deadletter-jobs/{jobId} if using the REST API.