简介
最近几天工作中用到acitiviti工作流,就简单学习下,做了一个记录,俗话说得好,好记性不如烂笔头,话不多说,给大家分享一下。
Activiti是什么?为什么要用它?
(百度这么说)
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。
创始人Tom Baeyens是JBoss jBPM的项目架构师,以及另一位架构师Joram Barrez,一起加入到创建Alfresco这项首次实现Apache开源许可的BPMN 2.0引擎开发中来。
Activiti是一个独立运作和经营的开源项目品牌,并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,以便这个项目可以广泛被使用,同时促进Activiti BPM引擎和BPMN 2.0的匹配,该项目现正由OMG通过标准审定。 加入Alfresco Activiti项目的是VMware的SpringSource分支,Alfresco的计划把该项目提交给Apache基础架构,希望吸引更多方面的BPM专家和促进BPM的创新。
用我们自己的话来说就是,使用工作流能够更简介的去处理流程相关的业务。
- 首先新建一个springboot项目
使用idea工具new一个maven项目,然后自定义一下项目名称
- 引入我们所需的jar包
最重要的就是springboot启动器,mysql驱动以及我们的activiti工作流jar包
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.komlin</groupId>
<artifactId>SpringBootDemo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.28</version>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- activiti 工作流 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
<!--常用工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
</dependencies>
</project>
- 新建yaml文件来配置我们的项目(数据库以及activiti)
server:
port: 8890
tomcat:
uri-encoding: UTF-8
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: root
activiti:
#设置为不校验
check-process-definitions: false
database-schema-update: true
#false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果版本不匹配时,将在启动时抛出异常。
#true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
#create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
#drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。
history-level: full
#保存历史数据级别设置为full最高级别,便于历史数据的追溯
#none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
#activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
#audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
#full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
- 在项目根目录新建一个application类运行我们的项目(注意:一定不能与项目中的其他文件平级)
package com.komlin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Description:启动类
* date: 2020/7/9 8:56
*
* @author mt
* @since JDK 1.8
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
System.out.println("(♥◠‿◠)ノ゙ 启动成功 ლ(´ڡ`ლ)゙\n" +
" _ __ _ _ \n" +
" | |/ / | (_) \n" +
" | ' / ___ _ __ ___ | |_ _ __ \n" +
" | < / _ \\| '_ ` _ \\| | | '_ \\ \n" +
" | . \\ (_) | | | | | | | | | | |\n" +
" |_|\\_\\___/|_| |_| |_|_|_|_| |_|\n" );
}
}
那么这时候问题就来了,在我门启动项目的时候会报错,如下图
各位百度一下就可以知道出现这个错误的原因,我就给大家讲一下解决这个问题的方法
修改我们启动类上面的SpringBootApplication注解,如下图
接下来启动项目,项目启动完成,我们再去看我们的数据库,这个时候就会发现activiti里面的28张表在项目启动成功的时候已经自动创建完成,这是因为我们在配置文件中设置的database-schema-update: true,各位可以往上面看我的配置文件详解,大家就会明白
每个表的含义就不一一解释了,感兴趣的可以百度了解了解
到现在为止,springboot集成activiti就已经是完成了~~