众所周知,Activiti作为Java中的高级框架,Activiti 是一个针对企业用户、开发人员 、系统管理员的轻量级工作流业务管理平台,其核心是使用 java 开发的快速 、 稳定的 BPMN2.0 流程引擎 。它可以与 spring 完美集成。
现在开始我们进入Activiti的学习
第一步:我们在数据库创建表activiti,表中不需要有任何的数据
create database activiti
第二步:创建一个Maven项目,这里就不做演示了
第三步:配置文件activiti.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--数据源配置-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activiti?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="010126" />
</bean>
<!--activiti单独运行的ProcessEngine配置对象(processEngineConfiguration)
默认情况下:bean的id=processEngineConfiguration
要改变bean的名称,部署时需要在代码中添加bean的id:例子:processEngineConfiguration01
ProcessEngineConfiguration processEngineConfiguration=ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01");
-->
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!--数据源-->
<property name="dataSource" ref="dataSource"></property>
<!--是否生成表结构-->
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
创建类ActivitiDeploymenTest,从表创建的角度看,有两种方式
第一种方式:
public void testGenTableOne(){
//创建ProcessEngine对象
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
}
第二种方式:
public void testGenTableTwo(){
//1:创建ProcessEngineConfiguration对象
//第一个参数:配置文件名称 第二个参数是processEngineConfiguration的bean的id
ProcessEngineConfiguration processEngineConfiguration=
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//2:创建ProcessEngine对象
ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
//3;输出ProcessEnine对象
System.out.println(processEngine);
}
部署分析:
以上两种方式都是可以的,但是相较于第二种方式,第一种的条件会比较多
第一种方式的条件:
- 项目中activiti配置文件名称:activiti.cfg.xml
- activiti.cfg.xml配置bean的id必须是"processEngineConfiguration",并且不可改变
第二种方式需要注意:
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
由于bean的id默认时processEngineConfiguration,如果需要改变成processEngineConfiguration01那么需要添加bean的id
ProcessEngineConfiguration processEngineConfiguration=
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01");
运行后结果:
私人建议:
两种方法都有各自的优缺点,第一种方式比较局限性,第二种方式代码多一些,activiti的很多功能实现都是需要获取ProcessEngine对象,所以建议可以做一个工具封装,需要用到的时候调用即可
public class ReturnProcessEngineUtil {
//Id未改变
public static ProcessEngine getProcessEngine(){
ProcessEngineConfiguration processEngineConfiguration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
return processEngine;
}
//Id改变
public static ProcessEngine getProcessEngine(String beanName){
ProcessEngineConfiguration processEngineConfiguration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml",beanName);
ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
return processEngine;
}
}
调用
ProcessEngine processEngine= ReturnProcessEngineUtil.getProcessEngine();