0配置文件的读取

概述:ProcessEngineConfiguration对象代表一个Activiti流程引擎的全部配置,该类提供一系列创建ProcessEngineConfiguration实例的静态方法,这些方法用于读取和解析相应的配置文件,并返回ProcessEngineConfiguration的实例。出这些静态方法外,该类为其他可配置的引擎属性提供相应的setter和getter方法

此处用到的所有类关系如下图:
20191109164014242-1

一、读取默认的配置文件

说明

  • 在默认情况下,会直接到ClassPath下读取名为“activiti.cfg.xml”的Activiti配置文件,启动并获取名称为“processEngineConfiguration”的bean实例。
  • 此处使用的类是StandaloneProcessEngineConfiguration,它是processEngineConfiguration的子子类,因为processEngineConfiguration是抽象类,不能直接使用。
  1. 文件所在位置如下:
    20191109163210960-1
  2. 以下为一个默认的activiti.cfg.xml的配置文件:
    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    4. <!--流程引擎配置的bean-->
    5. <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    6. <!--"&amp"是转义符,代表"&"-->
    7. <property name="jdbcUrl" value="jdbc:(解析问题,将该括号去除)mysql://localhost:3306/act?useSSL=false&amp;characterEncoding=UTF-8" />
    8. <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    9. <property name="jdbcUsername" value="root" />
    10. <property name="jdbcPassword" value="123456" />
    11. <!--该属性有三个取值,说明如下:
    12. 1. false: false为默认值,设置为该值后, Activiti 在启动时, 会对比数据库表中保存的版本,
    13. 如果没有表或者版本不匹配时, 将在启动时抛出异常。
    14. 2. true: 设置为该值后, Activiti 会对数据库中所有的表进行更新, 如果表不存在, 则Activiti 会自动创建。
    15. 3. create-drop: Activiti 启动时, 会执行数据库表的创建操作, 在 Activiti 关闭时, 执行数据库表的删除操作。
    16. -->
    17. <property name="databaseSchemaUpdate" value="true" />
    18. </bean>
    19. </beans>
  3. 此时默认去获取该配置文件的代码如下:
    1. ProcessEngineConfiguration configuration =
    2. ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
    3. System.out.println(configuration.getJdbcUrl());
    4. //结果:jdbc:(解析问题,将该括号去除)mysql://localhost:3306/act

二、读取自定义的配置文件

  1. 配置文件位置:
    2019110916424167-1
  2. my-activiti1.xml配置文件内容和上面一样,只是文件名变了。
  3. my-activiti2.xml配置文件的bean的id变了,如下:
    20191109165257187-1
  4. 获取配置文件的方法是两个重载的方法,获取配置文件代码如下:
    1. //1.指定配置文件创建ProcessEngineConfiguration:
    2. //Activiti会到ClassPath下查找my-activiti1.xml的配置文件,并创建名称为"processEngineConfiguration的bean
    3. ProcessEngineConfiguration configuration1 =
    4. ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("my-activiti1.xml");
    5. System.out.println(configuration1.getJdbcUrl());
    6. //结果:jdbc: mysql://localhost:3306/act
    7. //2.指定配置文件创建ProcessEngineConfiguration,两个参数:第一个为配置文件位置,第二个为创建bean的名称
    8. ProcessEngineConfiguration configuration2 =
    9. ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("my-activiti2.xml","test");
    10. System.out.println(configuration2.getJdbcUrl());
    11. //结果:jdbc:(解析问题,将该括号去除)mysql://localhost:3306/act

三、读取输入流的配置

说明

  • ProcessEngineConfiguration中提供了一个createProcessEngineConfigurationFromInputStream方法,该方法使得Activiti配置文件的加载不在局限于项目的ClassPath,只要得到配置文件的输入流,即可创建ProcessEngineConfiguration。
  • 该方法也提供了两个重载的方法,可以知道在解析时bean的名称。下面例子只指定了文件位置
  1. 配置文件位置:
    20191109165113899-1
  2. 配置文件内容和默认配置的activiti.cfg.xml一样
  3. 获取配置文件见代码如下:
    1. //读取输入流的配置,file的根目录是项目名称的位置:此处即为first-activiti
    2. File file = new File("test/input-stream.xml");
    3. InputStream inputStream = new FileInputStream(file);
    4. ProcessEngineConfiguration configuration3 = ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream);
    5. System.out.println(configuration3.getJdbcUrl());
    6. //结果:jdbc:(解析问题,将该括号去除)mysql://localhost:3306/act

四、获取独立的流程引擎配置(不使用配置文件方式)

  1. 使用creatStandaloneInMemProcessEngineConfiguration方法创建ProcessEngineConfiguration,该方法返回的是StandaloneInMemProcessEngineConfiguration。使用该方法不用Activiti配置文件。并且该实例值只默认了如下两个属性(可看源码):
  • this.databaseSchemaUpdate = “create-drop”;
  • this.jdbcUrl = “jdbc:(解析问题,将该括号去除)h2:(解析问题,将该括号去除)mem:activiti”;
    代码如下

    1. ProcessEngineConfiguration configuration4 = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
    2. System.out.println(configuration4.getJdbcUrl());
    3. System.out.println(configuration4.getDatabaseSchemaUpdate());
    4. //结果:
    5. //jdbc: h2: mem:activiti
    6. //create-drop
  1. 使用createStandaloneProcessEngineConfiguration方法创建独立的配置,不需要使用配置文件,不过此方法返回的实例是StandaloneProcessEngineConfiguration,其所拥有的属性都是ProcessEngineConfiguration的默认的(可看ProcessEngineConfiguration源码)
    代码如下:

    1. ProcessEngineConfiguration configuration5 = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
    2. System.out.println(configuration5.getJdbcUrl());
    3. System.out.println(configuration5.getDatabaseSchemaUpdate());
    4. //结果:
    5. //jdbc:(解析问题,将该括号去除)h2:(解析问题,将该括号去除)tcp://localhost/~/activiti
    6. //false
上一篇:腌酸豆角,只放盐容易坏,65岁母亲教我3招,酸脆入味放一年不坏
下一篇:油炸花生米怎么做才酥脆?5步操作,4点技巧,越嚼越香的下酒菜