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 条评论
登录 后参与评论

相关文章

来自专栏专注 Java 基础分享

虚拟机类加载机制

虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「...

4527
来自专栏Java技术栈

设计模式之动态代理模式实战

昨天分享了静态代理的概念及存在的缺点,所以今天讲的动态代理模式十分重要。动态代理在我们工作当中应用相当广泛,如Srping AOP就是动态代理的在开源框架的比较...

3374
来自专栏雪胖纸的玩蛇日常

老男孩Python全栈开发(92天全)视频教程 自学笔记05

1824
来自专栏JMCui

Redis学习一(基础入门).

一、前言     Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、key-Value 的数据库、并提供多...

3735
来自专栏Python、Flask、Django

PHP htmlspecialchars_decode()函数

1084
来自专栏无题

堆外内存概要

DirectByteBuffer JDK中使用 DirectByteBuffer对象来表示堆外内存,每个 DirectByteBuffer对象在初始化时,都会创...

2304
来自专栏Java技术分享圈

杨老师课堂之JavaSe 部分面试题

​ JVM 是 JavaVirtual Machine 的缩写,全称是 Java 虚拟机。Java 语言的一个非常重要的 特性就是跨平台性,而 Java 虚...

693
来自专栏好好学java的技术栈

并发基础篇(二):Thread类的API总结

1104
来自专栏偏前端工程师的驿站

Java魔法堂:类加载机制入了个门

一、前言                                 当在CMD/SHELL中输入 $ java Main<CR><LF> 后,Main程序...

1927
来自专栏眯眯眼猫头鹰的小树杈

猫头鹰的深夜翻译:理解java的classloader

Java ClassLoader是java运行系统中一个至关重要但是经常被忽略的组件。它负责在运行时寻找并加载类文件。创建自定义的ClassLoader可以彻底...

1224

扫码关注云+社区