获取Activiti流程引擎配置信息

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

使用 createProcessEngineConfigurationFromResourceDefault 方法

ProcessEngineConfiguration 的createProcessEngineConfigurationFromResourceDefault 方法,使用 Activiti 默认的方式创建 ProcessEngineConfiguration 的实例。这里所说的默认方式,是指由 Activiti 决定读取配置文件的位置、文件的名称和配置 bean 的名称这些信息。Activiti 默认到 ClassPath 下读取名为“activiti.cfg.xml”的 Activiti 配置文件,启动并获取名称为“processEngineConfiguration”的 bean 的实例。

解析 XML 与创建该 bean 实例的过程,由 Spring 代为完成。只需要指定 Spring 的 XML 配置文件,创建相应的BeanFactory 实 例 , 再通过 getBean(bean 名 称 ) 方法即可获取相应对象的实 例 。ProcessEngineConfiguration 使用 Spring 框 架 的 DefaultListableBeanFactory 作 为BeanFactory。

// 使用Activiti 默认的方式创建 ProcessEngineConfiguration
ProcessEngineConfiguration config = ProcessEngineConfiguration
            .createProcessEngineConfigurationFromResourceDefault();

Activiti 默认到 ClassPath 下读取 activiti.cfg.xml 文件,如果找不到该配置文件则抛出 FileNotFoundException,如果找不到名称为 processEngineConfiguration的 bean,则抛出 org.springframework.beans.factory.NoSuchBeanDefinitionException。

以下为activiti.cfg.xml 的内容,所使用的ProcessEngineConfiguration为StandaloneProcessEngineConfiguration 类,ProcessEngineConfiguration 为抽象类,不能直接作为 bean 的 class 进行配置。

<!-- 只配置相应的数据库属性 -->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/act" />
    <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUsername" value="root" />
    <property name="jdbcPassword" value="123456" />
</bean>

使用 createProcessEngineConfigurationFromResource 方法

默认情况下 Activiti 将到 ClassPath 下读取 activiti.cfg.xml 文件,如果希望 Activiti 读取另外名称的配置文件 , 可以使用createProcessEngineConfigurationFromResource 方法创建 ProcessEngineConfiguration,该方法参数为一个字符串对象,调用该方法时,需要告诉 Activiti 配置文件位置。

// 指定配置文件创建 ProcessEngineConfiguration
ProcessEngineConfiguration config = ProcessEngineConfiguration
            .createProcessEngineConfigurationFromResource("activiti-test.xml");

执行以上代码Activiti 会到 ClassPath 下查找 activiti-test.xml 配置文件,并创建名称为“processEngineConfiguration”的 bean。

扫描二维码关注公众号,回复: 3089510 查看本文章

ProcessEngineConfiguration中还 有一个createProcessEngineConfigurationFromResource 的重载方法,该方法需要提供两个参数来创建 ProcessEngineConfiguration,第一个参数为 Activiti 配置文件的位置,第二个参数为 创 建 bean 的名称 。

// 指定配置文件创建 ProcessEngineConfiguration
ProcessEngineConfiguration config = ProcessEngineConfiguration
        .createProcessEngineConfigurationFromResource( "activiti-test.xml", "test");
System.out.println(config.getProcessEngineName());

执行以上代码时Activiti 需要到 ClassPath 下查找 my-activiti2.xml 文件,并且创建名字为 “ test ” 的bean 。 如果找不到 名 称为 “ test ” 的bean , 则抛出NoSuchBeanDefinitionException,

使用 createProcessEngineConfigurationFromInputStream 方法

置文件的加 载不再局限于项 目 的 ClassPath , 只要得到配置文件的输入流 , 即可创 建ProcessEngineConfiguration。同样的,createProcessEngineConfigurationFromInputStream 方法也提供了两个重载的 方 法 , 可 以 指 定 在 解 析 XML 时 bean 的 名 称 。ProcessEngineConfiguration 中 提 供了一个createProcessEngineConfigurationFromInputStream 方法,该方法使得 Activiti 配。

File file = new File("resource/activiti-test.xml");
InputStream inputStream = new FileInputStream(file); // 得到文件输入流
// 使用 createProcessEngineConfigurationFromInputStream 方法创建ProcessEngineConfiguration
ProcessEngineConfiguration config = ProcessEngineConfiguration
            .createProcessEngineConfigurationFromInputStream(inputStream);

使用 createStandaloneInMemProcessEngineConfiguration 方法

使用该方法创建 ProcessEngineConfiguration,并不需要指定任何参数,该方法直接返回一个 StandaloneInMemProcessEngineConfiguration 实 例 , 该 类 为ProcessEngineConfiguration 的子类。使用该方法创建 ProcessEngineConfiguration,并不会读取任何的 Activiti 配置文件,这样意味着流程引擎配置的全部属性,都会使用默认值,与其他子类不一样的是,创建的 StandaloneInMemProcessEngineConfiguration 实例,只特别指定了 databaseSchemaUpdate 属性和 jdbcUrl 属性。

ProcessEngineConfiguration config = ProcessEngineConfiguration
            .createStandaloneInMemProcessEngineConfiguration();
System.out.println(config.getDatabaseSchemaUpdate()); // 值为 create-drop
System.out.println(config.getJdbcUrl()); // 值为 jdbc:h2:mem:activiti

该方法不需要读取任何的配置文件,ClassPath 下也没有任何的 Activiti 配置文件,如果需要改变相关的配置,可以调用 ProcessEngineConfiguration 中相应的 setter 方法进行修改。

该方法返 回 的 是 一 个org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration 实例,如果使用配置文件的方式创建 ProcessEngineConfiguration,可以将该类配置为 bean 的 class,但使用时需要注意该类中属性的默认值。

使用 createStandaloneProcessEngineConfiguration 方法

与StandaloneInMemProcessEngineConfiguration类似的是,createStandaloneProcessEngineConfiguration 方法返回的是一个StandaloneProcessEngineConfiguration 实例,并且需要注意的是,StandaloneInMemProcessEngineConfiguration 类是StandaloneProcessEngineConfiguration 类 的子类 。

ProcessEngineConfiguration config = ProcessEngineConfiguration
            .createStandaloneProcessEngineConfiguration();
System.out.println(config.getDatabaseSchemaUpdate()); // 默认值为 false
System.out.println(config.getJdbcUrl()); // 默认值为 jdbc:h2:tcp://localhost/~/activiti

这里需要注意的是,父类 StandaloneProcessEngineConfiguration 的databaseSchemaUpdate 和 jdbcUrl 属 性 值 分 别 为 “ false ” 和 “ jdbc:h2:tcp://localhost/~/activiti ” , 而其子类StandaloneInMemProcessEngineConfiguration 的这两个属性值分别为 “create-drop” 和 “jdbc:h2:mem:activiti”。

相关文章

Activiti中的流程配置文件

Activiti数据源配置

猜你喜欢

转载自blog.csdn.net/lxxiang1/article/details/82470220