这篇文章不会更新了,问题也不会回答。有更多成熟的方案可以选择,
其实我一直在思考工作流引擎的作用,结论是挺有限的,使用场景确实不多,在实际工作中需要用到工作流引擎也没有使用市场上的框架,参考这种思想,设计十几张表就能实现。
实在要用Activiti6,跟着配置避免冲突就行了,别想着去修改源码。
两者为什么不能在一起
Activiti6 出来的时候,Springboot2 还没有出来,所以不能直接引用
或者说,从源码上就不支持
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
运行报错
怎么办
1.网上大多都是屏蔽掉冲突的包
@SpringBootApplication( exclude = SecurityAutoConfiguration.class)
如果你并没有将流程控制文件xx.bpmn
加入项目也会报错,所以我们在配置文件里面暂时不检查它,后续可能会更新通过配置文件如何管理控制activiti
activiti:
database-schema-update: true
check-process-definitions: false
可以成功运行并且看到数据库里面的28张表,但是我们不能保证后续会不会因为这个原因出现其他问题
2.修改源码
改一下源码中对springboot2版本的支持,慕课网上某位老师就是这样做的
感兴趣的话可以跟着视频自己改
我分享一下改好的
https://pan.baidu.com/s/18Ut_FKL0EPMmAqVVHjOamQ
提取码:7m0t
一个30KB的压缩包,解压后,放到maven本地仓库中的
activiti\activiti-spring-boot-starter-basic下
接着引入
<!--加入自己编译后的 activiti工作流6.0-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0-boot2</version>
</dependency>
配置好数据库就可以使用了
spring:
thymeleaf:
encoding: utf-8
prefix: classpath:/templates/
suffix: .html
mvc:
view:
prefix: /
suffix: .html
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@localhost:1521:ORACLE
username: test1
password: root
activiti:
database-schema-update: true
check-process-definitions: true
process-definition-location-prefix: classpath:/processes/
history-level: full
db-history-used: true
db-identity-used: true
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle10gDialect
结语:生产环境还是不建议改源码,但自己练练手,熟悉一下activiti6 ,还不用麻烦的配置,很 nice!