分享

activiti5.22 springboot 流程引擎 实战全过程

 vnxy001 2019-03-21

一. 背景

    现在很多项目流程上比较复杂,业务上不复杂,对于这种项目,引入流程引擎会比较合适,流程有流程引擎去做管理,让设计更合理,开发更简单。市面上有很多款流程引擎,本人选用了使用率比较广的流程引擎activiti。

    activiti现在最高版本已经到7,springboot最高版本是6,由于网络上5.22版本资料最多,所以选用了5.22版本作为项目集成。

二. activiti自带表介绍

    

    不同版本的activiti自带表是不一样的,其实我们也不用去关心不同版本的activiti需要那些表,只要配置好数据源,系统启动的时候,会去检查数据库是否包含这些数据库表,如果没有会自动去创建这些表。下面先介绍简单介绍一下,这些表的含义。

表含义介绍博客(引用):https://blog.csdn.net/jack_eusong/article/details/79411053

表关系图介博客(引用):https://blog.csdn.net/claram/article/details/73277358

日志表:
1. act_evt_log                        存储事件处理日志,方便管理员跟踪处理。
通用数据表
2. act_ge_bytearray               二进制数据表,一些文件存在这个表。
3. act_ge_property                属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
历史数据表
4. act_hi_actinst                    历史节点表
5. act_hi_attachment             历史附件表
6. act_hi_comment                历史意见表
7. act_hi_detail                      历史详情表,提供历史变量的查询
8. act_hi_identitylink              历史流程人员表
9. act_hi_procinst                  历史流程实例表
10.act_hi_taskinst                 历史任务实例表
11.act_hi_varinst                   历史变量表
用户组织表
12.act_id_group                    用户组信息表
13.act_id_info                       用户扩展信息表
14.act_id_membership         用户与用户组对应信息表
15.act_id_user                      用户信息表
资源流程规则表
16.act_procdef_info              流程定义信息
17.act_re_deployment          部署信息表
18.act_re_model                   流程设计模型部署表
19.act_re_procdef                 流程定义数据表  
运行时数据库表
20.act_ru_event_subscr       监听表
21.act_ru_execution             运行时流程执行实例表
22.act_ru_identitylink           运行时流程人员表,主要存储任务节点与参与者的相关信息
23.act_ru_job                       运行时定时任务数据表
24.act_ru_task                     运行时任务节点表
25.act_ru_variable               运行时流程变量数据表

三. activiti与springboot集成

    项目通过maven构建,所以去要引入activiti相关jar。

  1. <dependency>
  2. <groupId>org.activiti</groupId>
  3. <artifactId>activiti-spring-boot-starter-basic</artifactId>
  4. <version>5.22</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-jdbc</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>mysql</groupId>
  12. <artifactId>mysql-connector-java</artifactId>
  13. </dependency>

    在定义activiti配置

  1. @Component
  2. public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
  3. @Override
  4. public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
  5. processEngineConfiguration.setActivityFontName("宋体");
  6. processEngineConfiguration.setLabelFontName("宋体");
  7. processEngineConfiguration.setAnnotationFontName("宋体");
  8. processEngineConfiguration.setDbIdentityUsed(false);
  9. processEngineConfiguration.setDatabaseSchemaUpdate("true");
  10. }
  11. }

processEngineConfiguration.setDbIdentityUsed(false);     

这段代码表示是否使用activiti自带用户组织表,如果是,这里为true,如果不是,这里为false。由于本项目使用了视图的方式代替了原有的用户组织表,所以这里设置为false,这样启动就不用去检查用户组织表是否存在。


processEngineConfiguration.setDatabaseSchemaUpdate("true");

这段代码表示启动的时候是否去创建表,如果第一次启动这里必须设置为true

然后再springboot全局配置文件application.yml 配置,表示关闭验证自动部署,不关闭每次启动都会去部署resources/processes文件夹下面的所有资源文件

  1. spring:
  2. activiti:
  3. check-process-definitions: false

以上就是springboot和activiti的集成了,启动springboot后,activiti也会相应的运行起来。

四. activiti画图工具的集成

1. 可以在eclipse中集成Activiti Designer插件,然后可以进行画图

插件安装博客(引用):https://www.cnblogs.com/strinkbug/p/4876819.html

2. 可以引入官方的画图工具,然后进行画图

官方的画图工具集成博客(引用):http:///activiti/126.html

个人建议引入官方画图工具,这样画图信息是存在activiti自有表中,如果要发布也是比较简单的,直接点击发布即可。

点击发布过,会在流程资源中出现相应的资源信息

如果在其他途径画的图,比如eclipse,可以把相应的资源文件直接导入即可

五. 官方画图工具的集成

    上面给出了官方画图工具集成的博客,这里有几个地方需要注意的,如果权限组件没有集成spring-security,需要排除相关引用

  1. <dependency>
  2. <groupId>org.activiti</groupId>
  3. <artifactId>activiti-modeler</artifactId>
  4. <version>5.22</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.security</groupId>
  8. <artifactId>spring-security-config</artifactId>
  9. </exclusion>
  10. <exclusion>
  11. <groupId>org.springframework.security</groupId>
  12. <artifactId>spring-security-crypto</artifactId>
  13. </exclusion>
  14. <exclusion>
  15. <groupId>org.springframework.security</groupId>
  16. <artifactId>spring-security-web</artifactId>
  17. </exclusion>
  18. </exclusions>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.activiti</groupId>
  22. <artifactId>activiti-diagram-rest</artifactId>
  23. <version>5.22</version>
  24. <exclusions>
  25. <exclusion>
  26. <groupId>org.springframework.security</groupId>
  27. <artifactId>spring-security-config</artifactId>
  28. </exclusion>
  29. <exclusion>
  30. <groupId>org.springframework.security</groupId>
  31. <artifactId>spring-security-crypto</artifactId>
  32. </exclusion>
  33. <exclusion>
  34. <groupId>org.springframework.security</groupId>
  35. <artifactId>spring-security-web</artifactId>
  36. </exclusion>
  37. </exclusions>
  38. </dependency>

且,springboot启动的时候,需要加上@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

  1. @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
  2. @EnableAsync
  3. @EnableTransactionManagement //启用事务
  4. @ComponentScan(basePackages = "yui")
  5. public class ActivitiWebApplication {
  6. public static void main(String[] args) {
  7. ApplicationContext app = SpringApplication.run(ActivitiWebApplication.class, args);
  8. SpringContextUtils.setApplicationContext(app);
  9. }
  10. }

总结

    流程引擎使用的时候会带来便利性,但是使用不当也会带来复杂度。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多