步驟如下:
**1. 請先準備好如下環境**
JDK1.8+、MySql 5+、IntelliJ IDEA 。
**2. IDEA中安裝Activiti流程設計器**
:-: 
如果IDEA中找不到 actiBPM 插件,可以如下安裝:
(1)下載actiBPM的JAR包。
地址:[https://plugins.jetbrains.com/](https://plugins.jetbrains.com/)


(2)在IDEA中選擇從磁盤中導入該JAR包,選擇下載的actibpm.jar包。

(3)重啟IDEA即可。
**3. 創建一個maven項目,`pom.xml`如下**
```xml
<dependencies>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-engine</artifactId>
<version>6.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
```
**4. log4j日志配置文件**
*`resources/log4j.properties`*
```properties
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=f:\act\activiti.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n
```
**5. 配置ProcessEngineConfiguration**
* 配置方式1:`resources/flowable.cfg.xml`
```xml
<beans xmlns="http://www.springframework.org/schema/beans" 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">
<!-- 生成流程圖參數 -->
<bean id="processDiagramGenerator" class="org.flowable.image.impl.DefaultProcessDiagramGenerator" />
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:mysql://localhost/flowable?useUnicode=true&characterEncoding=UTF-8" />
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="root" />
<property name="databaseSchemaUpdate" value="true" />
<property name="asyncExecutorActivate" value="false" />
<!-- 流程部署時自動生成對應的圖片 -->
<property name="createDiagramOnDeploy" value="true" />
<!-- 生成流程圖參數 -->
<property name="processDiagramGenerator" ref="processDiagramGenerator" />
<!-- 流程圖字體 -->
<property name="activityFontName" value="宋體" />
<property name="labelFontName" value="宋體" />
<property name="annotationFontName" value="宋體" />
</bean>
</beans>
```
* 配置方式2:`resources/flowable.cfg.xml`
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- 數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/flowable?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="defaultAutoCommit" value="false" />
</bean>
<!-- 生成流程圖參數 -->
<bean id="processDiagramGenerator" class="org.flowable.image.impl.DefaultProcessDiagramGenerator"/>
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<!--表處理策略:
false (默認): 當引擎啟動時,檢查數據庫表結構的版本是否匹配庫文件版本。版本不匹配時拋出異常。
true:數據庫中表存在則使用,沒有則創建。
create-drop: 引擎創建時創建表結構,并在引擎關閉時刪除表結構。
-->
<property name="databaseSchemaUpdate" value="true" />
<property name="asyncExecutorActivate" value="false" />
<!-- 流程部署時自動生成對應的圖片 -->
<property name="createDiagramOnDeploy" value="true"/>
<!-- 生成流程圖參數 -->
<property name="processDiagramGenerator" ref="processDiagramGenerator"/>
<!-- 流程圖字體 -->
<property name="activityFontName" value="宋體"/>
<property name="labelFontName" value="宋體"/>
<property name="annotationFontName" value="宋體"/>
</bean>
</beans>
```
**6. 生成相關表**
先在MySQL中創建flowable數據庫,然后執行下面的程序自動生成相關的表。
```java
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.engine.ProcessEngines;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
public class FlowableCreateable {
public static void main(String[] args) {
//如果配置文件位于resources/flowable.cfg.xml,則可以這樣獲取引擎
//獲取引擎時就會自動在數據庫中創建相關的表
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//也可以這樣獲取引擎,flowable.cfg.xml則可以自由命名
//ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("flowable.cfg.xml");
//ProcessEngine processEngine = cfg.buildProcessEngine();
}
}
```
**7. 運行上面的程序就會自動生成如下34張表**

Flowable的所有數據庫表都以`ACT_`開頭。第二部分是說明表用途的兩字符標示符。服務API的命名也大略符合這個規則。
* `ACT_RE_`:RE代表repository。帶有這個前綴的表包含“靜態”信息,例如流程定義與流程資源(圖片、規則等)。
* `ACT_RU_`:RU代表runtime。這些表存儲運行時信息,例如流程實例(process instance)、用戶任務(user task)、變量(variable)、作業(job)等。Flowable只在流程實例運行中保存運行時數據,并在流程實例結束時刪除記錄。這樣保證運行時表小和快。
* `ACT_HI_`:HI代表history。這些表存儲歷史數據,例如已完成的流程實例、變量、任務等。
* `ACT_GE_`:通用數據。在多處使用。
- Activiti流程引擎
- 工作流介紹
- Activiti是什么
- Activiti流程處理步驟
- Activiti環境搭建
- 搭建步驟
- 表結構介紹
- ActivitiAPI結構
- 認識流程符號
- 流程設計器的使用
- 流程處理步驟
- 亂碼問題
- 流程實例
- 流程實例是什么
- 業務標識
- 查詢流程實例
- 掛起/激活流程實例
- 個人任務
- 分配任務負責人
- 查詢待辦任務
- 辦理權限
- 流程變量
- 流程變量類型
- 流程變量作用域
- 使用流程變量控制流程
- 組任務
- 設置任務候選人
- 組任務辦理流程
- 網關
- 4種網關類型
- 排他網關
- 并行網關
- 包含網關
- 事件網關
- Spring整合Activiti
- SpringBoot整合Activiti
- Flowable流程引擎
- Flowable是什么
- Flowable與Activiti
- Flowable環境搭建
- FlowableAPI
- 流程引擎API與服務
- 流程處理步驟
- 流程部署
- 流程部署方式
- 流程定義版本
- 刪除已部署的流程
- 下載資源
- 流程實例
- 什么是流程實例
- 業務標識
- 查詢流程實例
- 掛起/激活流程實例
- 分配任務負責人
- 固定分配
- UEL表達式分配
- 監聽器分配
- 辦理權限
- 流程變量
- 流程變量類型
- 流程變量作用域
- 流程變量控制流程
- 組任務
- 設置任務候選人
- 組任務辦理流程
- 網關
- 排他網關
- 并行網關
- 包含網關
- 事件網關
- 歷史查詢
- 查詢歷史
- Spring整合Flowable
- 配置文件整合
- 配置類整合
- SpringBoot整合Flowable