目錄

  1. 什麼是 Camunda?為什麼要用它?
  2. 核心概念速覽
  3. 環境準備:安裝 Camunda Platform
  4. 實戰演練:構建“員工請假”流程
  • 步驟一:繪製流程圖
  • 步驟二:配置用户任務
  • 步驟三:部署和啓動流程
  • 步驟四:處理任務
  1. 回顧與總結
  2. 下一步去哪裏?

1. 什麼是 Camunda?為什麼要用它?

想象一下,公司裏有很多業務流程,比如“員工請假”、“報銷審批”、“訂單處理”等。這些流程通常涉及多個步驟、不同的人和系統。如果只靠人工或郵件來管理,很容易出錯、效率低下且難以追蹤。

Camunda 就是一個開源的工作流和決策自動化平台。它可以幫助你:

  • 可視化流程:用標準的 BPMN 2.0 圖表清晰地定義業務流程。
  • 自動化執行:自動執行流程中的步驟,協調人和系統之間的交互。
  • 追蹤與監控:實時查看每個流程實例的當前狀態,瞭解瓶頸在哪裏。
  • 靈活集成:可以輕鬆地與你現有的 Java 應用、微服務、數據庫等集成。

簡單來説,Camunda 就是業務流程的“大腦”和“指揮官”。


2. 核心概念速覽

在開始之前,我們需要了解幾個 Camunda 的核心概念:

  • BPMN (Business Process Model and Notation):一套國際標準的流程建模語言。我們用它來畫流程圖,就像程序員用代碼來寫程序一樣。
  • 流程引擎:Camunda 的核心,負責解析 BPMN 圖並執行流程。
  • 流程定義:你畫好的那張 BPMN 圖,它是一個“模板”。
  • 流程實例:根據流程定義啓動的一個具體流程。比如,“員工請假”是一個流程定義,而“張三請假一天”就是一個流程實例。
  • 任務:流程中需要由人來完成或由系統自動執行的步驟。
  • Cockpit:Camunda 提供的 Web 管理界面,用於部署流程、監控實例和管理任務。

3. 環境準備:安裝 Camunda Platform

對於初學者,最簡單的方式是使用 Camunda 官方提供的 Docker 鏡像,它包含了所有必需的組件(流程引擎、Web 應用等)。

前提條件:你已經安裝了 Docker。

打開你的終端或命令行,運行以下命令:

docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest

命令解釋:

  • -d:在後台運行容器。
  • --name camunda:給容器起個名字叫 camunda
  • -p 8080:8080:將你本機的 8080 端口映射到容器的 8080 端口。

等待鏡像下載並啓動完成後,打開瀏覽器,訪問 http://localhost:8080/camunda

你會看到 Camunda 的歡迎頁面。點擊 Login 登錄,使用默認的管理員賬號:

  • Username: demo
  • Password: demo

登錄成功後,你將看到 Camunda Web 應用,其中 Cockpit 是我們接下來要使用的主要工具。


4. 實戰演練:構建“員工請假”流程

我們要實現一個簡單的請假流程:

  1. 員工提交請假申請。
  2. 經理審批申請。
  3. 系統根據審批結果(批准/拒絕),發送不同的通知。
步驟一:繪製流程圖
  1. 在 Camunda Web 應用中,點擊頂部菜單欄的 Tasklist
  2. 在左側菜單中,找到並點擊 Processes -> Create process
  3. 給流程起個名字,比如 vacation-request,然後點擊 Create

現在你會進入 Camunda Modeler(一個基於 Web 的流程設計器)。我們來繪製流程:

  1. 開始事件:畫布上已經有一個圓圈(開始事件),代表流程的起點。
  2. 用户任務 - 填寫申請
  • 從右側的 Palette(工具面板)拖拽一個 User Task(用户任務)到畫布上。
  • 選中這個任務,在底部的 Properties(屬性)面板中,設置其 Name填寫請假申請Idrequest-leave
  1. 用户任務 - 經理審批
  • 再拖拽一個 User Task,放在後面。
  • 設置 Name經理審批Idmanager-approval
  1. 排他網關
  • 拖拽一個 Exclusive Gateway(中間帶 X 的菱形)到畫布上。這是一個決策點,流程會根據條件選擇不同的路徑。
  1. 結束事件 - 批准
  • 拖拽一個 End Event(中間加粗的圓圈)到網關的下方。
  • 設置 Name批准
  1. 結束事件 - 拒絕
  • 再拖拽一個 End Event 到網關的右側。
  • 設置 Name拒絕
  1. 連接所有元素
  • 使用 Sequence Flow(箭頭)按順序連接所有元素:開始 -> 填寫申請 -> 經理審批 -> 排他網關
  • 從網關畫出兩條箭頭,分別指向 批准拒絕 兩個結束事件。

