目錄
- 什麼是 Camunda?為什麼要用它?
- 核心概念速覽
- 環境準備:安裝 Camunda Platform
- 實戰演練:構建“員工請假”流程
- 步驟一:繪製流程圖
- 步驟二:配置用户任務
- 步驟三:部署和啓動流程
- 步驟四:處理任務
- 回顧與總結
- 下一步去哪裏?
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. 實戰演練:構建“員工請假”流程
我們要實現一個簡單的請假流程:
- 員工提交請假申請。
- 經理審批申請。
- 系統根據審批結果(批准/拒絕),發送不同的通知。
步驟一:繪製流程圖
- 在 Camunda Web 應用中,點擊頂部菜單欄的 Tasklist。
- 在左側菜單中,找到並點擊 Processes -> Create process。
- 給流程起個名字,比如
vacation-request,然後點擊 Create。
現在你會進入 Camunda Modeler(一個基於 Web 的流程設計器)。我們來繪製流程:
- 開始事件:畫布上已經有一個圓圈(開始事件),代表流程的起點。
- 用户任務 - 填寫申請:
- 從右側的 Palette(工具面板)拖拽一個 User Task(用户任務)到畫布上。
- 選中這個任務,在底部的 Properties(屬性)面板中,設置其 Name 為
填寫請假申請,Id 為request-leave。
- 用户任務 - 經理審批:
- 再拖拽一個 User Task,放在後面。
- 設置 Name 為
經理審批,Id 為manager-approval。
- 排他網關:
- 拖拽一個 Exclusive Gateway(中間帶 X 的菱形)到畫布上。這是一個決策點,流程會根據條件選擇不同的路徑。
- 結束事件 - 批准:
- 拖拽一個 End Event(中間加粗的圓圈)到網關的下方。
- 設置 Name 為
批准。
- 結束事件 - 拒絕:
- 再拖拽一個 End Event 到網關的右側。
- 設置 Name 為
拒絕。
- 連接所有元素:
- 使用 Sequence Flow(箭頭)按順序連接所有元素:
開始 -> 填寫申請 -> 經理審批 -> 排他網關。 - 從網關畫出兩條箭頭,分別指向
批准和拒絕兩個結束事件。
現在你的流程圖應該是這樣的:
[開始] -> [填寫請假申請] -> [經理審批] -> {決策點} -> [批准]
|
└------------> [拒絕]
- 配置審批條件:
- 點擊從“排他網關”指向“批准”的箭頭。
- 在 Properties 面板中,找到 Condition 字段,輸入:
${approved == true}。 - 點擊從“排他網關”指向“拒絕”的箭頭。
- 在 Condition 字段,輸入:
${approved == false}。 - 這個
approved是一個流程變量,我們稍後會在任務表單中設置它。
- 保存流程:點擊左上角的 Save 按鈕。
步驟二:配置用户任務
我們需要為“經理審批”任務指定由誰來處理。
- 選中“經理審批”這個 User Task。
- 在 Properties 面板中,找到 Assignment 分配部分。
- 在 Candidate Groups(候選組)輸入框中,輸入
manager。這意味着所有屬於manager用户組的成員都可以看到並處理這個任務。
步驟三:部署和啓動流程
- 部署流程:
- 在 Camunda Modeler 中,點擊右上角的 Deploy(部署)按鈕。
- 確認部署信息,點擊 Deploy。現在,你的流程定義已經被上傳到流程引擎中了。
- 創建測試用户:
- 為了模擬員工和經理,我們需要兩個用户。
- 打開新標籤頁,訪問
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組中。
- 啓動流程實例:
- 回到 Tasklist 應用 (
http://localhost:8080/camunda/app/tasklist/default/)。 - 點擊右上角的 Start Process。
- 在 Process Definition 下拉列表中,選擇我們剛剛創建的
vacation-request。 - 點擊 Start。
流程啓動後,第一個任務“填寫請假申請”會出現在我們的任務列表中。
步驟四:處理任務
- 員工完成任務:
- 在 Tasklist 中,你應該能看到名為
填寫請假申請的任務。 - 點擊這個任務。
- Camunda 會自動生成一個簡單的表單。我們可以在 Form Fields 中添加一些字段,比如
reason(請假原因) 和days(天數)。 - 填寫表單後,點擊 Complete。
- 經理審批任務:
- 現在,流程流轉到了“經理審批”環節。但是當前登錄的是
demo用户,他不是manager組的成員,所以看不到這個任務。 - 我們需要註銷當前用户(點擊右上角用户名 -> Logout)。
- 使用我們創建的經理賬號登錄:Username:
manager, Password:manager(如果你沒設置密碼,默認是用户名)。 - 登錄後,你應該能在 Tasklist 中看到
經理審批任務。 - 點擊這個任務。
- 在表單中,我們需要一個字段來設置審批結果。在 Form Fields 中添加一個 Boolean 類型的字段,ID 設為
approved(和我們之前在網關條件中用的變量名一致),Label 設為是否批准。 - 勾選(或取消勾選)這個複選框,然後點擊 Complete。
- 查看結果:
- 如果你勾選了
approved,流程實例會流向“批准”的結束事件。 - 如果你沒有勾選,流程實例會流向“拒絕”的結束事件。
- 你可以切換回 Cockpit (
http://localhost:8080/camunda/app/cockpit/default/),在 Process Instances 頁面查看流程的歷史記錄和當前狀態,驗證流程是否按預期執行。
恭喜!你已經成功使用 Camunda 創建、部署並執行了你的第一個業務流程!
5. 回顧與總結
在這個教程中,我們學會了:
- Camunda 的基本價值:自動化和可視化業務流程。
- 核心概念:BPMN、流程定義、流程實例、任務。
- 如何快速搭建環境:使用 Docker 啓動 Camunda。
- 如何使用 Modeler:繪製包含用户任務、網關和結束事件的 BPMN 流程圖。
- 如何部署和執行:通過 Web 應用部署流程、啓動實例、處理任務。
這個例子雖然簡單,但它涵蓋了 Camunda 最核心的工作流:定義 -> 部署 -> 啓動 -> 執行。