一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情
前言
-
spring火的一塌糊涂,不要跟我说flowable单独也完全可以使用。网站开发是主流,spring整合flowable也是必不可少的一步。
-
上篇文章我们可以知道flowable创建工作流需要借助
ProcessEngine. 那么spring整合自然就是将ProcessEngine注册到spring容器中。org.flowable.spring.ProcessEngineFactoryBean就是我们的入口 -
将DataSource传递给
SpringProcessEngineConfiguration(使用“dataSource”参数)时,Flowable会在内部使用org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy对得到的数据源进行包装(wrap)。这是为了保证从数据源获取的SQL连接与Spring的事务可以协同工作。这样也就不需要在Spring配置中对数据源进行代理(proxy)。但仍然可以将代理TransactionAwareDataSourceProxy传递给SpringProcessEngineConfiguration——在这种情况下,不会再进行包装。
请确保如果自行在Spring配置中声明了TransactionAwareDataSourceProxy,则不要将它用在已经配置Spring事务的资源上(例如DataSourceTransactionManager与JPATransactionManager。它们需要未经代理的数据源)。
可以简单地通过提供Datasource bean来覆盖默认配置,来更换数据源。我们在这里使用DataSourceBuilder类,这是Spring Boot的辅助类。如果classpath中有Tomcat, HikariCP 或者 Commons DBCP,就会(按照这个顺序,先是Tomcat)选择一个(作为连接池)。例如,要切换到MySQL数据库:
| starter | 详细 |
|---|---|
| flowable-spring-boot-starter-cmmn | 包含CMMN案例管理引擎 |
| flowable-spring-boot-starter-cmmn-rest | 同上,另外包含REST API |
| flowable-spring-boot-starter-dmn | 包含DMN决策表引擎 |
| flowable-spring-boot-starter-dmn-rest | 同上,另外包含REST API |
| flowable-spring-boot-starter-process | 包含业务流程引擎,会自动扫描resources/processes下的.bpmn20、.bpmn20.xml文件并部署 |
| flowable-spring-boot-starter-process-rest | 同上,另外包含REST API |
| flowable-spring-boot-starter | 包含flowable全家桶(Process流程引擎, CMMN案例管理引擎, DMN决策表引擎, Form表单, Content 以及 IDM用户认证) |
| flowable-spring-boot-starter-rest | 同上,另外包含REST API |
| flowable-spring-boot-starter-actuator | Spring启动的一些依赖 |
流程设计器
流程设计器、用户和流程管理系统
在webapps目录里有四个war包
- flowable-idm:用户管理、授权
- flowable-admin:实例、任务管理
- flowable-modeler:设计器
- flowable-task:个人任务管理
这些war包都能直接使用java -jar flowable-[项目].war启动。
注意:flowable-idm也用于其他项目的登陆授权。
这时还不能启动,需要修改一些配置:
- 依次解压,打开其中的
WEB-INF\classes目录,修改flowable-default.properties文件里的数据库连接信息(
spring.datasource.driver-class-name、
spring.datasource.url、
spring.datasource.username、
spring.datasource.password),之后重命名文件为application.properties - 往
WEB-INF\lib里加入数据库驱动文件,我的是mysql-connector-java-5.1.47.jar