前言

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="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 截止2019年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=8080
server.session-timeout=60server.tomcat.max-threads=100
server.tomcat.uri-encoding=UTF-8spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring-boot-activiti?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.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接口,存储流程实例和用户任务等动态数据

演示

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

说明

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

转载于:https://www.cnblogs.com/smallSevens/p/10386042.html

SpringBoot开发案例之整合Activiti工作流引擎相关推荐

  1. jbpm springboot mysql_SpringBoot开发案例之整合Activiti工作流引擎

    前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...

  2. SpringBoot开发案例之整合Dubbo提供者(一)

    既然是开发案例,显然不会扯那么多老婆舌,有不清楚这两个东东的请自行百度. 开发环境 JDK1.7.Maven.Eclipse.SpringBoot1.5.1.Dubbo2.8.4 项目结构 相关配置 ...

  3. SpringBoot开发案例之整合Dubbo分布式服务

    前言 在 SpringBoot很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了.在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用 ...

  4. SpringBoot开发案例之整合Dubbo提供者(二)

    为什么80%的码农都做不了架构师?>>>    大家有没有注意到,上一篇中提供者,暴露接口的方式?混搭.springboot本身接口实现使用了注解的方式,而Dubbo暴露接口使用的是 ...

  5. SpringBoot开发案例之整合Spring-data-jpa

    什么是spring-data 为了简化程序与数据库交互的代码,spring提供了一个现成的dao层框架,spring家族提供的spring-data适用于关系型数据库和nosql数据库 什么是jpa ...

  6. SpringBoot开发案例从0到1构建分布式秒杀系统

    前言 最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路.俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了部分秒杀场景 ...

  7. # SpringBoot 整合 Activiti 工作流框架

    SpringBoot 整合 Activiti 工作流框架 Activiti 介绍 Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调 ...

  8. Spring整合Activiti工作流

    代码地址如下: http://www.demodashi.com/demo/11911.html 一. 前期准备 安装必要的开发环境 eclipse/intellij+maven 3.5.x + to ...

  9. activiti工作流引擎入门教程

    activiti简介 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准. Activiti是一种轻量级,可嵌入的BPM引擎,而且 ...

最新文章

  1. Windows server 2003 关于DNS的配置以及区域复制测试
  2. java 手动线程调度_Java Thread 多线程 操作线程
  3. 小企业“银行存款”科目的核算内容包括哪些?
  4. 编程语言是从哪蹦出来的——大型伦理寻根现场
  5. 将MATLAB中的图像信息用到Vivado中
  6. AD20学习笔记4---网表导入及模块化布局设计
  7. Linux 内核打印级别
  8. .net关于app.config的使用 对于自己的类库
  9. 华硕固件,梅林固件,高恪固件等等有什么区别?
  10. WiseCloud成为全球首批Kubernetes官方认证平台产品-睿云智合
  11. bind 绑定标签的用法
  12. 奇迹MU服务端架设教程技术分享探究_奇迹架设技术_奇迹SF套装
  13. iozone测试文件系统IO性能
  14. J2SE-Java帝国的诞生
  15. 学生成绩管理管理系统
  16. 洋媳妇教育孩子的方法,令中国婆婆大开眼界 - 人人都是艺术
  17. java 组织机构代码_JAVA实现社会统一信用代码较验
  18. 双显示器扩展怎么设置上下扩展
  19. Eclipse使用Maven创建Web时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webap
  20. 如何绘制漂亮的Circos图

热门文章

  1. Entity Framework CodeFirst For Oracle[转]
  2. AIX 修 炼 之 路
  3. 解决screen Cannot open your terminal '/dev/pts/1'问题
  4. 递归神经网络不可思议的有效性
  5. 马尔科夫链和马尔科夫随机场
  6. [Rtsp]RTSP对实时摄像头视频流进行转换(FFmpeg+FFserver)
  7. Centos 安装 NodeJS
  8. 全国四分之三的光伏电站市场面临较大投资风险
  9. 基础数据结构-堆栈-拓展:行编辑
  10. Oracle存储过程语法