android创建flowable工具类,Flowable6.6 – ID生成器 | 字痕随行

最近被Flowable的自定义缓存搞的神烦,今天先看看如何自定义它的ID生成器,后面再细说缓存的事。

如果只是想使用自定义ID生成策略,只需要以下代码就好了:

configuration.setIdGenerator(new IdGenerator() {

@Override

public String getNextId(){

//这里使用hutool的UUID工具类生成

return IdUtil.simpleUUID();

}

});

然后随便启动个流程,就可以看到所有的ID都变成UUID了:

09b38dfbf6698c754d98d207a6b8fbe0.png

如果还想了解一下为什么,可以继续往下看。

在UserTaskActivityBehavior的execute()中可以找到创建Task的方法。

这个方法可以追踪到TaskHelper中,一路追踪下去:

TaskHelper.insertTask->

TaskService.insertTask->

TaskEntityManagerImpl.insert->

AbstractEntityManager.insert->

AbstractDataManager.insert->

DbSqlSession.insert->

String id = idGenerator.getNextId();

就可以找到为Task赋予ID的方法,至于idGenerator来源于哪里,其实是在ProcessEngineConfigurationImpl中。

public void initIdGenerator(){

if (idGenerator == null) {

DbIdGenerator dbIdGenerator = new DbIdGenerator();

dbIdGenerator.setIdBlockSize(idBlockSize);

idGenerator = dbIdGenerator;

}

if (idGenerator instanceof DbIdGenerator) {

DbIdGenerator dbIdGenerator = (DbIdGenerator) idGenerator;

if (dbIdGenerator.getIdBlockSize() == 0) {

dbIdGenerator.setIdBlockSize(idBlockSize);

}

if (dbIdGenerator.getCommandExecutor() == null) {

dbIdGenerator.setCommandExecutor(getCommandExecutor());

}

if (dbIdGenerator.getCommandConfig() == null) {

dbIdGenerator.setCommandConfig(getDefaultCommandConfig().transactionRequiresNew());

}

}

}

同样,在这个方法中可以发现我们之前自定义ID生成策略的Set方法:

public ProcessEngineConfigurationImpl setIdGenerator(IdGenerator idGenerator){

this.idGenerator = idGenerator;

return this;

}

以上就是自定义ID生成策略的简单实现,如有错误,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值