博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activiti5第八弹,ProcessEngineConfiguration和ProcessEngine
阅读量:6992 次
发布时间:2019-06-27

本文共 6733 字,大约阅读时间需要 22 分钟。

ProcessEngineConfiguration

package org.mpc.final_activiti;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import org.activiti.engine.ProcessEngineConfiguration;import org.junit.Test;public class ProcessEngineConfigurationTest {	@Test	public void test() throws FileNotFoundException {		// 使用activiti默认的方式创建ProcessEngineConfiguration		ProcessEngineConfiguration				.createProcessEngineConfigurationFromResourceDefault();		// 指定配置文件创建ProcessEngineConfiguration		ProcessEngineConfiguration				.createProcessEngineConfigurationFromResource("activiti.cfg.xml");		// 指定配置文件、ProcessEngineConfiguration在xml中的名称后来创建ProcessionEngineConfiguration		/**		 * 		 * 上面的两种方法都是调用的第三种方法:p1内部自动指定了activiti.cfg.xml		 * processEngineConfiguration p2内部自动指定了processEngineConfiguration		 * 		 * */		ProcessEngineConfiguration				.createProcessEngineConfigurationFromResource(						"activiti.cfg.xml", "processEngineConfiguration");		// 不使用默认的classresourceloader,而是通过定义文件的形式来创建ProcessEngineConfiguration		File file = new File("src/main/resource/activiti.cfg.xml");		InputStream in = new FileInputStream(file);		ProcessEngineConfiguration				.createProcessEngineConfigurationFromInputStream(in);		// 在使用过后,流会自动关闭		// 在流方式创建ProcessEngineConfiguration方式中也可以制定bean的名称		in = new FileInputStream(file);		ProcessEngineConfiguration				.createProcessEngineConfigurationFromInputStream(in,						"processEngineConfiguration");		// 创建createStandaloneProcessEngineConfiguration 不会读取任何的外部配置文件		// 所有属性都要在这个configuration中配置,而且很多属性都有默认值		ProcessEngineConfiguration p4 = ProcessEngineConfiguration				.createStandaloneProcessEngineConfiguration();		System.out.println(p4.getDatabaseSchemaUpdate());		System.out.println(p4.getDatabaseType());		System.out.println(p4.getJdbcUrl());		System.out.println(p4.getMailServerHost());		// 创建createStandaloneInMemProcessEngineConfiguration		// 他是前者createStandaloneProcessEngineConfiguration的子类,同样部会读取任何的外部配置文件,但是默认属性的值于父类不同		// 一般用在测试过程中使用		/**		 * 		 * public class StandaloneInMemProcessEngineConfiguration extends		 * StandaloneProcessEngineConfiguration {		 * 		 * public StandaloneInMemProcessEngineConfiguration() {		 * this.databaseSchemaUpdate = DB_SCHEMA_UPDATE_CREATE_DROP;		 * this.jdbcUrl = "jdbc:h2:mem:activiti"; } }		 * */		ProcessEngineConfiguration p5 = ProcessEngineConfiguration				.createStandaloneInMemProcessEngineConfiguration();		System.out.println(p5.getDatabaseSchemaUpdate());		System.out.println(p5.getJdbcUrl());	}}

ProcessEngine

package org.mpc.final_activiti;import java.net.URL;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.activiti.engine.ProcessEngineInfo;import org.activiti.engine.ProcessEngines;import org.junit.Test;public class ProcessEngineTest {	@Test	public void test() {		// 通过ProcessEngineConfiguration来创建ProcessEngine		ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration				.createProcessEngineConfigurationFromResourceDefault();		ProcessEngine p1 = processEngineConfiguration.buildProcessEngine();		/**		 * 		 * ProcessEngines 的 init 方法		 * 该方法会读取Activiti的默认配置文件,然后创建ProcessEngine实例缓存到Map中		 * 		 * */		// 初始化ProcessEngines的Map		// 再加载Activiti默认的配置文件 classpath 下的 activiti.cfg.xml 文件		// 如果是与spring整合了,则读取 classpath 下的 activiti-context.xml文件		ProcessEngines.init();		Map
map = ProcessEngines.getProcessEngines(); System.out.println(map.size()); System.out.println(map.get("default")); ProcessEngine p2 = map.get("default"); /** * * registerProcessEngine 和 unregister 方法 * * */ /** * * 在使用processEngineConfiguration.buildProcessEngine()以及ProcessEngines. * init()的时候,都会默认调用registerProcessEngine * * 所以这里在inti之后输出map的size(),是1 * */ System.out.println(map.size()); /** * * 然后移除了这个engine * * */ ProcessEngines.unregister(p2); // 把p1注册进去后输出一下map的大小 ProcessEngines.registerProcessEngine(p1); System.out.println(map.size()); Iterator
> ito = map.entrySet().iterator(); Entry
en = ito.next(); // 这里的key是default,init 和 buildprocessengine 创建的ProcessEngine的名称都是default System.out.println("key---->" + en.getKey() + "value-------->" + en.getValue()); System.out.println(); /** * * retry()方法 * 如果Activiti在加载配置文件的时候出现异常,则可以调用ProcessEngines的retry方法重新加载配置文件 * ,重新创建ProcessEngine实例并加入到Map中 * * */ // 获得资源文件的URL实例 ClassLoader loader = ProcessEngines.class.getClassLoader(); URL url = loader.getResource("activiti.cfg.xml"); ProcessEngines.unregister(p1); Map
map1 = ProcessEngines.getProcessEngines(); System.out.println("retry之前的map1的大小------" + map1.size()); // 得到流程实例保存对象 ProcessEngineInfo info = ProcessEngines.retry(url.toString()); System.out.println(info.toString() + "<----------------------------->" + info.getException() + "<>" + info.getName() + "<>" + info.getResourceUrl()); map1 = ProcessEngines.getProcessEngines(); System.out.println("retry之后的map1的大小------" + map1.size()); /** * * destroy()方法 对ProcessEngines所维护的所有ProcessEngine实例进行销毁,并且在销毁的同时调用 * ProcessEngine的close()方法 * * */ System.out.println("destroy之前的map1的大小------" + map1.size()); ProcessEngines.destroy(); map1 = ProcessEngines.getProcessEngines(); System.out.println("destroy之后的map1的大小------" + map1.size()); /** * * ProcessEngine 的 close() 方法 * * */ p2.close(); /** * * 流程引擎的名称 * * */ processEngineConfiguration.setProcessEngineName("mpc_test"); ProcessEngine p3 = processEngineConfiguration.buildProcessEngine(); System.out.println(p3.toString()); ProcessEngine p4 = ProcessEngines.getProcessEngine("mpc_test"); System.out.println(p4.toString()); System.out.println(ProcessEngines.getProcessEngines().size()); /** * * ProcessEngines 的 * getDefaultProcessEngine()方法,返回名称为default的ProcessEngine * * 如果ProcessEngines没有初始化,那么就执行init()方法 * * */ ProcessEngine p = ProcessEngines.getDefaultProcessEngine(); System.out.println(p.getName()); }}
用到的两个配置文件

avtiviti5.cfg.xml

my_config.xml

转载于:https://www.cnblogs.com/qzmpc/p/6339573.html

你可能感兴趣的文章
C# 关于JArray和JObject封装JSON对象
查看>>
【Visual C++】游戏开发笔记之十 基础动画显示(三) 透明动画的实现
查看>>
今目标反思
查看>>
SQL Server 备份的 8 种方法。
查看>>
SQL Server 从数据库快照还原数据库
查看>>
$(document).keydown
查看>>
对Java、C#转学swift的提醒:学习swift首先要突破心理障碍。
查看>>
面向对象 2017-4-15
查看>>
java项目导出war包
查看>>
算法第三章实践报告
查看>>
linux应用之Mongodb的安装及配置(centos)
查看>>
Python 面向对象 --- eval 函数
查看>>
PHP的错误和异常处理
查看>>
z-index兼容问题:关于ie6/7下的z-index
查看>>
试题总结(一)
查看>>
HDU 4288
查看>>
oracle:wm_concat函数与oracle版本
查看>>
Servlet学习总结
查看>>
[转载]WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
查看>>
【SQL语法】系列08:利用Update更新表中数据
查看>>