spring集成flowable

848 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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。它们需要未经代理的数据源)。

image.png

image.png

可以简单地通过提供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-actuatorSpring启动的一些依赖

流程设计器

流程设计器、用户和流程管理系统

首先下载tomcat-flowable-6.4.0.zip

webapps目录里有四个war

  • flowable-idm:用户管理、授权
  • flowable-admin:实例、任务管理
  • flowable-modeler:设计器
  • flowable-task:个人任务管理

这些war包都能直接使用java -jar flowable-[项目].war启动。

注意:flowable-idm也用于其他项目的登陆授权。

这时还不能启动,需要修改一些配置:

  1. 依次解压,打开其中的WEB-INF\classes目录,修改flowable-default.properties文件里的数据库连接信息(
    spring.datasource.driver-class-name
    spring.datasource.url
    spring.datasource.username
    spring.datasource.password),之后重命名文件为application.properties
  2. WEB-INF\lib里加入数据库驱动文件,我的是mysql-connector-java-5.1.47.jar