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

一、activiti的简单使用流程

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

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

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

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

启动流程

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

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

三、activiti配置文件的介绍

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

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">

class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

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

processEngineConfiguration这个bean要注入的属性:

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

(2)databaseSchemaUpdate,数据库策略,

false:默认值,设置为该值,activiti在启动时如果数据库中没有表或者版本不匹配,会抛出异常

true:启动时会对所有表进行更新,如果没有表就会自动创建表

create-drop: 启动时创建表,关闭时删除表

针对其中的数据库连接相关的属性,我们还可以在这个配置文件中再配置一个数据源,在这里引用数据源的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 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中的两个核心对象,流程引擎配置对象和流程引擎对象,以及如何获取这两个对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 流程引擎_Activiti流程引擎对象及配置原理解析相关推荐

  1. java 根据环境导包_java环境变量配置原理解析以及eclipse导入外包的方法

    1. PATH环境变量.作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把jdk安装目录下的bin目 ...

  2. python对象传递_Python参数传递对象的引用原理解析

    大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型. python采用的是传递对象的引用,为了方便说明 ...

  3. 【Java架构师入门到精通】分布式架构原理解析

    1. 分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. ...

  4. Java多线程系列 JUC线程池05 线程池原理解析(四)

    转载 http://www.cnblogs.com/skywang12345/p/3544116.html  https://blog.csdn.net/programmer_at/article/d ...

  5. AOP 工厂对象之ScopedProxyFactoryBean 原理解析

    J2EE开发者,对购物车这个概念太熟悉了.存在于Session周期中.今天就说说,如果用Spring管理购物车,怎么处理. 使用场景 <bean id="cart" clas ...

  6. java工作流引擎Jflow流程事件和流程节点事件设置

    流程实例的引入和设置 关键词: 开源工作流引擎  Java工作流开发  .net开源工作流引擎   流程事件 工作流节点事件 应用场景: 在一些复杂的业务逻辑流程中需要在某个节点或者是流程结束后做一些 ...

  7. Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程

    工作流模块----------------------------------------------------------------------------------------------- ...

  8. SSM Activiti6.0 java项目框架 spring5 工作流引擎 审批流程

    工作流模块----------------------------------------------------------------------------------------------- ...

  9. 四大国内外开源的java工作流程引擎,流程快速开发平台对比分析选型

    为了更好的帮助大家找到适合自己的流程引擎,快速的完成流程引擎技术架构选型,快速的完成项目交付我们找到了4个开源的java工作流引擎,一些应用环境对比分析. 希望您能从中找到适合您自己的流程引擎. 工作 ...

最新文章

  1. 加了try-catch也能自动定位到异常代码[VS Tips]
  2. kafka架构:分区机制详解
  3. SAP Spartacus单元测试里Component实例的创建细节
  4. leetcode 40. 组合总和 II 思考分析
  5. ASP.Net网站部署失败
  6. pytorch的F.cross_entropy交叉熵函数
  7. 我们不再需要 Chrome?
  8. 一文读懂 Java 工程师学习路线!
  9. SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
  10. win10定时关机c语言,电脑定时关机win10,电脑定时关机命令-
  11. 计算机显卡发展史,外置显卡发展简史
  12. 如何在互联网上寻找免费电子书?(其二)
  13. Error occurred during initialization of VM 解决
  14. 为何学习Python?这是我看到的最好回答
  15. Ubuntu完全教程,让你成为Ubuntu高手!
  16. Java接入微信支付ApiV3详细教程
  17. SpringCloud(H版alibaba)之基本框架篇
  18. jstree的简单使用例子
  19. python中complex(10.99)是什么意思_代码 a = 10.99; print(complex(a)) 的执行结果是 _________ 。...
  20. 计算器逻辑实现算法(加、减、乘、除)- JS版

热门文章

  1. 记录一下DSFD源码中demo.py的debug过程
  2. 一图详解管理的全过程——定目标、追过程、拿结果
  3. Tightly-Coupled Multi-Sensor Fusion for Localization with LiDAR Feature Maps
  4. CNN网络结构——卷积层
  5. 【前端开发】CSS BEM命名规范
  6. java 逻辑运算符
  7. 【VUE】微商城(一)----安装mint-ui,mui,sass
  8. C++ MFC深入详解之----设置控件背景透明
  9. 南华大学第十五届ACM程序设计竞赛(重现赛) E 免费机票
  10. IM即时通讯-消息id(五)