Activiti入门教程五(详解ProcessEngine的创建)
来源:互联网 发布:linux 当前shell 编辑:程序博客网 时间:2024/04/30 19:56
这篇博客来通过源码来看一下有关ProcessEngine创建的那些事,其中有两种方式来创建,下面来分析一下。
ProcessEngineConfiguration方式
第一种方式,在前几篇博客中也曾提到,通过各种静态的方法,加载相应的XML,最后调用buildProcessEngine()方法,来创建ProcessEngine对象。
其中的执行过程,也在上一篇博客中分析了,先是走Init()初始化的方法,最后走了一个构造函数来实例化各种流程实例组件。这种方式就说到这里。
ProcessEngines方式
该类是干什么的呢?类似于一个容器工厂,来保存创建的ProcessEngine对象。下面来看一下主要的方法
protected static Map<String, ProcessEngine> processEngines = new HashMap<String, ProcessEngine>();
通过map集合,使用键值对的形式来保存ProcessEngine对象
public synchronized static void init();初始化方法,用来实例化ProcessEngine对象,与第一种方式类似
public static void registerProcessEngine(ProcessEngine processEngine);
把实例化好的ProcessEngine对象,加入到Map集合中
public static void unregister(ProcessEngine processEngine);
把实例化好的ProcessEngine对象,从map集合中去除
public static ProcessEngine getDefaultProcessEngine();
从map集合中取出默认的实例化好的ProcessEngine对象
public static ProcessEngineInfo retry(String resourceUrl);
如果Activiti在加载配置文件时出现异常的话,通过改方法可以重新加载配置文件
public synchronized static void destroy();
对维护的所有的ProcessEngine实例进行销毁,并且在销毁的同时调用ProcessEngine的close方法
下面看一个实例
<span style="font-family:Comic Sans MS;font-size:18px;">package org.crazyit.activiti;import java.util.Map;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;/** * 调用ProcessEngines的init方法 * * @author yangenxiong * */public class Init {public static void main(String[] args) {// 初始化ProcessEngines的Map,// 再加载Activiti默认的配置文件(classpath下的activiti.cfg.xml文件)// 如果与Spring整合,则读取classpath下的activiti-context.xml文件ProcessEngines.init();// 会进行判断,看是否初始化,如果已经初始化好的话,直接从map中取值即可ProcessEngine aEngine = ProcessEngines.getDefaultProcessEngine();// 得到ProcessEngines的MapMap<String, ProcessEngine> engines = ProcessEngines.getProcessEngines();System.out.println(engines.size());System.out.println(engines.get("default")); //调用销毁的方法//ProcessEngines.destroy();// 从map集合中去除实例化好的ProcessEngine对象ProcessEngines.unregister(aEngine);System.out.println(engines.size());System.out.println(engines.get("default"));}}</span>
流程实例名称问题
在上面的例子中我们看到这样一句话engines.get("default"),从上面的分析中,我们知道map中是以键值对的形式来放置流程实例对象,如果我们不指定名称的话,默认的名称为default,如果要指定的话,需要通过ProcessEngineConfiguration来指定
<span style="font-family:Comic Sans MS;font-size:18px;">package org.crazyit.activiti;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.activiti.engine.ProcessEngines;public class Name {public static void main(String[] args) {ProcessEngineConfiguration config = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("name.xml");//设置流程引擎名称config.setProcessEngineName("test");ProcessEngine engine = config.buildProcessEngine();//根据名称查询流程引擎ProcessEngine engineTest = ProcessEngines.getProcessEngine("test");System.out.println("创建的引擎实例:" + engine);System.out.println("查询的引擎实例:" + engineTest);}}</span>
- Activiti入门教程五(详解ProcessEngine的创建)
- 工作流Activiti的学习总结(二)activiti中ProcessEngine的创建和数据库表命名规则
- Activiti入门教程六(详解Activiti中的查询API)
- Activiti中关于processEngine核心类的继承关系
- Spring整合activiti配置processEngine
- Activiti入门教程三(详解流程引擎配置)
- Activiti入门教程十(详解历史服务组件HistoryService)
- Activiti入门教程十(详解历史服务组件HistoryService)
- Activiti入门教程一(初步认识Activiti)
- activiti实战五(我的流程)
- Activiti(五)网关
- Activiti(五)网关
- Activiti入门教程
- activiti的安装详解
- Activiti入门教程四(自定义Activiti命令拦截器)
- 工作流Activiti的学习总结(五) activiti的API和虚拟工作流测试
- activiti学习资料(ProcessEngine引用服务及其依赖关系)
- activiti 流程历史(五)
- 编程中最没用的东西是源代码,最有用的东西是算法和数据结构。
- OC-字符串的使用
- TCP/IP(1)链路层
- http协议的post请求
- GC JVM垃圾回收
- Activiti入门教程五(详解ProcessEngine的创建)
- 【智能查询】:关于智能查找输入的算法实现1
- 本地SVN服务器搭建20150920
- 理解Java异常转译的强大
- AndroidStudio配置SVN以及使用代码管理
- 笔记
- 黑马程序员-java基础-IO流
- 【软考】-UML图
- 路径中 斜杠/和反斜杠\ 的区别