3. 环境准备:低代码平台或BPM引擎的选型与初始化配置
在开始配置采购合同审批路由之前,必须先选定承载流程的运行环境。本章节将帮助你在主流低代码平台与BPM引擎之间做出合理选择,并完成初始化配置,为后续的多级审批与动态条件分支设计打下基础。
3.1 选型决策:低代码平台 vs. BPM引擎
低代码平台与BPM引擎在流程设计理念上存在本质差异,直接影响审批路由的实现方式。下表从采购合同审批场景出发,对比两类技术选型的核心差异:
| 对比维度 | 低代码平台(如明道云、简道云) | BPM引擎(如Activiti、Flowable) |
|---|---|---|
| 流程建模方式 | 可视化拖拽表单+审批流配置,无需编码 | BPMN 2.0标准建模,需XML配置或代码开发 |
| 动态条件分支 | 内置条件表达式,支持表单字段联动 | 通过Groovy/Java脚本或表达式引擎实现 |
| 多级审批路由 | 预设审批节点层级,支持会签/或签 | 基于网关+任务监听器灵活编排 |
| 集成能力 | 提供REST API与第三方系统对接 | 原生支持Spring生态,适合深度集成 |
| 适用团队 | 业务人员+IT运维,快速交付 | 专业开发团队,复杂流程场景 |
| 采购合同场景匹配度 | ★★★★☆ 适合中小规模、快速变更 | ★★★★★ 适合大型企业、高合规要求 |
选型建议: 本课程以BPM引擎(Activiti 7)作为实战环境,原因在于采购合同审批涉及金额分级、部门会签、法务审核等多重动态条件,BPMN 2.0的网关与表达式机制能更精确地表达此类复杂路由逻辑。若你所在团队使用低代码平台,核心设计思路(节点配置、条件表达式、审批人解析)同样适用,仅实现方式不同。
3.2 环境初始化配置清单
选定BPM引擎后,需要完成以下初始化配置。本课程基于Activiti 7 + Spring Boot 2.7 + MySQL 8.0搭建,以下为关键步骤:
- 创建Spring Boot项目:使用Spring Initializr生成基础工程,引入依赖:
spring-boot-starter-web、activiti-spring-boot-starter、mysql-connector-j、mybatis-plus-boot-starter。 - 配置数据源:在
application.yml中指定MySQL连接信息,并设置Activiti的数据库策略为true(自动建表)。 - 初始化Activiti表结构:启动项目后,Activiti自动在数据库中创建ACT_开头的流程引擎表(如ACT_RE_PROCDEF、ACT_RU_TASK等)。
- 配置流程引擎:在配置类中注入
ProcessEngine,并设置自定义的UserGroupManager用于用户与组的管理。 - 部署测试流程:编写一个简单的BPMN 2.0流程文件(如
purchase-approval.bpmn20.xml),通过RepositoryService完成部署验证。
核心配置代码片段(application.yml):
spring:
datasource:
url: jdbc:mysql://localhost:3306/activiti_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
activiti:
database-schema-update: true
history-level: full
db-history-used: true
process-definition-location-prefix: classpath:/processes/
check-process-definitions: true
3.3 流程引擎核心组件关系
理解Activiti引擎的内部组件关系,有助于后续配置审批路由时快速定位API。下图展示了流程引擎的核心服务层与数据层的交互结构:
3.4 初始化验证:部署第一个采购审批流程
完成环境配置后,通过部署一个最简单的采购审批流程来验证环境是否就绪。该流程仅包含“发起申请”→“部门经理审批”→“结束”三个节点,用于测试引擎启动与任务流转。
BPMN 2.0 流程文件(purchase-approval-simple.bpmn20.xml)关键片段:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
targetNamespace="http://www.activiti.org/test">
<process id="purchaseApprovalSimple" name="采购合同审批(简单版)" isExecutable="true">
<startEvent id="startEvent" name="发起申请">
<extensionElements>
<activiti:formProperty id="contractAmount" name="合同金额" type="double" required="true"/>
</extensionElements>
</startEvent>
<userTask id="deptManagerTask" name="部门经理审批" activiti:candidateGroups="dept_manager"/>
<endEvent id="endEvent" name="结束"/>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="deptManagerTask"/>
<sequenceFlow id="flow2" sourceRef="deptManagerTask" targetRef="endEvent"/>
</process>
</definitions>
验证步骤: 启动Spring Boot应用后,访问
http://localhost:8080/activiti-rest/process-definitions(若启用REST API),应能看到刚部署的 purchaseApprovalSimple 流程定义。同时,在MySQL的 ACT_RE_PROCDEF 表中也会新增一条记录,KEY_ 字段值为 purchaseApprovalSimple。
3.5 环境就绪检查清单
在进入下一章之前,请逐项确认以下环境准备项已完成:
| 检查项 | 预期结果 | 验证方式 |
|---|---|---|
| 数据库表自动创建 | MySQL中存在ACT_开头的28张表 | 执行 SHOW TABLES LIKE 'ACT_%'; |
| 流程引擎启动成功 | 控制台输出 ProcessEngine created |
查看Spring Boot启动日志 |
| 测试流程部署成功 | ACT_RE_PROCDEF 表有记录 |
执行 SELECT * FROM ACT_RE_PROCDEF; |
| REST API可用(可选) | 返回流程定义JSON列表 | GET请求 /activiti-rest/process-definitions |
常见问题: 若启动时出现
Table 'activiti.ACT_GE_PROPERTY' doesn't exist 错误,请检查 database-schema-update 是否设置为 true,并确认数据库连接用户拥有建表权限。另外,MySQL 8.0+ 需在连接URL中添加 &nullCatalogMeansCurrent=true 参数,避免Activiti扫描到系统库表。