前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二节:Activiti6.0配置文件的读取

第二节:Activiti6.0配置文件的读取

作者头像
凡人飞
发布2020-09-20 20:23:26
8670
发布2020-09-20 20:23:26
举报
文章被收录于专栏:指缝阳光

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

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

一、读取默认的配置文件

说明

  • 在默认情况下,会直接到ClassPath下读取名为“activiti.cfg.xml”的Activiti配置文件,启动并获取名称为“processEngineConfiguration”的bean实例。
  • 此处使用的类是StandaloneProcessEngineConfiguration,它是processEngineConfiguration的子子类,因为processEngineConfiguration是抽象类,不能直接使用。
  1. 文件所在位置如下:
  1. 以下为一个默认的activiti.cfg.xml的配置文件:
代码语言:javascript
复制
<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-->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

		<!--"&amp"是转义符,代表"&"-->
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act?useSSL=false&amp;characterEncoding=UTF-8" />
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUsername" value="root" />
        <property name="jdbcPassword" value="123456" />

		<!--该属性有三个取值,说明如下:
            1. false: false为默认值,设置为该值后, Activiti 在启动时, 会对比数据库表中保存的版本,
                    如果没有表或者版本不匹配时, 将在启动时抛出异常。
            2. true: 设置为该值后, Activiti 会对数据库中所有的表进行更新, 如果表不存在, 则Activiti 会自动创建。
            3. create-drop: Activiti 启动时, 会执行数据库表的创建操作, 在 Activiti 关闭时, 执行数据库表的删除操作。
        -->
        <property name="databaseSchemaUpdate" value="true" />
    </bean>

</beans>
  1. 此时默认去获取该配置文件的代码如下:
代码语言:javascript
复制
ProcessEngineConfiguration configuration =
                ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
System.out.println(configuration.getJdbcUrl());
        
//结果:jdbc:mysql://localhost:3306/act

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

  1. 配置文件位置:
  1. my-activiti1.xml配置文件内容和上面一样,只是文件名变了。
  2. my-activiti2.xml配置文件的bean的id变了,如下:
  1. 获取配置文件的方法是两个重载的方法,获取配置文件代码如下:
代码语言:javascript
复制
//1.指定配置文件创建ProcessEngineConfiguration:
//Activiti会到ClassPath下查找my-activiti1.xml的配置文件,并创建名称为"processEngineConfiguration的bean
ProcessEngineConfiguration configuration1 =
                ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("my-activiti1.xml");
System.out.println(configuration1.getJdbcUrl());
//结果:jdbc:mysql://localhost:3306/act

//2.指定配置文件创建ProcessEngineConfiguration,两个参数:第一个为配置文件位置,第二个为创建bean的名称
ProcessEngineConfiguration configuration2 =
                ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("my-activiti2.xml","test");
System.out.println(configuration2.getJdbcUrl());
//结果:jdbc:mysql://localhost:3306/act

三、读取输入流的配置

说明

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

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

  1. 使用creatStandaloneInMemProcessEngineConfiguration方法创建ProcessEngineConfiguration,该方法返回的是StandaloneInMemProcessEngineConfiguration。使用该方法不用Activiti配置文件。并且该实例值只默认了如下两个属性(可看源码):
  • this.databaseSchemaUpdate = “create-drop”;
  • this.jdbcUrl = “jdbc:h2:mem:activiti”; 代码如下
代码语言:javascript
复制
ProcessEngineConfiguration configuration4 = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
System.out.println(configuration4.getJdbcUrl());
System.out.println(configuration4.getDatabaseSchemaUpdate());

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

//结果:
//jdbc:h2:tcp://localhost/~/activiti
//false

看《疯狂workflow讲义第二版》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、读取默认的配置文件
  • 二、读取自定义的配置文件
  • 三、读取输入流的配置
  • 四、获取独立的流程引擎配置(不使用配置文件方式)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档