记录一下工作流的在Springboot中的使用,,顺便写个demo,概念,什么东西的我就不解释了,如有问题欢迎各位大佬指导一下。
1.创建springboot项目后导入依赖
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency>
添加配置之后再springboot启动类后面加上一行代码否则启动时会报错
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
添加数据源以及activiti的配置
spring: activiti: database-schema-update: drop?create //默认为false,activiti在启动的时候会对比数据库中的表中保存的版本,如果不一样会抛出异常 // true activiti会对数据库中的表进行更新操作,如果表不存在,则自动创建 // create_drop 在activiti启动的时候创建表,关闭时删除表,必须手动关闭 // drop-create 在启动的时候先删除表后再创建新的表 check-process-definitions: false datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC username: root password: root
2.初始化activiti表
这里一共有3种方式去创建
第一种
@Test public void initTables() { //创建数据源 // DriverManagerDataSource dataSource=new DriverManagerDataSource(); // dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/test"); // dataSource.setUsername("root"); // dataSource.setPassword("root"); // 创建流程引擎的配置 ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createStandaloneProcessEngineConfiguration(); configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver"); configuration.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC"); configuration.setJdbcUsername("root"); configuration.setJdbcPassword("root"); // configuration.setDataSource(dataSource); /** * ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE 如果数据库里面没有activit的表,也不会创建 * ProcessEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP 创建表,使用完之后删除 * ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE 如果数据库里面没有表,就创建 * * dorp-create 代表如果数据库里面有表,那么先删除再创建 * */ //配置表的初始化的方式 configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); //得到流程引擎 ProcessEngine processEngine=configuration.buildProcessEngine(); System.out.println(processEngine); }
第二种配置activiti.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd <mark>本文来源gaodaimacom搞#代%码@网-</mark> http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true%26nullCatalogMeansCurrent=true%26characterEncoding=utf8%26useSSL=false%26serverTimezone=UTC"></property> <property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" value="root"></property> <!-- flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。 true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。 create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。 drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。 --> <property name="databaseSchemaUpdate" value="drop-create"></property> </bean> </beans>