現在你的流程圖應該是這樣的:

[開始] -> [填寫請假申請] -> [經理審批] -> {決策點} -> [批准]
                                   |
                                   └------------> [拒絕]
  1. 配置審批條件
  • 點擊從“排他網關”指向“批准”的箭頭。
  • Properties 面板中,找到 Condition 字段,輸入:${approved == true}
  • 點擊從“排他網關”指向“拒絕”的箭頭。
  • Condition 字段,輸入:${approved == false}
  • 這個 approved 是一個流程變量,我們稍後會在任務表單中設置它。
  1. 保存流程:點擊左上角的 Save 按鈕。
步驟二:配置用户任務

我們需要為“經理審批”任務指定由誰來處理。

  1. 選中“經理審批”這個 User Task
  2. Properties 面板中,找到 Assignment 分配部分。
  3. Candidate Groups(候選組)輸入框中,輸入 manager。這意味着所有屬於 manager 用户組的成員都可以看到並處理這個任務。
步驟三:部署和啓動流程
  1. 部署流程
  • 在 Camunda Modeler 中,點擊右上角的 Deploy(部署)按鈕。
  • 確認部署信息,點擊 Deploy。現在,你的流程定義已經被上傳到流程引擎中了。
  1. 創建測試用户
  • 為了模擬員工和經理,我們需要兩個用户。
  • 打開新標籤頁,訪問 http://localhost:8080/camunda/app/admin/default/#/users
  • 創建兩個用户:
  • 用户1 (員工): ID employee, Profile 填寫任意信息。
  • 用户2 (經理): ID manager, Profile 填寫任意信息。
  • 創建完用户後,訪問 http://localhost:8080/camunda/app/admin/default/#/groups
  • 創建一個名為 manager 的組。
  • 然後訪問 http://localhost:8080/camunda/app/admin/default/#/group-members,將 manager 用户添加到 manager 組中。
  1. 啓動流程實例
  • 回到 Tasklist 應用 (http://localhost:8080/camunda/app/tasklist/default/)。
  • 點擊右上角的 Start Process
  • Process Definition 下拉列表中,選擇我們剛剛創建的 vacation-request
  • 點擊 Start

流程啓動後,第一個任務“填寫請假申請”會出現在我們的任務列表中。

步驟四:處理任務
  1. 員工完成任務
  • Tasklist 中,你應該能看到名為 填寫請假申請 的任務。
  • 點擊這個任務。
  • Camunda 會自動生成一個簡單的表單。我們可以在 Form Fields 中添加一些字段,比如 reason (請假原因) 和 days (天數)。
  • 填寫表單後,點擊 Complete
  1. 經理審批任務
  • 現在,流程流轉到了“經理審批”環節。但是當前登錄的是 demo 用户,他不是 manager 組的成員,所以看不到這個任務。
  • 我們需要註銷當前用户(點擊右上角用户名 -> Logout)。
  • 使用我們創建的經理賬號登錄:Username: manager, Password: manager (如果你沒設置密碼,默認是用户名)。
  • 登錄後,你應該能在 Tasklist 中看到 經理審批 任務。
  • 點擊這個任務。
  • 在表單中,我們需要一個字段來設置審批結果。在 Form Fields 中添加一個 Boolean 類型的字段,ID 設為 approved(和我們之前在網關條件中用的變量名一致),Label 設為 是否批准
  • 勾選(或取消勾選)這個複選框,然後點擊 Complete
  1. 查看結果
  • 如果你勾選了 approved,流程實例會流向“批准”的結束事件。
  • 如果你沒有勾選,流程實例會流向“拒絕”的結束事件。
  • 你可以切換回 Cockpit (http://localhost:8080/camunda/app/cockpit/default/),在 Process Instances 頁面查看流程的歷史記錄和當前狀態,驗證流程是否按預期執行。

恭喜!你已經成功使用 Camunda 創建、部署並執行了你的第一個業務流程!


5. 回顧與總結

在這個教程中,我們學會了:

  • Camunda 的基本價值:自動化和可視化業務流程。
  • 核心概念:BPMN、流程定義、流程實例、任務。
  • 如何快速搭建環境:使用 Docker 啓動 Camunda。
  • 如何使用 Modeler:繪製包含用户任務、網關和結束事件的 BPMN 流程圖。
  • 如何部署和執行:通過 Web 應用部署流程、啓動實例、處理任務。

這個例子雖然簡單,但它涵蓋了 Camunda 最核心的工作流:定義 -> 部署 -> 啓動 -> 執行