【Activiti非正常教学】使用UUID作为主键生成策略

418 阅读1分钟
import org.activiti.engine.impl.cfg.IdGenerator;

import java.util.UUID;

/**
 * uuid生成
 *
 * @author xiaoxiong
 */
public class UUIDGenerator implements IdGenerator {

    private UUIDGenerator() {
    }

    public static UUIDGenerator instance() {
        return Instance.instance();
    }

    public static String uuid() {
        return Instance.instance().getNextId();
    }

    @Override
    public String getNextId() {
        return UUID.randomUUID().toString();
    }

    static class Instance {
        private final static UUIDGenerator UUID_GENERATOR = new UUIDGenerator();

        public static UUIDGenerator instance() {
            return UUID_GENERATOR;
        }
    }
}
import com.workflow.manage.util.UUIDGenerator;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * 流程引擎配置
 *
 * @author xiaoxiong
 */
@Component
public class ProcessEngineConfig {

    @Bean
    public ProcessEngineConfigurationImpl processEngineConfigurationImpl(ProcessEngineConfigurationImpl processEngineConfigurationImpl) {
        // 设置ProcessEngineConfigurationImpl里的uuidGenerator
        processEngineConfigurationImpl.setIdGenerator(UUIDGenerator.instance());
        processEngineConfigurationImpl.getDbSqlSessionFactory().setIdGenerator(UUIDGenerator.instance());
        return processEngineConfigurationImpl;
    }
}