I’m rethinking here and I still argue that each user task, service task, call activity etc. should be executed in its own transaction. I mean, activiti:async="true" by default.
If I want to enclose multiple tasks in a single transaction, I should do it with BPMN transactions, like this:
I understand your concerns, but Activiti just has another way of handling transactions. So automatic activities like service tasks run in a combined transaction and non-automatic activities will make the engine persist its state. With the async continuation support you still can do what you want. I don't think we'll change the default behavior to async.