如下情况怎么设计
页面上一些复杂的按纽,比如发送下一环节按纽,此功能下又有很多小的功能点。比如保存申请数据,选择下一环节人,保持常用数据等等。 
另外一个按纽比如提交,其下也有很多小的功能点。比如保存申请数据,保持常用数据等等; 小功能点是按照顺序一次执行,都要执行一次
注意一点是 小功能点是可以重用的。比如保存申请数据在发送下一环节与提交里都有。小功能是基于事务的,比如保持常用数据,就是用事务来处理。 
现在我要问的设计思路是:  如果按纽下的某个小功能点出现错误,导致事务提交不了,但是这个小功能点前的小功能点又已经提交,导致数据不一致。
我是想如果按纽下的小功能点,出现异常,怎么将前面已经提交数据库的事务,恢复到修改之前。。我在网上看了。有事务 补偿一说,有比较清楚这方面的,给我提点意见。