It's pretty core to Activiti: from every waitstate to every next waitstate you have a transaction. If something goes wrong, it roll back to the previous wait state. If you need to demarcate manually your transactions, look into the 'async continuation' functionality of Activiti.
I tried implementing a transactional process, a process which has compensating tasks. But then on the occurence of compensate throw event these compensating tasks are not executed. Did lot of google search, couldn't find any sample process with compensating tasks. I am stuck with this issue