jBPM5與Activiti之間的差異對比
jBPM是目前市場上主流開源工作引擎之一,在建立者Tom Baeyens離開JBoss後,jBPM的下一個版本jBPM5完全放棄了jBPM4的基礎程式碼,基於Drools Flow重頭來過,目前官網已經推出了jBPM6的beta版本;Tom Baeyens加入Alfresco後很快推出了新的基於jBPM4的開源工作流系統Activiti。由此可以推測JBoss內部對jBPM未來版本的架構實現產生了嚴重的意見分歧。本文試著對二者做一些比較。
主要相似之處:
都是BPMN2過程建模和執行環境。 都是BPM系統(符合BPM規範)。 都是開源專案-遵循ASL協議( Apache的 軟體許可)。 都源自JBoss(Activiti5是jBPM4的衍生,jBPM5則基於Drools Flow)。 都很成熟,從無到有,雙方開始約始於2年半前。 都有對人工任務的生命週期管理。 Activiti5和jBPM5唯一的區別是jBPM5基於WebService - HumanTask標準來描述人工任務和管理生命週期。 如有興趣瞭解這方面的標準及其優點,可參閱WS - HT規範介紹 。 都使用了不同風格的 Oryx 流程編輯器對BPMN2建模。 jBPM5採用的是 Intalio 維護的開源專案分支。 Activiti5則使用了Signavio維護的分支。
Activiti5與jBPM5技術組成對比:
序號 | 技術組成 | Activiti | jBPM5 |
---|---|---|---|
1 | 資料庫持久層ORM | MyBatis3 | Hibernate3 |
2 | 持久化標準 | 無 | JPA規範 |
3 | 事務管理 | MyBatis機制/spring事務控制 | Bitronix,基於JTA事務管理 |
4 | 資料庫連線方式 | Jdbc/DataSource | Jdbc/DataSource |
5 | 支援資料庫 | Oracle、SQL Server、MySQL等多數資料庫 | Oracle、SQL Server、MySQL等多數資料庫 |
6 | 設計模式 | Command模式、觀察者模式等 | |
7 | 內部服務通訊 | Service間通過API呼叫 | 基於Apache Mina非同步通訊 |
8 | 整合介面 | SOAP、Mule、RESTful | 訊息通訊 |
9 | 支援的流程格式 | BPMN2、xPDL、jPDL等 | 目前僅只支援BPMN2 xml |
10 | 引擎核心 | PVM(流程虛擬機器) | Drools |
11 | 技術前身 | jBPM3、jBPM4 | Drools Flow |
12 | 所屬公司 | Alfresco | jBoss.org |
Activiti5使用Spring進行引擎配置以及各個Bean的管理,綜合使用IoC和AOP技術,使用CXF作為Web Services實現的基礎,使用MyBatis進行底層資料庫ORM的管理,預先提供Bundle化包能較容易的與OSGi進行整合,通過與Mule ESB的整合和對外部服務(Web Service、RESTful等)的介面可以構建全面的SOA應用;jBPM5使用jBoss.org社群的大多陣列件,以Drools Flow為核心元件作為流程引擎的核心構成,以hibernate作為資料持久化ORM實現,採用基於JPA/JTA的可插拔的持久化和事務控制規範,使用Guvnor作為流程管理倉庫,能夠與Seam、Spring、OSGi等整合。
需要指出的是Activiti5是在jBPM3、jBPM4的基礎上發展而來的,是原jBPM的延續,而jBPM5則與之前的jBPM3、jBPM4沒有太大關聯,且捨棄了備受推崇的PVM(流程虛擬機器)思想,轉而選擇jBoss自身產品Drools Flow作為流程引擎的核心實現,工作流最為重要的“人機互動”任務(類似於審批活動)則由單獨的一塊“Human Task Service”附加到Drools Flow上實現,任務的查詢、處理等行為通過Apache Mina非同步通訊機制完成。
優劣對比:
從技術組成來看,Activiti最大的優勢是採用了PVM(流程虛擬機器),支援除了BPMN2.0規範之外的流程格式,與外部服務有良好的整合能力,延續了jBPM3、jBPM4良好的社群支援,服務介面清晰,鏈式API更為優雅;劣勢是持久化層沒有遵循JPA規範。
jBPM最大的優勢是採用了Apache Mina非同步通訊技術,採用JPA/JTA持久化方面的標準,以功能齊全的Guvnor作為流程倉庫,有RedHat(jBoss.org被紅帽收購)的專業化支援;但其劣勢也很明顯,對自身技術依賴過緊且目前僅支援BPMN2。
總結:
雖然是比較,但不一定要有勝負,只有適合自己的才是最好的,要針對具體的專案區別對待。對我們自己的專案,其實我更關注的是流程引擎的執行效率以及效能,每小時幾十萬甚至上百萬的流程需要執行,需要多少個服務,叢集、負載的策略是什麼,會不會有衝突?目前這方面的資料還是比較少的,很多問題只有實際遇用到的時候才會去想辦法解決。不過就我個人的感覺而言,Activiti上手比較快,介面也比較簡潔、直觀,值得一試,不過jBPM6的beta版也已經出來了,不知道會有什麼變化,有興趣的也可以試下。
相關推薦
jBPM5與Activiti之間的差異對比
jBPM是目前市場上主流開源工作引擎之一,在建立者Tom Baeyens離開JBoss後,jBPM的下一個版本jBPM5完全放棄了jBPM4的基礎程式碼,基於Drools Flow重頭來過,目前官網已經推出了jBPM6的beta版本;Tom Baeyens加入Alfresco
HEVC與VP9之間的對比
在streamingmedia上看到的一篇對比HEVC與VP9的文章,挺不錯。另外這邊文章的幾個comment也是不錯的。下面是全文。The Great UHD Codec Debate: Google's VP9 Vs. HEVC/H.265As of today, the great UHD codec
MQ與kafka之間的對比
1.是否遵守JMS規範 MQ遵守了jms規範,kafka沒有遵循jms規範。kafka利用檔案系統來管理訊息的生命週期 2. 吞吐量 kafka是順序寫磁碟,因此效率非常高。Kafka基於時間或者partition的大小來刪除訊息,同時broker是無狀態的,consume
PostgreSQL與Oracle的差異對比
Postgresql 與 Oracle 相關差異對比 通過查閱資料及實驗,以下對比了 Postgresql 9.3 版本與 Oracle 11g版本的相關差異。注意:相關細節仍待考證和完善。 1. 基本語法差異 1.1. 基本資料型別差異
CentOS6與CentOS7的差異對比
啟動流程 桌面系統 檔案系統 核心版本 啟動載入器 防火牆 預設資料庫 檔案結構 主機名 時間同步 修改時間 修改地區 服務相關 網路 重啟關閉 啟動流程 CentOS6啟動流程 1.post加電自檢 這個過程是開機後,BIOS或UE
JDK的ByteBuffer與Netty的ByteBuf之間的差異對比
文章目錄 JDK的`ByteBuffer`與Netty的`ByteBuf`之間的差異對比: JDK的`ByteBuffer`的缺點: Netty的`ByteBuf`的優點: JDK的B
CSS字體大小: em與px、pt、百分比之間的對比
edi images 渲染 電腦 是的 可讀性 客戶端設置 等於 per CSS樣式最混亂的一個方面是應用程序中文本擴展的font-size屬性。在CSS中,你可以用四個不同的單位度量來顯示在web瀏覽器中的文本大小。這四個單位哪一種最適合Web? 這個問題引起了廣泛的爭論
文件與目錄差異對比方法
python環境:Python 2.6.6linux系統用到的模塊:filecmpfilecmp提供了:單文件對比,多文件對比,目錄對比單文件對比:采用filecmp.cmp(f1,f2[,shallow])方法,比較文件名為f1和f2的文件的內容,相同返回True,不相同返回False,shallow默認是
文件與目錄差異對比模塊filecmp
import 不存在 file strong HA 目錄 差異 class 列表 簡介 當我們進行代碼審計或校驗備份結果時,往往需要檢查原始與目標目錄的文件一致性,python的標準庫已經自帶了滿足此需求的模塊filecmp。filecmp可以實現文件、目
微軟與開源幹貨對比篇_PHP和 ASP.NET在 Session實現和管理機制上差異
ima 影響 前言 很難 刪除 定性 缺點 重新編譯 state 微軟與開源幹貨對比篇_PHP和 ASP.NET在 Session實現和管理機制上差異 前言:由於開發人員要靠工具吃飯,可能和開發工具、語言、環境呆的時間比和老婆孩子親人在一起的時間還多,所以每個人或多或少對自
scala 下 sigmoid 與breeze.numeric.sigmoid差異對比
scala> val beforeInit = System.nanoTime;val handsgn = rd.map(x => 1.0 / (1.0 + Math.exp(-x)));val cost = System.nanoTime - beforeInit; beforeInit
WIZnet晶片|W5100S與W5500差異對比
W5100S、W5500、W5100差異對比 型號 引數 W5500 W5100 W5100S 內部架構 全硬體TCP / IP協議
工作流引擎JFlow與activiti 對比分析(一)5種基本控制流模式的對比
為了更好的說明activiti 與jflow的兩款工作流引擎的特點與區別,我們按照如下幾個方面做一次全面的、客觀的對比。 首先activiti是國外的一款開源的工作流程引擎,在國際上影響比較深遠與廣泛,解決了BPM領域的很多問題,值得我們讚賞。他
CSS字型大小: em與px、pt、百分比之間的對比
原文:kyleschaeffer.com CSS樣式最混亂的一個方面是應用程式中文字擴充套件的font-size屬性。在CSS中,你可以用四個不同的單位度量來顯示在web瀏覽器中的文字 大小。這四個單位哪一種最適合Web? 這個問題引起了廣泛的爭論。找到一個確定的答案是困難的, 因為這個問題,本
馳騁工作流引擎JFlow與activiti的對比之4種高階分支同步模式
多重選擇(Multiple Choice) 在流程中,當一個活動完成後,有多個分支進行選擇,可以選擇執行其中的一個或者N個分支。 例子:比如去世博園玩,在門口檢票後,可以選擇A-E個片區中的N個進行觀光。 ACTIVITI 中的支援情況: 1.JPDL方式不支
HTML input標籤的type在HTML4.01與HTML5之間的差異
<input> 標籤的 type 屬性規定 input 元素的型別。 值 描述 button 定義可點選按鈕(多數情況下,用於通過 JavaScript 啟動指令碼)。 checkbox 定義複選框。 file 定義輸入欄位
介面返回資料與資料資料的對比、資料表之間的拆分重組對比
import pymysql import datetime import json import decimal import requests import warnings """ 超市供應鏈資料測試:1、product表和supplier表拆分重組與supply_introduce表對比
馳騁工作流引擎JFlow與activiti的對比之2種結構化模式
1. 任意迴圈(Arbitrary Cycles) ACTIVITI : 某一個或多個活動可以反覆執行。 例子:使用者買了瓶汽水,拿到汽水後,中了一瓶,又去兌換了一瓶汽水,如果又中了,再去兌換一瓶汽水…. JFLOW: 完全是條件判斷,在表單中增加一個稽核元件,就可以把每次校驗的資訊,寫入裡面,
馳騁工作流引擎JFlow與activiti的對比之3種基於狀態的模式
延遲選擇(Deferred Choice) 流程中某個點可以有多個分支進行選擇。不是基於簡單的資料或者決定就可以很明顯地作出選擇,而是會向系統或者執行環境提供多種可選擇的分支;但是又不同於AND-Split模式,延遲選擇只能選擇一個分支執行,一旦選擇了其中第一個分支,那麼其他分支就會被
馳騁工作流引擎JFlow與activiti的對比之4種包含多例項的模式
無同步的多例項(MIwithout) 在流程中,一個活動可以啟用多個例項,每個例項相互獨立,並不需要在後面進行同步。 例子:比如使用者購買了N本書,於是後續的支付賬單、更新客戶可以以本書為單位各自執行。 ACTIVITI 中的支援情況: 支援這種模式,但是不允許在後面進行結束動