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 流程模型的执行顺序示意图:

processModel

流程执行顺序如下:

  1. 从绿色“开始”节点启动流程
  2. 执行 Task 1
  3. Task 1 完成后执行 Task 2
  4. 遇到红色“结束”节点时流程终止

4. jBPM 插件安装指南

要使用 jBPM,首先需要在 IDE 中安装插件。以下是 Eclipse 和 IntelliJ IDEA 的配置步骤。

4.1. Eclipse 插件安装

Eclipse 需要手动安装 jBPM 插件,步骤如下:

  1. 打开 Eclipse,进入 Help → Install New Software
  2. 添加 jBPM 更新站点:https://downloads.jboss.org/jbpm/release/7.48.0.Final/updatesite/
  3. 选择插件并完成安装
  4. 重启 Eclipse

重启后,进入 Window → Preferences → Drools → Drools Flow Nodes,勾选所有选项,点击 Apply and Close:

Drools config

完成后即可创建 jBPM 项目。

4.2. IntelliJ IDEA 插件启用

IntelliJ IDEA Ultimate 版本默认内置 jBPM 插件,Community 版本不支持。

启用方式如下:

  1. 进入 Configure → Settings → Plugins
  2. 在 Installed 列表中找到 JBoss jBPM 插件并启用:

Drools config IJI

⚠️ 注意: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 file

打开后进入 BPMN 设计器界面:

bpmn designer

设计器界面说明:

  • 左侧是流程节点库
  • 中间是流程设计区域
  • 右侧是节点属性设置

在本示例中,我们使用以下节点:

  • 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 规范文档。


原始标题:A Guide to jBPM with Java | Baeldung