# 补偿事件

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

触发补偿有以下方式

  • IDE中查找到该流程实例后点Commands里的闪电(补偿)图标
  • Dashboard里查找到该实例后点击补偿菜单
  • 如果需要补偿的实例非常多,手工一个一个点费时,可调用Api(4.5)触发补偿,请参考此处