flowable camunda activiti 三個架構都是從jbpm架構誕生出來的,先是有jbpm4,然後出來了一個activiti5,activiti5發展一段時間,又出來了一個Camunda。activiti5發展了4年,緊接着出來了一個flowable。本文重點對flowable camunda兩個架構的功能對比。對比的camunda版本是7.10.0,flowable架構的版本是6.4.1.
設計器對比
camunda有一個eclipse插件設計器,還有一個獨立的modler設計器,有基于BS的,也有基于CS的。用于繪制BPMN/CMMN/DMN引擎需要的流程文檔。
flowable隻有個eclipse插件設計器,目前隻能繪制5版本的流程,6版本新增加的節點以及屬性無法繪制。本質上就是activiti5 eclipse插件,隻是換了一個圖示;線上web設計器基于angularjs1.x版本開發的。
camunda設計器如下:
flowable設計器如下:
小結
camunda設計器既可以面向業務人員,又可以面向開發人員。
flowable設計器僅面向專業開發人員。
支援的資料庫對比
camunda支援的資料庫
- MySQL 5.6 / 5.7
- MariaDB 10.0 / 10.2 / 10.3
- Oracle 10g / 11g / 12c
- IBM DB2 9.7 /10.1 / 10.5 / 11.1 (excluding IBM z/OS for all versions)
- PostgreSQL 9.1 / 9.3 / 9.4 / 9.6 / 10.4
- Microsoft SQL Server 2008 R2/2012/2014/2016 (see Configuration Note)
- H2 1.4 (not recommended for Cluster Mode - see Deployment Note)
Flowable支援的資料庫
- MySQL 5.6 / 5.7
- Oracle 10g / 11g / 12c
- IBM DB2 9.7 /10.1 / 10.5 / 11.1 (excluding IBM z/OS for all versions)
- PostgreSQL 9.1 / 9.3 / 9.4 / 9.6 / 10.4
- Microsoft SQL Server 2008 R2/2012/2014/2016 (see Configuration Note)
- H2 1.4 (not recommended for Cluster Mode - see Deployment Note)
小結
flowable暫時不支援MariaDB。
運作容器對比
camunda支援的運作容器
- Apache Tomcat 7.0 / 8.0 / 9.0
- JBoss Application Server 7.2 and JBoss EAP 6.1 / 6.2 / 6.3 / 6.4 / 7.0 / 7.1
- Wildfly Application Server 8.2 / 10.1 / 11.0 / 12.0 / 13.0 / 14.0
- IBM WebSphere Application Server 8.5 / 9.0 (Enterprise Edition only)
- Oracle WebLogic Server 12c (12R1,12R2) (Enterprise Edition only)
- Spring Boot application with embedded Tomcat (see Supported versions and Deployment scenarios)
flowable支援的運作容器
- Apache Tomcat 7.0 / 8.0 / 9.0
- Oracle WebLogic Server 12c (12R1,12R2) (Enterprise Edition only)
小結
flowable架構不支援運作在JBoss、Wildfly之類的容器之上。官方目前也沒有開發計劃。
架構相容其他workflow情況
camunda相容其他workflow情況
- Active BPEL
- Alfresco Activiti
- Appian BPM
- Bonitasoft
- JBoss jBPM
- IBM WPS / IBM BPM / IBM MQ Workflow / IBM Lotus Notes
- Oracle BPM
- Software AG Webmethods
- Pega BPM
flowable相容其他workflow情況
- Alfresco Activiti5
- Flowable5
小結
因為flowable去除了PVM,目前隻有相容activiti5的程式包,關于其他基于pvm開發的流程引擎統統不相容。
功能對比
由于Flowable與Camunda好多功能都是類似的,是以在這裡重點羅列差異化的功能
- camunda支援流程執行個體的遷移,比如同一個流程有多個執行個體,多個流程版本,不同流程執行個體運作在不同的版本中,camunda支援任意版本的執行個體遷移到指定的流程版本中,并可以在遷移的過程中支援從哪個節點開始。
- camunda基于PVM技術,是以使用者從Activii5遷移到camunda基本上毫無差異。flowable沒有pvm了,是以遷移工作量更大(執行個體的遷移,流程定義的遷移、定時器的遷移都非常麻煩)。
- camunda對于每一個CMD指令類都提供了權限校驗機制,flowable沒有。
- camunda繼續每一個API都有批處理的影子,flowable幾乎沒有。比如批量挂起流程、激活流程等,使用camunda可以直接使用API操作,使用Flowable則隻能自己去查詢集合,然後循環周遊集合并操作。
- camunda很多API均支援批處理,在批量處理的時候可以指定是異步方式操作或者是同步方式操作。異步的話定時器會去執行。Flowable沒有異步批處理的機制。比如批量異步删除所有的曆史資料。
- camunda啟動執行個體的時候支援從哪個節點開始,而不是僅僅隻能從開始節點運轉執行個體。Flowable僅僅隻能從開始節點運轉執行個體。
- camunda支援任意節點的跳轉,可以跳轉到連線也可以跳轉到節點,并且在跳轉的過程中支援是否觸發目标節點的監聽器。flowable沒有改原生API需使用者去擴充。
- camunda支援鍊式生成流程,比如
Bpmn.createExecutableProcess(PROCESS_KEY) .camundaHistoryTimeToLive(5) .startEvent() .userTask() .endEvent().done(); flowable不支援。
- camunda支援雙異步機制,第一個異步即節點可以異步執行,第二個異步方式是:完成異步任務後,還可以繼續異步去執行任務後面的連線。是以稱之為雙異步機制,flowable隻有第一種異步方式。
- camunda支援多種腳本語言,這些腳本語言可以在連線上進行條件表達式的配置,開箱即用。比如python、ruby、groovy、JUEL。flowable僅僅支援JUEL、groovy。開箱即用的意思就是如果想用python直接引入jython包就可以用了,不需要額外配置。
- camunda支援外部任務,比如我們有時候想在一個節點中執行調用第三方的API或者完成一些特定的邏輯操作,就可以使用外部任務,外部任務有兩種表,并支援第三方系統定期來抓取并鎖定外部任務,然後執行業務完畢之後,完成外部任務,流程執行個體繼續往下執行。外部任務的好處就是解決了分布式事物的問題。在flowable中我們可以使用httpTask任務,我個人更傾向于camunda外部任務,因為這個外部任務有外部系統決定什麼時候完成,httpTask是不等待任務,執行個體走到這個節點之後,調用一個api就直接往下跑了,外部任務不會繼續往下跑,有外部系統去決定啥時候往下跑。
- camunda支援為使用者定制一些個性化的偏好查找API,比如張三每次查詢任務的時候,一般固定點選某某三個查詢條件過濾資料,使用camunda就可以将這三個查詢條件進行持久化,下次張三來了,就可以直接根據他的偏好進行資料的過濾,類似機器學習。
- camunda支援曆史資料的批量删除或者批量遷移到其他媒體,比如批量遷移到es,flowable沒有該機制。
- camunda支援在高并發部署流程的時候,是否使用鎖機制,flowable沒有該機制。
- camunda支援單引擎多組合、多引擎多庫。flowable僅僅支援單引擎多組合。
- camunda支援流程執行個體跨流程定義跳轉,flowable沒有該機制。
- camunda支援分布式定時器,flowable沒有該機制。
- flowable支援nosql,camunda隻有nosql的解決方案。
- camunda支援優化流程,以及了解流程引擎的瓶頸所在和每個環節的耗時,flowable沒有該機制。
- camunda修改了流程模闆xml解析方式,相比flowable性能更好。
- camunda在解析流程模闆xml的時候,去除了activiti5的雙解析機制,相對而言耗時時間更短。flowable沒有了pvm是以規避了雙解析機制。關于雙解析機制可以參考《Activiti權威指南》一書。
- camunda可以在任意節點添加任意的屬性,flowable原生API沒有,需要自己擴充。
- camunda架構沒有為流程生成圖檔的API(所有流程圖展示以及高亮均在前端動态計算),activiti5/6/flowable5/flowable6有圖檔生成以及高亮的API.
- camunda可以在節點中定義定時作業的優先級,也可以在流程中進行全局優先級的定義。當節點沒有定義優先級的時候可以使用全局的優先級字段。activiti5/6/flowable5/flowable6沒有改功能。
- camunda可以再流程中定義流程的tag标記,activiti5/6/flowable5/flowable6沒有改功能。
- camunda/activiti5/6/flowable5/flowable6 均不支援國産資料庫,比如人大金倉 和 達夢。
- flowable6支援LDAP,openLDAP,camunda不支援。activiti5不支援。
以上方方面的對比均來自flowable camunda activiti三個架構源碼的對比。關于更多的更詳細的性能對比,後續文章會持續更新