用户通过转换规则由源单生成目标单后(以目标单保存时反写为例),在目标单配置了保存时的反写规则,在目标单保存时触发反写对源单的数据进行调整。当用户删除目标单时会触发反写回滚,导致之前对源单调整的数据回退,用户可以通过实现反写插件的方式来避免这个问题。(注意:通过删除反写规则的方式无法解决该问题,而且对于已经发生业务的反写规则删除后会有不可逆的风险。)
2 使用说明
2.1 设计插件
首先,需要派生kd.bos.entity.botp.plugin.AbstractWriteBackPlugIn类,来创建干预反写的插件类。
import kd.bos.entity.botp.plugin.AbstractWriteBackPlugIn;
public class AvoidRollbackPlugin extends AbstractWriteBackPlugIn {}
在此类中实现删除时避免反写回滚的逻辑,需要通过重写afterCommitAmount事件,可以在这个事件里面动态调整反写量;
例:实现删除目标单时不修改源单数据(即避免反写回滚)。
import kd.bos.entity.botp.plugin.args.AfterCommitAmountEventArgs;
import java.util.Arrays;
import java.util.List;
public class AvoidRollbackPlugin extends AbstractWriteBackPlugIn{
private final List<String> rules = Arrays.asList("1691222118181677056");
/**
* 执行反写规则,把当前反写量,写到源单行之后,触发此事件;
* 可以通过调整反写量来达到源单数据不发