学习篇-Activiti-08-流程引擎配置

一、流程引擎

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5JaiaPO-1594281768589)(/Users/yangdong/笔记整理/Activiti/activiti-imgs/image-20200709150824116.png)]
ProcessEnigne引擎实例可以获取到的Service
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OFw3uQrn-1594281768591)(/Users/yangdong/笔记整理/Activiti/activiti-imgs/image-20200709150726482.png)]

  • ProcessEnigneConfiguration【流程引擎配置】

    • 查找并解析xml配置文件activiti.cfg.xml
    • 提供多个静态方法创建配置对象
    • 实现几个基于不同场景的子类,配置方式非常灵活
  • activiti.cfg.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           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">
    
      <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="" />
        <property name="databaseSchemaUpdate" value="create-up"/>
      </bean>
    </beans>
    
  • 提供多个静态方法创建引擎对象 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lObibM7c-1594281768593)(../activiti-imgs/image-20200627190132924.png)]

    // 根据加载默认Resource目录下的资源文件,创建流程引擎
    createProcessEngineConfigurationFromResourceDefault()
    // 根据指定路径下的资源文件,创建流程引擎  
    createProcessEngineConfigurationFromResource(String)
    // 根据指定路径下的资源文件和注入的配置类名称,创建流程引擎  
    createProcessEngineConfigurationFromResource(String, String)
    // 根据文件流读取资源文件,创建流程引擎 
    createProcessEngineConfigurationFromInputStream(InputStream)
    // 根据文件流读取资源文件和注入的配置类名称,创建流程引擎 
    createProcessEngineConfigurationFromInputStream(InputStream, String)
    // 创建基于内存数据库的流程引擎【h2内存数据库的配置需要手动设置】   
    createStandaloneProcessEngineConfiguration()
    // 创建基于内存数据库的流程引擎【h2内存数据库的配置已经默认】  
    createStandaloneInMemProcessEngineConfiguration()
    
  • 同时也可以通过ProcessEngines这个抽象类构建引擎实例
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tKaHEjNH-1594281768595)(../activiti-imgs/image-20200709153339249.png)]

  • 多个子类适配不同场景

    • 依赖

      <dependency>
          <groupId>org.activiti</groupId>
          <artifactId>activiti-spring</artifactId>
          <version>6.0.0</version>
      </dependency>
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21V60Fn0-1594281768597)(../activiti-imgs/image-20200629110059545.png)]

    • 比较重要的相关类

      • ProcessEngineConfigurationImpl
      • StandaloneProcessEngineConfiguration
      • SpringProcessEngineConfiguration【在activiti-engine是没有该类的,只有activiti-spring才会有该类】
二、具体测试代码
package com.laogoubi.config;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

/**
 * @ClassName ConfigTest
 * @Description 创建流程引擎
 * @Author eastern
 * @Date 2020/6/27 下午9:56
 * @Version 1.0
 **/
public class ConfigTest {

	private static final Logger logger = LoggerFactory.getLogger(ConfigTest.class);


	/**
	 * 读取默认的配置文件
	 */
	@Test
	public void testConfig4FromResourceDefault(){
		// 读取src/main/resources/activiti.cfg.xml
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
		logger.info("processEngineConfiguration = {}", processEngineConfiguration);
		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		logger.info("processEngine = {}", ToStringBuilder.reflectionToString(processEngine, ToStringStyle.JSON_STYLE));
	}

	/**
	 * 读取指定的配置文件
	 */
	@Test
	public void testConfig4FromResource(){
		// 这边的activiti.cfg.xml可以是自定义文件路径
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
		logger.info("processEngineConfiguration = {}", processEngineConfiguration);
		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		logger.info("processEngine = {}", ToStringBuilder.reflectionToString(processEngine, ToStringStyle.JSON_STYLE));
	}

	/**
	 * 该方法需要提供两个参数来创建 ProcessEngineConfiguration:
	 * 第一个参数为 Activiti 配置文件的位置;
	 * 第二个参数为创建 bean 的名称
	 * 如果找不到名称为“test”的bean ,则抛出 NoSuchBeanDefinitionException
	 */
	@Test
	public void testConfig4FromResourceAbeanName(){
		// 这边的activiti.cfg.xml可以是自定义文件路径
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "test");
		logger.info("processEngineConfiguration = {}", processEngineConfiguration);
		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		logger.info("processEngine = {}", ToStringBuilder.reflectionToString(processEngine, ToStringStyle.JSON_STYLE));
	}


	/**
	 * 读取输入流配置
	 */
	@Test
	public void testConfig4FrominputStream() throws FileNotFoundException {

		// 读取文件
		File file = new File("activiti.cfg.xml");

		// 得到文件输入流
		InputStream inputStream = new FileInputStream(file);

		// 通过文件流创建
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream);
		logger.info("processEngineConfiguration = {}", processEngineConfiguration);

		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		logger.info("processEngine = {}", ToStringBuilder.reflectionToString(processEngine, ToStringStyle.JSON_STYLE));
	}


	/**
	 *  使用该方法创建 ProcessEngineConfiguration,
	 * 	并不会读取任何 Activiti 配置文件,
	 * 	这意味着流程引擎配置的全部属性都会使用默认值。
	 * 	与其他子类不一样的是,创建的 StandalonelnMemProcessEngineConfiguration 实例,
	 * 	只特别指定了 databaseSchemaUpdate 属性 和 jdbcUrl 属性,分别为create-drop 和 jdbc:h2:mem:activiti
	 * 	StandalonelnMemProcessEngineConfiguration 类是 StandaloneProcessEngineConfiguration 类的子类
	 */
	@Test
	public void testConfig4eStandaloneInMem(){
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
		logger.info("processEngineConfiguration = {}", processEngineConfiguration);
		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
		logger.info("processEngine = {}", processEngine);
	}


	/**
	 * 	直接返回StandaloneProcessEngineConfiguration 实例
	 *	new StandaloneProcessEngineConfiguration();
	 *	 databaseSchemaUpdate 属性 和 jdbcUrl 属性,分别为false 和 jdbc:h2:tcp://localhost/~/activiti
	 */
	@Test
	public void testConfig4Standalone(){
		ProcessEngineConfiguration processEngineConfiguration =
				ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();

		logger.info("processEngineConfiguration = {}", ToStringBuilder.reflectionToString(processEngineConfiguration, ToStringStyle.JSON_STYLE));
		// 获取流程引擎对象
		ProcessEngine processEngine = processEngineConfiguration
				.setDatabaseSchemaUpdate(ProcessEngineConfiguration
						.DB_SCHEMA_UPDATE_TRUE)
				.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
				.buildProcessEngine();
		logger.info("processEngine = {}", processEngine);
	}

	/**
	 * 通过ProcessEngines获取实例
	 */
	@Test
	public void testConfig4ProcessEngines(){

		// 获取流程引擎对象
		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
		logger.info("processEngine = {}", processEngine);

	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值