# 补偿事件
INSTANCE_COMPENSATION补偿事件是流程实例级事件,目的主要是为了业务系统同步数据。由于系统稳定性、代码质量、业务逻辑变更等因素,有时候流程数据和业务系统数据会存在不同步的现象,当然这不是一个正常现象,但确实有时候会发生,此时就需要流程数据向业务数据库进行一次同步,但这种数据同步的时机可能已经错过了(比如流程已经结束),所以要手工触发一次同步事件,这就是INSTANCE_COMPENSATION补偿事件的作用。
为触发补偿事件,首先要工作流编辑器中事件勾上补偿
添加以下代码到Messenger
@Override
public InfoPlusResponse onInstanceCompensation(InfoPlusEvent e) {
Leave form = e.toBean(Leave.class);
// 根据表单数据更新业务数据库,修改状态
return null;
}
1
2
3
4
5
6
2
3
4
5
6
触发补偿有以下方式
- IDE中查找到该流程实例后点Commands里的闪电(补偿)图标
- Dashboard里查找到该实例后点击补偿菜单
- 如果需要补偿的实例非常多,手工一个一个点费时,可调用Api(4.5)触发补偿,请参考此处。