What are the steps to reproduce your problem?
Use spring engine setup.
try to do error handling on camunda service call, for example raise a bpmnError when dmn evaluation fails:
@Component
public static class EvaluateDmn implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) throws Exception {
try {
execution.getProcessEngineServices().getDecisionService()
.evaluateDecisionByKey("does not exist")
.variables(Variables.createVariables())
.evaluate();
} catch (Exception e) {
throw new BpmnError("DmnFailed", e.getMessage());
}
}
}
What is the problem?
Bpmn error is not handled, instead exception is thrown, process is rolled back:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
What would be the expected behavior:
Exception is caught, Bpmn Error is raised, process continues
Hints (optional):
- This is not limited to decision service, also happens with correlateMessage for example
- Askar already showed a work around on https://app.camunda.com/jira/browse/SUPPORT-2745