知識庫 / Spring / Spring Boot RSS 訂閱

運行嵌入式 Camunda 引擎的 Spring Boot 應用程序

Spring Boot
HongKong
5
11:50 AM · Dec 06 ,2025

1. 概述

流程引擎在業務流程自動化中發揮着重要作用。Camunda 平台是一個開源工作流和業務流程管理系統 (BPMS),它提供了一個流程引擎,用於業務流程建模。Spring Boot 與 Camunda 平台具有良好的集成。在本教程中,我們將探討如何利用 Camunda 引擎集成到 Spring Boot 應用程序中。

2. Camunda 工作流引擎

Camunda 工作流引擎是 Activiti 的分支,提供基於 業務流程建模術 2.0 (BPMN 2.0) 規範的流程和仿真引擎。 此外,它還包含用於建模、執行和監控的工具和 API。 首先,我們可以使用 Modeler 建模端到端的業務流程。 Camunda 提供 Modeler 用於設計 BPMN 流程。 Modeler 作為一個桌面應用程序本地運行。 然後,我們將業務流程模型部署到工作流引擎並執行它。 我們可以使用 REST API 和提供的 Web 應用程序(Cockpit、Tasklist 和 Admin)以不同的方式執行業務流程。 Camunda 引擎可以以多種方式使用: SaaS、自託管和嵌入式庫。 在本教程中,我們將重點介紹 Camunda 嵌入式引擎在 Spring Boot 應用程序中的使用

3. 使用嵌入式 Camunda 引擎創建 Spring Boot 應用程序

在本節中,我們將使用 Camunda Platform Initializr 創建並配置 Spring Boot 應用程序,其中包含嵌入式 Camunda 引擎。

3.1. Camunda 平台 Initializr

我們可以使用 Camunda 平台 Initializr 創建一個集成了 Camunda 引擎的 Spring Boot 應用程序。 它是由 Camunda 提供的網絡應用程序工具,類似於 Spring Initializr。 讓我們使用以下信息在 Camunda 平台 Initializr 中創建應用程序: 此工具允許我們添加項目元數據,包括 Group, Artifact, Camunda BPM 版本, H2 數據庫, 和 Java 版本。 此外,我們還可以添加 Camunda BPM 模塊,以支持 Spring Boot 應用程序中的 Camunda REST API 或 Camunda Webapps。 另外,我們還可以添加 Spring Boot Web 和 Security 模塊。 另一個選項是設置 Admin 用户名和密碼,這對於使用 Camunda Webapps(如 Cockpit 應用程序)登錄所需的。 現在,我們點擊 Generate Project 下載項目模板為 .zip 文件。 最後,我們提取文件並打開 pom.xml 在我們的 IDE 中。

3.2. Camunda 配置

生成的項目是一個 常規 Spring Boot 應用,幷包含額外的 Camunda 依賴項和配置。 目錄結構如圖所示:

在目錄中,有一個簡單的流程圖 process.bpmn,位於 resources 目錄中。 它使用啓動節點開始執行流程。 隨後,流程將繼續執行 Say hello to demo 任務。 在此任務完成後,執行流程會停止,因為流程會遇到最終節點。 Camunda 屬性位於 application.yaml 中。 讓我們來看一下生成的默認 Camunda 屬性在 application.yaml 中的內容:

camunda.bpm.admin-user:
  id: demo
  password: demo

我們使用 camunda.bpm.admin-user 屬性可以更改管理員用户名和密碼。

4. 使用 Spring Boot 創建應用程序

另一種使用 Spring Boot 從頭開始,並將其與 Camunda 庫集成的方式,是使用 Spring Boot 創建 Spring Boot 應用程序。

4.1. Maven 依賴

讓我們首先在我們的 <em>pom.xml</em> 中聲明 <em>camunda-bpm-spring-boot-starter-webapp</em> 依賴:

<dependency>
    <groupId>org.camunda.bpm.springboot</groupId>
    <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
    <version>7.18.0</version>
</dependency>

我們需要一個數據庫來存儲流程定義、流程實例、歷史信息等。在本教程中,我們使用基於文件的 H2 數據庫。因此,我們需要添加 h2 spring-boot-starter-jdbc 依賴項:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

4.2. 流程模型示例

我們使用 Camunda Modeler 定義一個簡單的貸款請求工作流程圖,文件名為 loanProcess.bpmn。 下圖是 loanProcess.bpmn 模型的執行順序流程圖,有助於我們理解:

我們通過啓動節點開始執行流程。 隨後,會執行 Calculate Interest 任務。 接下來,我們將繼續執行 Approve Loan 任務。 在此任務完成後,執行流程會停止,因為流程會遇到最終節點。 Calculate Interest 任務是一個服務任務,並調用 CalculateInterestService Bean:

@Component
public class CalculateInterestService implements JavaDelegate {

    private static final Logger LOGGER = LoggerFactory.getLogger(CalculateInterestService.class);

    @Override
    public void execute(DelegateExecution execution) {
        LOGGER.info("calculating interest of the loan");
    }

}

我們需要實現JavaDelegate接口。該類可用於服務任務和事件監聽器。它在execute()方法中提供所需的邏輯,該邏輯在進程執行期間將被調用

5. 演示

現在讓我們運行 Spring Boot 應用程序。我們打開瀏覽器並輸入 URL http://localhost:8080/:

讓我們輸入用户憑據並訪問 Camunda Web 應用程序 Cockpit、Tasklist 和 Admin:

5.1. 駕駛艙應用

Camunda 駕駛艙 Web 應用程序為用户提供實時監控已部署流程及其操作的設施。啓動 Spring Boot 應用程序時,可以查看自動部署的流程數量:  如你所見,有一個流程已部署 (loanProcess.bpmn). 可以通過點擊已部署流程來查看部署流程圖:   目前流程尚未啓動。可以使用任務列表應用程序啓動它。

5.2. 任務列表應用

Camunda 任務列表應用用於管理用户與任務之間的交互

我們可以通過點擊“啓動流程”菜單項來啓動示例流程: 流程啓動後,計算利息任務將被執行,並記錄到控制枱。

2022-11-27 09:34:05.848  INFO 2748 --- [nio-8080-exec-3] c.e.c.task.CalculateInterestService      : calculating interest of the loan

現在,我們可以看到在 Cockpit 應用程序中運行的流程實例: 請注意,流程正在等待 批准貸款 用户任務。 在此步驟中,我們將任務分配給 demo 用户。 因此,demo 用户可以在 Tasklist 應用程序中看到該任務: 可以通過點擊“完成”按鈕來完成該任務。 最終,我們可以看到在 Cockpit 應用程序中運行的流程已完成。

5.3. 管理應用程序

Camunda 管理應用程序用於管理用户及其對系統的訪問權限。 此外,還可以管理租户和組:

 

6. 結論

本文介紹了使用嵌入式 Camunda 引擎設置 Spring Boot 應用程序的基礎知識。我們使用 Camunda Platform Initializr 工具和 Spring Boot 從零開始創建了該應用程序。此外,我們還使用 Camunda Modeler 定義了一個簡單的貸款請求流程模型。最後,我們使用 Camunda Web 應用程序啓動並探索了該流程模型。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.