Camunda BPM的总体架构介绍
前言
?? Camunda是一個基于Java的框架,支持用于工作流和流程自動化的BPMN、用于案例管理的CMMN和用于業(yè)務(wù)決策管理的DMN。
??本篇文章我們僅考慮BPMN流程引擎,先不涉及CMMN和DMN引擎。就流程引擎而言,Camunda是一個靈活的工作流框架,它的核心是一個在Java虛擬機(jī)內(nèi)部運(yùn)行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java應(yīng)用程序或運(yùn)行時容器中。Camunda與Java EE 集成,并可以與Spring Framework和Spring Boot完美匹配。
一、總體架構(gòu)
??Camunda BPMS到底包括哪些功能,我們拿官方的一張架構(gòu)圖進(jìn)行解讀分析。
1.從BPM應(yīng)用維度看
??Camunda分為流程設(shè)計(jì)和流程運(yùn)行兩個階段,見圖中最下方的藍(lán)色大箭頭,Model和Execute,按照這兩個階段,Camunda劃分為兩大部分功能,對應(yīng)設(shè)計(jì)階段的功能有 Modeler,對應(yīng)運(yùn)行階段的功能有Engine、TaskList、Cockpit、Admin。
2.從BPM功能維度看
??Camunda包括了流程設(shè)計(jì)器(Modeler)、流程引擎(Engine)、API接口(REST/Java API)、任務(wù)列表(TaskList)、流程管理控制臺(Cockpit)、系統(tǒng)管理工具(Admin)。在Camunda商業(yè)產(chǎn)品中還包括了流程監(jiān)控預(yù)警工具(Optimize)、流程協(xié)同設(shè)計(jì)工具(Cawemo)。這里重點(diǎn)先說一下Camunda流程設(shè)計(jì)器,支持兩種模式,一種是富客戶端的流程建模工具Camunda Modeler,需要在客戶端安裝;另一種是基于瀏覽器的流程設(shè)計(jì)器bpmn.io,這兩款軟件均開源。
3.從BPM角色維度看
??Camunda分為業(yè)務(wù)分析師、流程開發(fā)工程師、最終用戶、流程管理員、系統(tǒng)管理員這幾個角色,每個角色對應(yīng)BPMS不同的功能。業(yè)務(wù)分析師、流程開發(fā)工程師使用流程設(shè)計(jì)器(Modeler)進(jìn)行流程建模,最終用戶使用任務(wù)列表(TaskList)進(jìn)行流程發(fā)起和審批,流程管理員使用流程管理控制臺(Cockpit)進(jìn)行流程管理,比如流程暫停恢復(fù)、流程異常干預(yù)等,系統(tǒng)管理員使用系統(tǒng)管理工具(Admin)進(jìn)行系統(tǒng)管理,比如組織用戶管理、權(quán)限管理等。
二、集成能力
1.支持與Spring框架集成
??Camunda支持與spring框架集成,把 camunda-engine-spring框架引入到項(xiàng)目的maven模塊內(nèi),它可以與Spring 3、4或5版本一起使用,具體集成過程后面有文章單獨(dú)介紹。
2.支持與spring boot集成
??后面文章專題介紹
3.支持與CDI and Java EE 集成
??CDI (Context and Dependency Injection)是 Java EE6的標(biāo)準(zhǔn)和依賴注入,Camunda通過camunda-engine-cdi模塊集成可利用camunda引擎的配置和cdi的可擴(kuò)展性。
4.支持與Runtime Container 集成
??支持與tomcat、JBoss等常見的運(yùn)行容器集成。
三、部署架構(gòu)
??Camunda BPM是一個靈活的框架,支持嵌入式、分布式、集群等多種部署模式。
1.嵌入式部署
??流程引擎以Jar包方式添加到應(yīng)用程序中,通過這種方式,可以在應(yīng)用程序生命周期中輕松啟動和停止流程引擎。
2.基于web容器啟動,多應(yīng)用共享
??流程引擎在運(yùn)行時容器(Servlet容器、應(yīng)用程序服務(wù)器等)中啟動,流程引擎作為容器服務(wù)提供,可以由容器內(nèi)部署的所有應(yīng)用程序共享。這種方式在實(shí)際應(yīng)用場景中不多見。
3.獨(dú)立部署,多應(yīng)用共享
??在這種情況下,流程引擎獨(dú)立部署,通過網(wǎng)絡(luò)提供服務(wù),網(wǎng)絡(luò)上運(yùn)行的不同應(yīng)用程序可以通過遠(yuǎn)程通信通道與進(jìn)程引擎交互,遠(yuǎn)程訪問流程引擎的最簡單方法是使用內(nèi)置的REST服務(wù)接口。在企業(yè)級流程中心部署架構(gòu)中,這是一種最常見的部署模式,在現(xiàn)在的微服務(wù)部署架構(gòu)中,也可以采取這種方式。
4.集群部署
??為了提供擴(kuò)展或故障轉(zhuǎn)移功能,流程引擎可以分布到集群中的不同節(jié)點(diǎn),每個流程引擎實(shí)例都必須連接到共享數(shù)據(jù)庫。Camunda BPM不提供現(xiàn)成的負(fù)載平衡功能,可以采用nginx等第三方負(fù)載均衡軟件實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的Camunda BPM的总体架构介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之字符串操作方法
- 下一篇: python进阶--文件读写操作