activiti学习3:流程引擎对象和流程引擎配置对象

流程引擎对象和其配置对象都是activiti的核心对象

一、activiti的简单使用流程

activiti在工作时,一般有以下几个步骤:

创建一个流程引擎配置对象ProcessEngineConfiguration对流程引擎进行配置

通过流程引擎配置对象来获取流程引擎对象ProcessEngine

通过流程引擎对象来部署流程图

启动流程

二、流程引擎配置对象ProcessEngineConfiguration的介绍

activiti用ProcessEngineConfiguration对象来配置流程引擎。ProcessEngineConfiguration类提供了多个创建该类对象的静态方法,可以读取相应的配置文件,返回ProcessEngineConfiguration实例。通过该类中提供的getter和setter方法可以对流程引擎配置对象进行配置。

三、activiti配置文件的介绍

activiti创建流程引擎配置对象时需要一个配置文件,

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 配置使用默认bean名称的流程引擎配置对象 -->
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_01"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="root"></property>
<property name="databaseSchemaUpdate" value="true"></property>
</bean> </beans>

仔细观察这个配置文件,这其实是一个spring的配置文件,在其中配置了一个ProcessEngineConfiguration类的bean,然后在代码中就可以读取这个配置文件,获取这个bean。

processEngineConfiguration这个bean要注入的属性:

(1)数据库连接相关的属性

(2)databaseSchemaUpdate,数据库策略,

  • false:默认值,设置为该值,activiti在启动时如果数据库中没有表或者版本不匹配,会抛出异常
  • true:启动时会对所有表进行更新,如果没有表就会自动创建表
  • create-drop: 启动时创建表,关闭时删除表

针对其中的数据库连接相关的属性,我们还可以在这个配置文件中再配置一个数据源,在这里引用数据源的bean

<!-- 配置连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_01"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean>

四、获取流程引擎配置对象

4.1 读取默认名称的配置文件来创建配置对象

ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault() 这个方法会在classpath下读取名为activiti.cfg.xml的配置文件,并获取名称为processEngineConfiguration的bean返回。

所以如果在resources目录下给定一个activiti.cfg.xml配置文件,在其中创建一个名为processEngineConfiguration的bean,在程序中调用这个方法就可以得到流程引擎配置对象。

	/**
* 用ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault()
* 创建流程引擎配置对象
*/
@Test
public void test1() {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
System.out.println(configuration);
}

4.2 读取自定义名称的配置文件来创建流程引擎配置对象

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource()方法可以加载指定位置的配置文件,并获取给定名称的bean来得到流程引擎配置对象。

	@Test
public void test2() {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("cfg/activiti-cfg.xml", "processEngineConfiguration");
System.out.println(configuration);
}

五、流程引擎对象

ProcessEngine,流程引擎对象,是activiti的核心对象之一,使用该对象来部署流程。

要获取该对象时,需要先获取ProcessEngineConfiguration 流程引擎配置对象来对流程引擎进行配置,然后通过这个配置对象来获取流程引擎对象。下面说明下如何获取流程引擎对象

5.1 buildProcessEngine方法创建

这个方法是ProcessEngineConfiguration类的实例方法,该方法返回一个已经配置好的流程引擎对象

	@Test
public void testCreateProcessEngine() {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.println(processEngine);
}

5.2 用ProcessEngines类来获取

activiti在ProcessEngines类中也提供了创建流程引擎对象的方法,这是一个创建和关闭流程引擎的工具类,所有创建的(包括使用其他方式创建的)ProcessEngine实例都会被注册到ProcessEngines中,实际上是在该类中维护了一个Map对象,key为ProcessEngine实例的名称,value为ProcessEngine实例。

5.2.1使用ProcessEngines.init()方法获取

ProcessEngines的init方法,会读取activiti的默认配置文件,即classpath下的activiti.cfg.xml文件,并将创建的流程引擎实例缓存到map中,该方法会在map中创建key=default的ProcessEngine对象,

然后我们就可以先获取到这个map,然后从map中获取key=defalut的流程引擎对象。

	@Test
public void testCreateProcessEngine2() {
//读取配置文件,创建流程引擎对象缓存到map中
ProcessEngines.init();
//获取map
Map<String, ProcessEngine> enginesMap = ProcessEngines.getProcessEngines();
//获取key为default的对象
ProcessEngine processEngine = enginesMap.get("default");
System.out.println(processEngine);
}

5.2.2 使用getDefaultProcessEngine()方法获取

ProcessEngines的getDefaultProcessEngine()方法,会返回缓存map中的key为default的流程引擎对象,如果这个map还没有进行初始化,该方法就会先调用ProcessEngines.init()方法初始化缓存map,然后再获取key为default的流程引擎对象。

	@Test
