天天看點

flowable camunda activiti 功能對比設計器對比支援的資料庫對比運作容器對比架構相容其他workflow情況功能對比

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 activiti 功能對比設計器對比支援的資料庫對比運作容器對比架構相容其他workflow情況功能對比
flowable camunda activiti 功能對比設計器對比支援的資料庫對比運作容器對比架構相容其他workflow情況功能對比

flowable設計器如下:

flowable camunda activiti 功能對比設計器對比支援的資料庫對比運作容器對比架構相容其他workflow情況功能對比

小結

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好多功能都是類似的,是以在這裡重點羅列差異化的功能

  1. camunda支援流程執行個體的遷移,比如同一個流程有多個執行個體,多個流程版本,不同流程執行個體運作在不同的版本中,camunda支援任意版本的執行個體遷移到指定的流程版本中,并可以在遷移的過程中支援從哪個節點開始。
  2. camunda基于PVM技術,是以使用者從Activii5遷移到camunda基本上毫無差異。flowable沒有pvm了,是以遷移工作量更大(執行個體的遷移,流程定義的遷移、定時器的遷移都非常麻煩)。
  3. camunda對于每一個CMD指令類都提供了權限校驗機制,flowable沒有。
  4. camunda繼續每一個API都有批處理的影子,flowable幾乎沒有。比如批量挂起流程、激活流程等,使用camunda可以直接使用API操作,使用Flowable則隻能自己去查詢集合,然後循環周遊集合并操作。
  5. camunda很多API均支援批處理,在批量處理的時候可以指定是異步方式操作或者是同步方式操作。異步的話定時器會去執行。Flowable沒有異步批處理的機制。比如批量異步删除所有的曆史資料。
  6. camunda啟動執行個體的時候支援從哪個節點開始,而不是僅僅隻能從開始節點運轉執行個體。Flowable僅僅隻能從開始節點運轉執行個體。
  7. camunda支援任意節點的跳轉,可以跳轉到連線也可以跳轉到節點,并且在跳轉的過程中支援是否觸發目标節點的監聽器。flowable沒有改原生API需使用者去擴充。
  8. camunda支援鍊式生成流程,比如
    Bpmn.createExecutableProcess(PROCESS_KEY)
      .camundaHistoryTimeToLive(5)
      .startEvent()
        .userTask()
      .endEvent().done(); flowable不支援。
               
  9. camunda支援雙異步機制,第一個異步即節點可以異步執行,第二個異步方式是:完成異步任務後,還可以繼續異步去執行任務後面的連線。是以稱之為雙異步機制,flowable隻有第一種異步方式。
  10. camunda支援多種腳本語言,這些腳本語言可以在連線上進行條件表達式的配置,開箱即用。比如python、ruby、groovy、JUEL。flowable僅僅支援JUEL、groovy。開箱即用的意思就是如果想用python直接引入jython包就可以用了,不需要額外配置。
  11. camunda支援外部任務,比如我們有時候想在一個節點中執行調用第三方的API或者完成一些特定的邏輯操作,就可以使用外部任務,外部任務有兩種表,并支援第三方系統定期來抓取并鎖定外部任務,然後執行業務完畢之後,完成外部任務,流程執行個體繼續往下執行。外部任務的好處就是解決了分布式事物的問題。在flowable中我們可以使用httpTask任務,我個人更傾向于camunda外部任務,因為這個外部任務有外部系統決定什麼時候完成,httpTask是不等待任務,執行個體走到這個節點之後,調用一個api就直接往下跑了,外部任務不會繼續往下跑,有外部系統去決定啥時候往下跑。
  12. camunda支援為使用者定制一些個性化的偏好查找API,比如張三每次查詢任務的時候,一般固定點選某某三個查詢條件過濾資料,使用camunda就可以将這三個查詢條件進行持久化,下次張三來了,就可以直接根據他的偏好進行資料的過濾,類似機器學習。
  13. camunda支援曆史資料的批量删除或者批量遷移到其他媒體,比如批量遷移到es,flowable沒有該機制。
  14. camunda支援在高并發部署流程的時候,是否使用鎖機制,flowable沒有該機制。
  15. camunda支援單引擎多組合、多引擎多庫。flowable僅僅支援單引擎多組合。
  16. camunda支援流程執行個體跨流程定義跳轉,flowable沒有該機制。
  17. camunda支援分布式定時器,flowable沒有該機制。
  18. flowable支援nosql,camunda隻有nosql的解決方案。
  19. camunda支援優化流程,以及了解流程引擎的瓶頸所在和每個環節的耗時,flowable沒有該機制。
  20. camunda修改了流程模闆xml解析方式,相比flowable性能更好。
  21. camunda在解析流程模闆xml的時候,去除了activiti5的雙解析機制,相對而言耗時時間更短。flowable沒有了pvm是以規避了雙解析機制。關于雙解析機制可以參考《Activiti權威指南》一書。
  22. camunda可以在任意節點添加任意的屬性,flowable原生API沒有,需要自己擴充。
  23. camunda架構沒有為流程生成圖檔的API(所有流程圖展示以及高亮均在前端動态計算),activiti5/6/flowable5/flowable6有圖檔生成以及高亮的API.
  24. camunda可以在節點中定義定時作業的優先級,也可以在流程中進行全局優先級的定義。當節點沒有定義優先級的時候可以使用全局的優先級字段。activiti5/6/flowable5/flowable6沒有改功能。
  25. camunda可以再流程中定義流程的tag标記,activiti5/6/flowable5/flowable6沒有改功能。
  26. camunda/activiti5/6/flowable5/flowable6 均不支援國産資料庫,比如人大金倉 和 達夢。
  27. flowable6支援LDAP,openLDAP,camunda不支援。activiti5不支援。

以上方方面的對比均來自flowable camunda activiti三個架構源碼的對比。關于更多的更詳細的性能對比,後續文章會持續更新