activiti学习笔记(一) 获取流程配置实例

activiti获取流程配置实例

流程配置的获取方法api

       流程配置的获取共有七种方法,但是只分为三类,一类是根据配置文件路径进行获取、一类是根据流文件获取、还有一类是构建一个空的实例,根据类的默认属性来获取

 /**
   * @author 郑小康
   * 流程引擎配置共有七种方法
   * 方法1 方法2调用的实际是方法3
   * 方法4 调用其实就是方法5
   * 方法6 和方法7是相同
   * */

  //方法1
  //实际调用的方法三只不过默认beanName是processEngineConfiguration,resource为activiti.cfg.xml
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromResourceDefault() {
    return createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration");
  }

  //方法2
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromResource(String resource) {
    return createProcessEngineConfigurationFromResource(resource, "processEngineConfiguration");
  }

  //方法3
  //主要实现过程获取资源位置路径,以及beanName来获取对应的ProcessEngineConfiguration实例
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromResource(String resource, String beanName) {
    return BeansConfigurationHelper.parseProcessEngineConfigurationFromResource(resource, beanName);
  }

  //方法4
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromInputStream(InputStream inputStream) {
    return createProcessEngineConfigurationFromInputStream(inputStream, "processEngineConfiguration");
  }

  //方法5
  //同方法一二三相同,只不过是以文件流来创建ProcessEngineConfiguration实例
  public static ProcessEngineConfiguration createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName) {
    return BeansConfigurationHelper.parseProcessEngineConfigurationFromInputStream(inputStream, beanName);
  }

  //方法6
  //创建一个实例,在即再手动注入数据库相关属性通过其父类ProcessEngineConfigurationImpl来进行实现
  public static ProcessEngineConfiguration createStandaloneProcessEngineConfiguration() {
    return new StandaloneProcessEngineConfiguration();
  }

  //方法7
  //继承了StandaloneProcessEngineConfiguration,只是在这个基础上设置了 databaseSchemaUpdate的属性和jdbcUrl
  public static ProcessEngineConfiguration createStandaloneInMemProcessEngineConfiguration() {
    return new StandaloneInMemProcessEngineConfiguration();
  }

流程配置的bean方法配置

       第一种和第二种方法都是都是需要在配置文件中创建对应的标签元素,定义属性值,结构如下:

<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="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="driverClassName">
			<value>com.mysql.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:mysql://127.0.0.1:3306/activiti-study?useUnicode=true&characterEncoding=UTF-8
			</value>
		</property>
		<property name="username">
			<value>root</value>
		</property>
		<property name="password" value="" />
	</bean>

	<bean id="processEngineConfigurationxQ"
		class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<property name="dataSource" ref="dataSource" />
		<property name="databaseSchemaUpdate" value="true" />
	</bean>

</beans>

流程配置的获取过程

    下面展示一些其具体获取过程,测试方法一是根据文件路径获取、测试方法二是根据文件流获取、测试方法三是通过set注入

private final String cfgXml =  System.getProperty("user.dir") + "/activiti/config/activiti.cfg.xml";
	//方法1 2 3 的实现方式
	@Test
	public void createProcessEngineConfigurationFromResource() {
		ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(cfgXml);
		System.out.println(processEngineConfiguration);
		ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
		System.out.println(processEngine);

		processEngineConfiguration =ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(cfgXml,"processEngineConfiguration");
		System.out.println(processEngineConfiguration);
		processEngine=processEngineConfiguration.buildProcessEngine();
		System.out.println(processEngine);
	}

	//方法4 和 5实现的方法方式
	@Test
	public void createProcessEngineConfigurationFromInputStream() throws IOException {
		InputStream in = new FileInputStream(cfgXml);
		ProcessEngineConfiguration configurationFromInputStream = ProcessEngineConfiguration
				.createProcessEngineConfigurationFromInputStream(in);
		System.out.println(configurationFromInputStream);
	}

	//方法6 和 7实现的方式
	@Test
	public void createStandaloneInMemProcessEngineConfiguration() {
		ProcessEngineConfiguration pec = ProcessEngineConfiguration
				.createStandaloneInMemProcessEngineConfiguration();
		pec.setJdbcDriver("com.mysql.jdbc.Driver");
		pec.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/activiti-study?useUnicode=true&characterEncoding=UTF-8");
		pec.setJdbcUsername("root");
		pec.setJdbcPassword("");
		System.out.println(pec);
	}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一“技”之长

Swift专题讲解二十——扩展 原

        Swift中的扩展与Objective-C中的类别功能相似,扩展可以为一个已有的类、结构体、枚举或者协议添加新的属性或方法,与Objective...

322
来自专栏余林丰

Spring AOP高级——源码实现(1)动态代理技术

jdk1.8.0_144   在正式进入Spring AOP的源码实现前,我们需要准备一定的基础也就是面向切面编程的核心——动态代理。 动态代理实际上也是一种...

20510
来自专栏吴伟祥

spring为何要注入接口,而注入接口的实现类就会报错

  首先说明,注入的对象确实为实现类的对象。(并不是实现类的代理对象,注入并不涉及代理)

381
来自专栏老马说编程

(86) 动态代理 / 计算机程序的思维逻辑

前面两节,我们介绍了反射和注解,利用它们,可以编写通用灵活的程序,本节,我们来探讨Java中另外一个动态特性 - 动态代理。 动态代理是一种强大的功能,它可以...

1766
来自专栏算法channel

设计模式|结构图汇总

1 创建型模式 1 工厂方法模式 ? 2 抽象工厂模式 ? 3 单例模式 ? 4 建造者模式 ? 5 原型模式 ? 2 结构型模式 1 适配器模式 ? 2 装饰...

3164
来自专栏java学习

面试题32(关于修饰符的使用?)

下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问? A private B 无修饰符 C public D protected 考点:考察求职...

2727
来自专栏CodingBlock

小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理

前言:插件化在Android开发中的优点不言而喻,也有很多文章介绍插件化的优势,所以在此不再赘述。前一阵子在项目中用到 DroidPlugin 插件框架 ,近...

2136
来自专栏架构之路

Java 中冷门的 synthetic 关键字原理解读

看JAVA的反射时,看到有个synthetic ,还有一个方法isSynthetic() 很好奇,就了解了一下: 1.定义 Any constructs int...

3095
来自专栏个人随笔

论 Java 的访问权限

Java中成员访问权限 Java中的访问权限控制符有四个: 作用域_____当前类____同一package___子孙类____其他package publi...

3478
来自专栏菜鸟致敬

一分钟带你读懂Python中的三类特殊方法

在Python中有着三类特殊方法:静态方法、类方法以及抽象方法。今天我们来谈谈其中的这三类特殊方法。

422

扫描关注云+社区