:-: 
Activiti類結構關系
在新版本中(7.x),IdentityService,FormService兩個Serivce都已經刪除了。所以后面對于這兩個Service不再講解,但老版本中還是有這兩個Service,在這里提醒一下。
<br/>
**1. `activiti.cfg.xml`**
activiti的引擎配置文件,包括:ProcessEngineConfiguration的定義、數據源定義、事務管理器等,此文件其實就是一個spring配置文件。
<br/>
**2. ProcessEngineConfiguration**
流程引擎配置類,通過ProcessEngineConfiguration可以創建工作流引擎ProcessEngine,常用的子類為StandaloneProcessEngineConfiguration、SpringProcessEngineConfiguration。

(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