一、"工具箱"准备------开发环境四件套
1. 基础装备清单
工具名称 | 版本要求 | 作用 |
---|---|---|
JDK | 1.8+ | 运行Java程序 |
Maven | 3.6+ | 依赖管理与项目构建 |
IDE | Eclipse/IDEA | 代码编写与调试 |
数据库 | H2/MySQL 5.7+ | 存储流程数据(H2适合快速入门) |
验证安装:
bash
java -version # 输出:java version "1.8.0_301"
mvn -v # 输出:Apache Maven 3.8.4
二、创建"引擎车间"------Maven项目搭建
1. 生成项目骨架
bash
mvn archetype:generate -DgroupId=com.activiti.lab -DartifactId=activiti-lab -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2. 添加"动力燃料"------Maven依赖
在pom.xml
中注入Activiti核心依赖:
xml
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.22.0</version> <!-- 原书示例版本 -->
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version> <!-- 内存数据库,免安装 -->
</dependency>
编译命令:
bash
mvn clean install # 构建成功即表示依赖就绪
三、配置"能源核心"------数据库连接
1. 创建activiti.cfg.xml
文件
xml
<beans xmlns="http://www.springframework.org/schema/beans"...>
<!-- 数据库配置 -->
<bean id="dataSource" class="org.h2.jdbcx.JdbcDataSource">
<property name="URL" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
</bean>
<!-- 流程引擎配置 -->
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="dataSource" ref="dataSource"/>
<property name="databaseSchemaUpdate" value="true"/> <!-- 自动建表 -->
</bean>
</beans>
关键参数解析:
databaseSchemaUpdate=true
:启动时自动创建或更新表结构,开发环境神器!
四、启动"引擎点火"------初始化流程引擎
1. Java代码初始化
java
public class EngineStarter {
public static void main(String[] args) {
// 加载activiti.cfg.xml配置
ProcessEngine engine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml")
.buildProcessEngine();
System.out.println("Activiti引擎启动成功!版本:" + engine.VERSION);
System.out.println("自动创建表数量:" + engine.getManagementService()
.getTableCount().getTables().size());
}
}
2. 运行结果验证
text
Activiti引擎启动成功!版本:5.22.0
自动创建表数量:28 # 看到此数字说明数据库表创建成功
趣味问答❓ :
Q:如果databaseSchemaUpdate
设为false
会怎样?
A:引擎启动失败,提示表不存在!需要手动执行SQL脚本初始化数据库。
五、"初号机"测试------部署并运行第一个流程
1. 创建BPMN文件
在src/main/resources
下新建leave.bpmn
(流程定义文件,第三章详解)。
2. 代码部署与启动流程
java
RepositoryService repositoryService = engine.getRepositoryService();
// 部署流程图
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("leave.bpmn")
.deploy();
RuntimeService runtimeService = engine.getRuntimeService();
// 启动流程实例
ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess");
System.out.println("流程实例ID:" + instance.getId());
预期输出:
text
流程实例ID:2501 # 表示第一个流程实例已启动
六、避坑指南------环境搭建常见"雷区"
1. 依赖冲突
症状 :ClassNotFoundException
或NoSuchMethodError
。
解法 :用mvn dependency:tree
排查冲突,排除重复依赖。
2. 数据库连接失败
症状 :Connection refused
或Unknown database
。
检查项:
- H2的URL格式是否正确(
jdbc:h2:mem:activiti
)。 - MySQL用户权限是否开放远程连接。
七、课后挑战------巩固你的"车间"
-
选择题 :
databaseSchemaUpdate
参数设置为false
时,如何初始化表结构?A. 手动执行
activiti.mysql.create.sql
B. 引擎自动创建
C. 不需要表结构
-
实战题 :尝试将数据库切换为MySQL,修改
activiti.cfg.xml
配置并成功启动引擎。