步骤如下:
**1. 请先准备好如下环境**
JDK1.8+、MySql 5+、IntelliJ IDEA 。
**2. IDEA中安装Activiti流程设计器**
:-: ![](https://img.kancloud.cn/a5/f9/a5f93df868681af620606279a4f0ddc8_647x369.png)
如果IDEA中找不到 actiBPM 插件,可以如下安装:
(1)下载actiBPM的JAR包。
地址:[https://plugins.jetbrains.com/](https://plugins.jetbrains.com/)
![](https://img.kancloud.cn/f5/d2/f5d2b953ba643f8f75d259a13da31428_1621x351.png)
![](https://img.kancloud.cn/80/af/80af06744daeec69dd0a4ec62b3eb62b_1806x646.png)
(2)在IDEA中选择从磁盘中导入该JAR包,选择下载的actibpm.jar包。
![](https://img.kancloud.cn/cf/04/cf04f26bea904e2287ab31a31194d7c2_1231x379.png)
(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张表**
![](https://img.kancloud.cn/de/d8/ded874091acd47f1ff371d303cd4956e_1310x254.png)
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