:-: ![](https://img.kancloud.cn/dd/cf/ddcfec2be84122605bd33310a7d9fb87_831x303.jpg)
Activiti类结构关系
在新版本中(7.x),IdentityService,FormService两个Serivce都已经删除了。所以后面对于这两个Service不再讲解,但老版本中还是有这两个Service,在这里提醒一下。
<br/>
**1. `activiti.cfg.xml`**
activiti的引擎配置文件,包括:ProcessEngineConfiguration的定义、数据源定义、事务管理器等,此文件其实就是一个spring配置文件。
<br/>
**2. ProcessEngineConfiguration**
流程引擎配置类,通过ProcessEngineConfiguration可以创建工作流引擎ProcessEngine,常用的子类为StandaloneProcessEngineConfiguration、SpringProcessEngineConfiguration。
![](https://img.kancloud.cn/33/81/3381ffd6ec81430e2e5ddf6e4480f731_1455x280.png)
(1)StandaloneProcessEngineConfiguration
使用StandaloneProcessEngineConfiguration,Activiti可以单独运行来创建ProcessEngine,Activiti会自己处理事务。
(2)SpringProcessEngineConfiguration
这个是Activit与Spring整合用的,具体配置参考【Spring整合Activiti】小节。
<br/>
**3. ProcessEngine**
工作流引擎(ProcessEngine),相当于一个门面接口,通过ProcessEngineConfiguration创建processEngine,通过ProcessEngine创建各个service接口。
<br/>
**4. Servcie服务接口**
Service是工作流引擎提供用于进行工作流部署、执行、管理的服务接口,我们使用这些接口就可以就是操作服务对应的数据表。
(1) RepositoryService
activiti的资源管理类,提供了管理和控制流程发布包和流程定义的操作。
使用工作流建模工具设计的业务流程图需要使用此service将流程定义文件的内容部署到计算机。除了部署流程定义以外还可以:查询引擎中的发布包和流程定义。暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。
获得流程定义的pojo版本, 可以用来通过java解析流程,而不必通过xml。
(2) RuntimeService
Activiti的流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息。
(3)TaskService
Activiti的任务管理类。可以从这个类中获取任务的信息。
(4) HistoryService
Activiti的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间,每个流程实例的执行路径,等等。 这个服务主要通过查询功能来获得这些数据。
(5)ManagementService
Activiti的引擎管理类,提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护。
<br/>
获取服务接口的过程如下:
>[success] **1. 在配置文件`resources/activiti.cfg.xml`中配置**ProcessEngineConfiguration
* 配置方式1:
```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">
<!-- 这里可以使用 链接池 dbcp-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///activiti" />
<property name="username" value="root" />
<property name="password" value="123456" />
<property name="maxActive" value="3" />
<property name="maxIdle" value="1" />
</bean>
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 引用数据源 上面已经设置好了-->
<property name="dataSource" ref="dataSource" />
<!-- activiti数据库表处理策略 -->
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
```
* 配置方式2:
```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">
<!-- 这里可以使用 链接池 dbcp-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///activiti" />
<property name="username" value="root" />
<property name="password" value="123456" />
<property name="maxActive" value="3" />
<property name="maxIdle" value="1" />
</bean>
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 引用数据源 上面已经设置好了-->
<property name="dataSource" ref="dataSource" />
<!-- activiti数据库表处理策略 -->
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
```
>[success] **2. java代码**
```java
public class TestCreate {
/**
* 使用activiti提供的默认方式来创建mysql的表
*/
@Test
public void testCreateDbTable() {
//1. 获取配置
////方式1:调用createProcessEngineConfigurationFromResource(resource),
//但是activiti.cfg.xml中必须有一个 <bean id="processEngineConfiguration" .../>
//ProcessEngineConfiguration configuration = ProcessEngineConfiguration
// .createProcessEngineConfigurationFromResource("activiti.cfg.xml");
////方式2:调用createProcessEngineConfigurationFromResource(resource, beanName)可自由定义beanName
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource("activiti.cfg.xml",
"processEngineConfiguration");
//2. 获取引擎,到这一步就会创建mysql表
////获取方式1:采用Activiti默认获取方式
//方法getDefaultProcessEngine会默认从resources下读取名字actviti.cfg.xml的文件,
//所以这一步可以省略获取配置的不再
//ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
////获取方式2:这是开发中通常采用的
ProcessEngine processEngine = configuration.buildProcessEngine();
//3. 获取各种接口
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
}
}
```
- Activiti流程引擎
- 工作流介绍
- Activiti是什么
- Activiti流程处理步骤
- Activiti环境搭建
- 搭建步骤
- 表结构介绍
- ActivitiAPI结构
- 认识流程符号
- 流程设计器的使用
- 流程处理步骤
- 乱码问题
- 流程实例
- 流程实例是什么
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 个人任务
- 分配任务负责人
- 查询待办任务
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 使用流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 4种网关类型
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- Spring整合Activiti
- SpringBoot整合Activiti
- Flowable流程引擎
- Flowable是什么
- Flowable与Activiti
- Flowable环境搭建
- FlowableAPI
- 流程引擎API与服务
- 流程处理步骤
- 流程部署
- 流程部署方式
- 流程定义版本
- 删除已部署的流程
- 下载资源
- 流程实例
- 什么是流程实例
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 分配任务负责人
- 固定分配
- UEL表达式分配
- 监听器分配
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- 历史查询
- 查询历史
- Spring整合Flowable
- 配置文件整合
- 配置类整合
- SpringBoot整合Flowable