天天看點

流程引擎之Camunda簡介

背景

Camunda 是支援 BPMN(工作流和流程自動化)、CMMN(案例管理) 和 DMN(業務決策管理) java 架構。Camunda 基于Activiti5 保留了 PVM,其開發團隊也是從 activiti 中分裂出來的。Camunda 來自拉丁語動詞”capere”(了解)和“munda”(幹淨),它意味着我們想要深入了解我們周圍的世界,并基于這種了解,我們想要以一種既有效又道德正确的方式讓世界成為一個更美好的地方,為了我們所有人。Camunda 的發展史如下(大圖參考:流程引擎之發展史及對比總結):

  • 2013 年,從 Activiti5 分離出 camunda BPM
  • 2014年3月,camunda BPM 7.1.0-Final 版本
  • ......
  • 2022年11月,camunda BPM 7.18.0 版本

附 Camunda 官方位址:

  • Camunda 官方首頁:https://camunda.com/
  • Camunda 官方文檔:https://docs.camunda.org/get-started/quick-start/
  • Camunda 中文翻譯文檔:http://camunda-cn.shaochenfeng.com/
  • Camunda github:https://github.com/camunda/

Camunda 使用

Camunda 官方提供了 Camunda Platform、Camunda Modeler,其中 Camunda Platform 以 Camunda engine 為基礎為使用者提供可視化界面,Camunda Modeler 是流程檔案模組化平台,在 Camunda Modeler 建立的流程檔案可以 deploy 到 Camunda Platform 并進行管理。另外三方服務可通過 Camunda 官方提供的 rest 或者 java api 來通路 Camunda engine,操作的結果也可以在 Camunda Platform 檢視和管理。

流程引擎之Camunda簡介

1)Camunda Platform 安裝及使用

Camunda Platform 即 Camunda 平台(類似于 jBPM 的 Business Central ),提供Web管理界面,包括流程(process)、任務(task)和使用者(user)管理功能,預設以 H2 為資料庫。使用步驟如下:

Step 1:下載下傳 camunda-bpm-run-7.18.0.zip 解壓,然後執行 start.bat (Windows系統) 或者 start.sh (Linux系統)
  • Camunda Platform 安裝包下載下傳位址:https://camunda.com/download/
流程引擎之Camunda簡介
Step 2:通路并登入(賬号密碼:demo/demo)url: http://localhost:8080/camunda-welcome/index.html

進入 index 頁面後,并賬密登入(demo/demo):

流程引擎之Camunda簡介
流程引擎之Camunda簡介

附官方文檔:

  • Camunda Platform 的使用有興趣的可參考:https://docs.camunda.org/manual/7.9/webapps/

2)Camunda Modeler 安裝及使用

Camunda Modeler 是流程檔案模組化(設計)平台,隻做檔案的設計,支援BPMN、DMN 和 Form 三種類型的檔案設計,具體實作內建了開源架構 https://bpmn.io/ ,以下是安裝使用過程:

Step 1:下載下傳并安裝 Camunda Modeler

以下以 mac 版本作為示例,安裝檔案:camunda-modeler-5.6.0-mac.dmg

  • 官方下載下傳位址:https://camunda.com/download/modeler/
Step 2:打開 Camunda Modeler
流程引擎之Camunda簡介
Step 3:設計請假流程檔案 holiday.bpmn

Camunda Modeler 內建了開源架構 https://bpmn.io/ ,是以流程檔案的設計過程與其類似,這裡以請假流程檔案示例:

流程引擎之Camunda簡介

3)Camunda 與 Spring Boot 內建請假 demo 示例

以請假流程作為 Camunda 基本使用示例(流程示例同 Camunda Modeler 流程檔案示例),學生先發起請假,然後老師審批,若審批時需要進一步審批,則再次發起審批(demo 示例如下,完整代碼參考:https://download.csdn.net/download/zhuqiuhui/87462397):

流程引擎之Camunda簡介

Spring Boot 通過 camunda-bpm-spring-boot-starter-webapp 依賴內建了 Camunda Platform,通過 java api (應用代碼調用)和 rest api(主要支援 Camunda Platform) 都可以操作流程任務,即示例代碼中可通過 http 請求操作的任務可在 Camunda Platform 界面中看到。

Step 1:發起請假請求
流程引擎之Camunda簡介

發起請求請求後,從 Camunda Platform 可以看到任務執行到“Class Teacher”結點,接下來老師進行審批:

流程引擎之Camunda簡介
Step 2:老師審批同意,同時需要進行進一步審批
流程引擎之Camunda簡介

老師審批後,從 Camunda Platform 可以看到任務執行到“HOD”結點,接下來老師需要進一步審批:

流程引擎之Camunda簡介
Step 3:最終同意,請假流程結束
流程引擎之Camunda簡介

附:

  • 上述 demo 源碼位址:https://download.csdn.net/download/zhuqiuhui/87462397
  • Camunda 官方 Spring Boot 工程初始化位址:https://start.camunda.com/

4)流程引擎對比

  • 使用

Camunda 相對于 Activiti 和 Flowable 比較輕量和靈活,且配套文檔比較豐富

  • 性能

Camunda 基于 Acitviti 為遷移友善,但并沒有去掉 PVM(據說性能不好,Activiti已經在 6.X 版本已放棄 PVM,Flowable亦是如此)。另外但有人基于流程引擎進行壓測,得出 Camunda 性能比 Flowable 提升最小10%,同時 Camunda 在高并發場景下穩定性更好

  • 功能

Camunda 和 Flowable 都是基于 Activiti5,是以其很多功能都是相似的。另外在功能上,Camunda 更多支援如支援流程執行個體的遷移、提供批處理 API 操作等

Camunda 整體架構

1)Camunda 整體架構

流程引擎之Camunda簡介

附:上圖較長的描述參考:https://docs.camunda.org/manual/7.18/introduction/

  • 模組化階段:業務分析人員或者開發都在 Camunda Modeler 上進行模組化(如流程檔案設計)
  • 執行階段:終端使用者在應用程式中使用 rest api 或者 java api 通路 engine 進行流程任務管理,同時也可以檢視任務清單(通過 rest api 實作),操作者可檢視任務運作報告(通過 rest api 通路 engine 實作) ,管理者進行使用者管理(通過 rest api 實作)

2)REST API

Camunda BPM 是一個基于 Java 的架構,主要元件是用 Java 編寫的,另外 Camunda 還希望讓非 Java 開發人員可以使用流程引擎技術,這就是 Camunda BPM 還提供 rest api 的原因。

  • Camunda engine rest api 詳細接口及參數參考:https://docs.camunda.org/manual/7.9/reference/rest/

3)其他

其中更詳細有關 Camunda 架構的文檔參考:https://docs.camunda.org/manual/7.18/introduction/architecture/

  • Process Engine 架構
  • Camunda Platform 架構
  • 叢集架構

流程引擎系列文章

• 流程引擎之發展史及對比總結:https://blog.csdn.net/zhuqiuhui/article/details/128986403

• 流程引擎之KIE項目簡介:https://blog.csdn.net/zhuqiuhui/article/details/129035796

• 流程引擎之jBPM簡介:https://blog.csdn.net/zhuqiuhui/article/details/129052162

• 流程引擎之Activiti簡介:https://blog.csdn.net/zhuqiuhui/article/details/129107741

• 流程引擎之Camunda簡介:https://blog.csdn.net/zhuqiuhui/article/details/129107897

• 流程引擎之Flowable簡介:https://blog.csdn.net/zhuqiuhui/article/details/129109273

• 流程引擎之compileflow簡介:https://blog.csdn.net/zhuqiuhui/article/details/129109391