activiti 流程 ID生成策略

activiti默认的ID生成策略在高并发场景下会出现ID重复的情况,因此在高并发场景下建议采用UUID的策略。



------------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于activiti默认的ID生成策略在高并发场景下会出现ID重复的情况的原因,以下是在网上查到的资料,默认是采用的


org.activiti.engine.impl.db.DbIdGenerator
" />

org.activiti.engine.impl.db.DbIdGenerator的源码,源码看该类是先从数据库获取一段ID,当高并发的时候,存在获取这段Block后还没来得及刷新该Block,又被新的线程获取到,造成ID重复。

public class DbIdGenerator implements IdGenerator {

  protected int idBlockSize;
  protected long nextId = 0;
  protected long lastId = -1;
  
  protected CommandExecutor commandExecutor;
  protected CommandConfig commandConfig;
  
  public synchronized String getNextId() {
    if (lastId


你可能感兴趣的:(Java)