Activiti工作流学习笔记(三)——自动生成28张数据库表的底层原理分析

我接触工作流引擎Activiti已有两年之久,但一直都只限于熟悉其各类API的使用,对底层的实现,则存在较大的盲区。

Activiti这个开源框架在设计上,其实存在不少值得学习和思考的地方,例如,框架用到以命令模式、责任链模式、模板模式等优秀的设计模式来进行框架的设计。

故而,是值得好好研究下Activiti这个框架的底层实现。

我在工作当中现阶段用的比较多是Activiti6.0版本,本文就以这个版本来展开分析。

在使用Activiti工作流引擎过程中,让我比较好奇的一个地方,是框架自带一套数据库表结构,在首次启动时,若设计了相应的建表策略时,将会自动生成28张表,而这些表都是以ACT_开头。

那么问题来了,您是否与我一样,曾好奇过这些表都是怎么自动生成的呢?

下面,就开始一点点深入研究——

在工作流Springboot+Activiti6.0集成框架,网上最常见的引擎启动配置教程一般长这样:

1 @Configuration 2 public class SpringBootActivitiConfig { 3 @Bean 4 public ProcessEngine processEngine(){ 5 ProcessEngineConfiguration pro=ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); 6 pro.setJdbcDriver("com.mysql.jdbc.Driver"); 7 pro.setJdbcUrl("xxxx"); 8 pro.setJdbcUsername("xxxx"); 9 pro.setJdbcPassword("xxx"); 10 //避免发布的图片和xml中文出现乱码 11 pro.setActivityFontName("宋体"); 12 pro.setLabelFontName("宋体"); 13 pro.setAnnotationFontName("宋体"); 14 //数据库更更新策略 15 pro.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); 16 return pro.buildProcessEngine(); 17 } 18 19 @Bean 20 public RepositoryService repositoryService(){ 21 return processEngine().getRepositoryService(); 22 } 23 24 @Bean 25 public RuntimeService runtimeService(){ 26 return processEngine().getRuntimeService(); 27 } 28 29 @Bean 30 public TaskService taskService(){ 31 return processEngine().getTaskService(); 32 } 33 ...... 34 35 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxdpx.html