1. 介绍
在本教程中,我们将介绍业务流程管理(Business Process Management,BPM)系统,并重点讲解其在 Java 中的实现 —— jBPM 系统。
jBPM 是一个基于 Java 的轻量级工作流引擎,支持使用 BPMN 2.0 标准建模和执行业务流程。它适用于需要灵活流程定义和执行控制的企业级应用。
2. 业务流程管理系统(BPM)
业务流程管理(BPM)是一个跨职能的管理领域,它不仅限于开发环节,还涵盖企业的多个运营方面。
BPM 的核心目标是提升业务流程的可视化与可控性。通过流程图建模和持续优化,我们可以找到更高效的流程路径,从而降低成本、提升效益。
它定义了清晰的目标、生命周期、最佳实践,以及参与者之间的通用语言 —— 即“业务流程”。
3. jBPM 系统简介
jBPM 是 Java 平台上 BPM 的实现方案,它提供了一个工作流引擎来创建、执行和监控业务流程。
✅ 特点包括:
- 支持 BPMN 2.0 标准
- 提供流程执行引擎
- 可视化流程建模
- 支持持久化和事务处理
jBPM 强调“可执行业务流程”,这意味着流程定义足够详细,可以直接在工作流引擎中运行。
以下是一个 BPMN 流程模型的执行顺序示意图:
流程执行顺序如下:
- 从绿色“开始”节点启动流程
- 执行 Task 1
- Task 1 完成后执行 Task 2
- 遇到红色“结束”节点时流程终止
4. jBPM 插件安装指南
要使用 jBPM,首先需要在 IDE 中安装插件。以下是 Eclipse 和 IntelliJ IDEA 的配置步骤。
4.1. Eclipse 插件安装
Eclipse 需要手动安装 jBPM 插件,步骤如下:
- 打开 Eclipse,进入 Help → Install New Software
- 添加 jBPM 更新站点:https://downloads.jboss.org/jbpm/release/7.48.0.Final/updatesite/
- 选择插件并完成安装
- 重启 Eclipse
重启后,进入 Window → Preferences → Drools → Drools Flow Nodes,勾选所有选项,点击 Apply and Close:
完成后即可创建 jBPM 项目。
4.2. IntelliJ IDEA 插件启用
IntelliJ IDEA Ultimate 版本默认内置 jBPM 插件,Community 版本不支持。
启用方式如下:
- 进入 Configure → Settings → Plugins
- 在 Installed 列表中找到 JBoss jBPM 插件并启用:
⚠️ 注意:IntelliJ 目前不支持 BPMN 2.0 图形化设计器,但可以导入 *.bpmn 文件运行。
4.3. JDK 21 兼容性处理
JDK 21 移除了 java.lang.Compiler
类,使用 jBPM 需额外引入 mvel2 依赖:
<dependency>
<groupId>org.mvel</groupId>
<artifactId>mvel2</artifactId>
<version>2.5.2.Final</version>
</dependency>
5. Hello World 示例
接下来我们通过一个简单示例演示如何创建和运行 jBPM 流程。
5.1. 创建 jBPM 项目
Eclipse
- File → New → Other → jBPM Project (Maven)
- 输入项目名后完成创建,Eclipse 会自动下载依赖
IntelliJ IDEA
- File → New → Project → JBoss Drools
- 项目创建完成后,依赖会自动下载至项目 lib 目录
5.2. 创建 Hello World 流程模型
在 src/main/resources 下新建 BPMN 文件,后缀为 .bpmn
:
打开后进入 BPMN 设计器界面:
设计器界面说明:
- 左侧是流程节点库
- 中间是流程设计区域
- 右侧是节点属性设置
在本示例中,我们使用以下节点:
- Start Event:流程起点
- Script Task:用于执行 Java 脚本
- End Event:流程终点
5.3. 声名与创建知识库(kbase)
jBPM 使用 kbase
来加载 BPMN 流程文件。我们需要在 resources/META-INF
下创建 kmodule.xml
:
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="kbase" packages="com.baeldung.bpmn.process" />
</kmodule>
然后使用 KieContainer
加载:
KieServices kService = KieServices.Factory.get();
KieContainer kContainer = kService.getKieClasspathContainer();
KieBase kbase = kContainer.getKieBase("kbase");
5.4. 创建 jBPM 运行时管理器
使用 JBPMHelper
构建运行环境:
JBPMHelper.startH2Server();
JBPMHelper.setupDataSource();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
构建 RuntimeEnvironment
:
RuntimeEnvironmentBuilder runtimeEnvironmentBuilder =
RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder();
RuntimeEnvironment runtimeEnvironment = runtimeEnvironmentBuilder
.entityManagerFactory(emf)
.knowledgeBase(kbase)
.get();
创建 RuntimeManager
:
RuntimeManager runtimeManager = RuntimeManagerFactory.Factory.get()
.newSingletonRuntimeManager(runtimeEnvironment);
5.5. 执行流程实例
获取 RuntimeEngine
并启动流程:
RuntimeEngine engine = runtimeManager.getRuntimeEngine(null);
KieSession ksession = engine.getKieSession();
ksession.startProcess("com.baeldung.bpmn.process.HelloWorld");
流程启动后,会在控制台输出 Hello World
。
6. 总结
本文介绍了 BPM 系统及其在 Java 中的实现方案 jBPM。
✅ 主要内容包括:
- BPM 的定义与价值
- jBPM 的核心功能与流程执行机制
- Eclipse 与 IntelliJ 插件安装
- JDK 21 的兼容性处理
- Hello World 示例流程创建与执行
要运行示例流程,只需执行 WorkflowProcessMain
类的 main 方法即可。
如需进一步学习,建议查阅 jBPM 官方文档 和 BPMN 2.0 规范文档。