public void testCreateProcessEngine3() {
ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
System.out.println(defaultProcessEngine);
}

比较以上的几种创建流程引擎的方式,我们一般选择ProcessEngines.getDefaultProcessEngine()方法来获取,

因为这种方式最简单,只需要提供一个使用默认名称的配置文件activiti.cfg.xml,在其中做好对流程引擎的配置

然后我们就可以直接获取流程引擎对象。

六、总结

以上介绍了activiti中的两个核心对象,流程引擎配置对象和流程引擎对象,以及如何获取这两个对象。

activiti学习3:流程引擎对象和流程引擎配置对象的更多相关文章

  1. Activiti学习笔记1 — 下载与开发环境的配置

    一.下载 JDK下载URL: Tomcat下载URL:http://tomcat.apache.org/ Eclipse下载URL:http://www.oracle.com/technetwork/ ...

  2. Activiti工作流学习(一)部署对象和流程定义

    一.前言 前一段时间在工作中,使用了流程审批,对api的调用非常不熟悉,都是调用别人写好的接口在界面上进行显示,基本了解了流程审批的主要步骤,现对流程审批进行学习,主要是调用api进行CRUD操作,感 ...

  3. Activiti 学习笔记记录(二)

    上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...

  4. Activiti学习笔记目录

    1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...

  5. activiti学习4:流程文件的部署

    activiti学习4:流程文件的部署 用bpmn规范定义好一个流程得到流程定义文件后,需要把该文件部署到activiti的数据库后,这个流程才可以使用. activiti中和流程定义相关的操作都需要 ...

  6. activiti学习6:启动流程后动态获取流程图

    目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...

  7. activiti学习5:开启流程和流程前进

    目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...

  8. Activiti 学习(三)—— Activiti 流程启动并完成

    Activiti 流程启动 流程定义部署后,就可以通过工作流管理业务流程了,也就是说前文部署的出差申请流程可以使用了.针对该流程,启动一个流程表示发起一个新的出差申请单,这就相当于 java 类与 j ...

  9. Activiti学习笔记4 — 流程实例化

    1.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 2.启动流程 流程 ...

随机推荐

  1. 提交代码报错 error: failed to push some refs to

    在本人想把本地的分支推送到远程仓库时,突然出现了错误提醒error: failed to push some refs to....心里一咯噔,推不上去这还得了,手比脑快地就去google了一下. 然 ...

  2. 文件描述符fd,struct files_struct

    程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在这就不在讨 ...

  3. Python 10 训练模型

    原文:https://www.cnblogs.com/denny402/p/7520063.html 原文:https://www.jianshu.com/p/84f72791806f 原文:http ...

  4. [RN] React Navigation 使用中遇到的显示 问题 汇总

    React Navigation 使用中遇到的显示 问题 汇总 https://www.jianshu.com/p/8b1f18affc5d

  5. [golang][gui]Hands On GUI Application Development in Go【在Go中动手进行GUI应用程序开发】读书笔记03-拒交“智商税”,解密“GUI”运行之道

    和老外的原文好像没多大联系了,哈哈哈,反正是读书笔记,下面的内容也是我读此书中的历程,也写进来吧.不过说实话,这框架的作者还挺对我脾气的,哈哈哈. 拒交“智商税”,解密“GUI”运行之道 我很忙 项目 ...

  6. Java实现一个简单的事件监听器

    关于事件监听我们需要知道的一些基础知识. a)事件三要素(who when what): source -- 事件源 when -- 事件发生时间 message -- 事件主题消息,即希望通过事件传 ...

  7. 范仁义html+css课程---9、video、audio、canvas和svg元素略讲

    范仁义html+css课程---9.video.audio.canvas和svg元素略讲 一.总结 一句话总结: video:HTML5视频标签. audio:html5音频标签. canvas:绘制 ...

  8. Parallel.For循环与普通的for循环

    前两天看书发现了一个新的循环Parallel.For,这个循环在循环期间可以创建多个线程并行循环,就是说循环的内容是无序的.这让我想到了我前面的牛牛模拟计算是可以用到这个循环的,我前面的牛牛模拟计算是 ...

  9. Metasploit使用内网跳板, 扫描局域网主机

    最近,拿到一台内网机器, 苦于无法使用nmap扫描改主机的内网, 所以才有此文 在跳板机子获取一定权限后,需要积极的向内网主机权限发展,获取指定的目标信息,探查系统漏洞,借助msf已经得到的meter ...

  10. clumsy 模拟网络丢包延迟

    https://www.cnblogs.com/bodboy/p/6015530.html clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现 ...