整个activiti6的搭建都是在spring boot2之上的,首先贴一下pom:
<dependencies> <!-- 这是activiti需要的最基本的核心引擎 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>6.0.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.11</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.3.176</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency> <!-- alibaba的druid数据库连接池 --> <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency> </dependencies>
引擎对象创建的方法,activiti给出了6中,我这记录了其中三种:
首先是读取activiti默认配置文件(activiti.cfg.xml)的默认创建方式,即基于H2内存数据库:
<!-- 1 基于H2内存数据库 的流程引擎配置,也是在什么都没配置时的默认配置--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000;MVCC=TRUE" /> <property name="jdbcDriver" value="org.h2.Driver" /> <property name="jdbcUsername" value="sa" /> <property name="jdbcPassword" value="" /> </bean>
这里建的测试方法:
//1基于默认的引擎配置方式,基于默认xml配置与内存H2数据库 @Test public void testConfig1(){ ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResourceDefault(); LOGGER.info("configuration = {}",configuration); }
接着通过MySQL创建引擎对象,同样用到的是 .createProcessEngineConfigurationFromResourceDefault()方法
不过配置文件需要修改为:
<!-- StandaloneInMemProcessEngineConfiguration里面databaseSchemaUpdate默认为 “create-drop”,即用时自动创建表,关闭时自动删除表(ps:对应库为空库,中必须无表) --> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti6unit?useUnicode=true&characterEncoding=utf-8&useSSL=false" /> <property name="jdbcDriver" value="com.mysql.jdbc.Driver" /> <property name="jdbcUsername" value="root" /> <property name="jdbcPassword" value="root" /> <!--默认设置--> <!--<property name="databaseSchemaUpdate" value="create-drop" />-->
同样的:
@Test public void testConfig1(){ //创建引擎 ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResourceDefault(); LOGGER.info("configuration = {}",configuration); //获取引擎 ProcessEngine processEngine = configuration.buildProcessEngine(); LOGGER.info("获取流程引擎 {}",processEngine.getName()); //关闭引擎 processEngine.close(); }
以上同属一种方法实现的创建。
接着是直接创建流程对象的方式:
//2直接创建引擎的方式,基于独立的流程引擎对象 @Test public void testConfig2(){ ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createStandaloneInMemProcessEngineConfiguration(); LOGGER.info("configuration = {}",configuration); //configuration = org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration@1a84f40f } //如果是根据资源文件去加载的,那么他会通过spring去解析;如果我们默认创建一个独立的,那么他只是new出一个对象 //所以test1、2 一个是依赖spring的一个是不依赖spring的,展示用内存数据库,但是生产时都用spring配置来构造引擎的
这种方式不需要去编写资源文件。
第三种方法是通过读取指定资源文件的方式来创建流程对象(这里给指定资源文件取名为activiti_druid.cfg.xml):
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"> <!-- 这里设为true就不会在结束时删除表 --> <property name="databaseSchemaUpdate" value="true" /> <!-- 使用连接池 --> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:mysql://localhost:3306/activiti6unit?useUnicode=true&characterEncoding=utf-8&useSSL=false" /> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="initialSize" value="1" /> <property name="maxActive" value="10" /> <property name="filters" value="stat,slf4j"/> </bean>
测试类:
@Test public void testConfig2(){ //创建引擎,这里使用的不是默认的配置文件了所以需要改变获取方法 ProcessEngineConfiguration configuration = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti_druid.cfg.xml"); LOGGER.info("configuration = {}",configuration); //获取引擎 ProcessEngine processEngine = configuration.buildProcessEngine(); LOGGER.info("获取流程引擎 {}",processEngine.getName()); //关闭引擎 processEngine.close(); }