Activiti7核心源码分析
2023-07-27 01:39:22 0 举报
AI智能生成
Activiti源码分析
作者其他创作
大纲/内容
1.设计模式
命令模式
https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89115420
责任链模式
https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89077040
2.初始化代码
ProcessEngineConfigurationImpl中的init方法
init()
initCommandContextFactory()
initTransactionContextFactory()
initCommandExecutors()
initDefaultCommandConfig()
初始化CommondConfig对象
contextReusePossible
是否重用上下文
propagation
事务的传播属性
并且绑定在了defaultCommandConfig属性中
initSchemaCommandConfig()
初始化CommondConfig对象
contextReusePossible
设置不可以重用上下文
propagation
不支持事务的传播属性
并且绑定在了schemaCommandConfig属性中
initCommandInvoker()
完成commandInvoker的初始化
CommandInvoker
命令模式的执行者
责任链模式的最后一个节点
initCommandInterceptors()
完成commandInterceptors的初始化
组装命令的拦截器链
customPreCommandInterceptors
自定义的前置拦截器
getDefaultCommandInterceptors
默认的拦截器
customPostCommandInterceptors
自定义的后置拦截器
commondInvoker
最后一个拦截器
initCommandExecutor()
初始化拦截器链--initInterceptorChain()
把上面获取的拦截器设置为链路关系
获取责任链的第一个节点
初始化CommandExecutor
绑定defaultCommandConfig
绑定第一个拦截器
initServices()
给各个XXXService绑定 commandExecutor
initService(repositoryService);
initService(runtimeService);
initService(historyService);
initService(taskService);
initService(managementService);
initService(dynamicBpmnService);
initService(runtimeService);
initService(historyService);
initService(taskService);
initService(managementService);
initService(dynamicBpmnService);
public void initService(Object service) {
if (service instanceof ServiceImpl) {
((ServiceImpl) service).setCommandExecutor(commandExecutor);
}
}
if (service instanceof ServiceImpl) {
((ServiceImpl) service).setCommandExecutor(commandExecutor);
}
}
相关的xxxService在成员变量出已经完成了实例化
3.核心流程代码
部署流程
RepositoryService
Deployment deploy = processEngine.getRepositoryService().createDeployment()
.addClasspathResource("flow/04-mutiInstance/muti-instance-05-sub-process.bpmn20.xml")
.name("多实例5")
.deploy();
.addClasspathResource("flow/04-mutiInstance/muti-instance-05-sub-process.bpmn20.xml")
.name("多实例5")
.deploy();
DeploymentBuilder
部署并构建Deployment对象
deploy方法
commandExecutor.execute(new DeployCmd<Deployment>(deploymentBuilder));
涉及到的拦截器
LogInterceptor
first-责任链路中的第一个节点
SpringTransactionInterceptor
CommandContextInterceptor
TransactionContextInterceptor
CommandInvoker
责任链中的最后一个节点
DeployCmd
具体处理部署的操作
DBSqlSession
ACT_RE_DEPLOYMENT
部署信息
ACT_RE_PROCDEF
流程定义信息
insert/delete/update
都只是做了缓存的操作
flush
在所有操作完成后在统一完成添加更新和删除的数据库操作
0 条评论
下一页