1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > SpringBoot开发案例之整合Activiti工作流引擎

SpringBoot开发案例之整合Activiti工作流引擎

时间:2023-12-07 15:17:48

相关推荐

SpringBoot开发案例之整合Activiti工作流引擎

前言

JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官网已经推出了JBPM7的beta版本;Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。由此可以推测JBoss内部对jBPM未来版本的架构实现产生了严重的意见分歧。

搭建

花了半天的时间对比了下JBPM 和 Activit,以及两个工作流的不同版本,最终选择了 Activiti6 来实现,理由如下:

JBPM 网上集成的资料甚少,且新版本相对比较笨重。Activiti 相对丰富的资料,并且高度与 SpringBoot 集成,之所以选择 Activiti6 版本,是由于目前只有版本6的集成 starter。

创建 pom.xml:

<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itstyle.bpm</groupId><artifactId>spring-boot-activiti</artifactId><packaging>jar</packaging><version>0.0.1-SNAPSHOT</version><name>spring-boot-activiti</name><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 截止2月1日 spring-boot 2.0 没有相关 activiti 的 starter-basic--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version></dependency></dependencies><build><finalName>spring-boot-activiti</finalName></build></project>

配置 application.properties:

server.context-path=/server.port=8080server.session-timeout=60server.tomcat.max-threads=100server.tomcat.uri-encoding=UTF-8spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-activiti?characterEncoding=utf-8&useSSL=falsespring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver# Specify the DBMSspring.jpa.database = MYSQL# Show or not log for each sql queryspring.jpa.show-sql = true# DDL mode. This is actually a shortcut for the "hibernate.hbm2ddl.auto" property. Default to "create-drop" when using an embedded database, "none" otherwise.spring.jpa.hibernate.ddl-auto = update# Hibernate 4 naming strategy fully qualified name. Not supported with Hibernate 5.spring.jpa.hibernate.naming.strategy = org.hibernate.cfg.ImprovedNamingStrategy# stripped before adding them to the entity manager)spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect#每次应用启动不检查Activiti数据表是否存在及版本号是否匹配,提升应用启动速度spring.activiti.database-schema-update=false#保存历史数据级别设置为full最高级别,便于历史数据的追溯spring.activiti.history-level=full

声名为配置类 ActivitiConfig:

@Configuration//声名为配置类,继承Activiti抽象配置类public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource")public DataSource activitiDataSource() {return DataSourceBuilder.create().build();}@Beanpublic SpringProcessEngineConfiguration springProcessEngineConfiguration(PlatformTransactionManager transactionManager,SpringAsyncExecutor springAsyncExecutor) throws IOException {return baseSpringProcessEngineConfiguration(activitiDataSource(),transactionManager,springAsyncExecutor);}}

启动项目,会自动生成28张表:

act_ge_ 通用数据表,ge是general的缩写

act_hi_ 历史数据表,hi是history的缩写,对应HistoryService接口

act_id_ 身份数据表,id是identity的缩写,对应IdentityService接口

act_re_ 流程存储表,re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据

act_ru_ 运行时数据表,ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据

演示

一个简单的请假流程演示:

说明

其实开源社区有不少工作流的案例,但都不是自己想要的类型。由于工作需要,会逐步分享开发中所遇到的疑难问题和小细节,后面会开源一个简单的工作流完整实例,敬请关注。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。