1. 程式人生 > >jBPM5與Activiti之間的差異對比

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版也已經出來了,不知道會有什麼變化,有興趣的也可以試下。

相關推薦

jBPM5Activiti之間差異對比

jBPM是目前市場上主流開源工作引擎之一,在建立者Tom Baeyens離開JBoss後,jBPM的下一個版本jBPM5完全放棄了jBPM4的基礎程式碼,基於Drools Flow重頭來過,目前官網已經推出了jBPM6的beta版本;Tom Baeyens加入Alfresco

HEVCVP9之間對比

在streamingmedia上看到的一篇對比HEVC與VP9的文章,挺不錯。另外這邊文章的幾個comment也是不錯的。下面是全文。The Great UHD Codec Debate: Google's VP9 Vs. HEVC/H.265As of today, the great UHD codec

MQkafka之間對比

1.是否遵守JMS規範 MQ遵守了jms規範,kafka沒有遵循jms規範。kafka利用檔案系統來管理訊息的生命週期 2. 吞吐量 kafka是順序寫磁碟,因此效率非常高。Kafka基於時間或者partition的大小來刪除訊息,同時broker是無狀態的,consume

PostgreSQLOracle的差異對比

Postgresql 與 Oracle 相關差異對比 通過查閱資料及實驗,以下對比了 Postgresql 9.3 版本與 Oracle 11g版本的相關差異。注意:相關細節仍待考證和完善。 1. 基本語法差異 1.1. 基本資料型別差異

CentOS6CentOS7的差異對比

啟動流程 桌面系統 檔案系統 核心版本 啟動載入器 防火牆 預設資料庫 檔案結構 主機名 時間同步 修改時間 修改地區 服務相關 網路 重啟關閉 啟動流程 CentOS6啟動流程 1.post加電自檢 這個過程是開機後,BIOS或UE

JDK的ByteBufferNetty的ByteBuf之間差異對比

文章目錄 JDK的`ByteBuffer`與Netty的`ByteBuf`之間的差異對比: JDK的`ByteBuffer`的缺點: Netty的`ByteBuf`的優點: JDK的B

CSS字體大小: empx、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晶片|W5100SW5500差異對比

W5100S、W5500、W5100差異對比         型號 引數 W5500 W5100 W5100S  內部架構 全硬體TCP / IP協議

工作流引擎JFlowactiviti 對比分析(一)5種基本控制流模式的對比

為了更好的說明activiti 與jflow的兩款工作流引擎的特點與區別,我們按照如下幾個方面做一次全面的、客觀的對比。       首先activiti是國外的一款開源的工作流程引擎,在國際上影響比較深遠與廣泛,解決了BPM領域的很多問題,值得我們讚賞。他

CSS字型大小: empx、pt、百分比之間對比

原文:kyleschaeffer.com CSS樣式最混亂的一個方面是應用程式中文字擴充套件的font-size屬性。在CSS中,你可以用四個不同的單位度量來顯示在web瀏覽器中的文字 大小。這四個單位哪一種最適合Web? 這個問題引起了廣泛的爭論。找到一個確定的答案是困難的, 因為這個問題,本

馳騁工作流引擎JFlowactiviti對比之4種高階分支同步模式

多重選擇(Multiple Choice) 在流程中,當一個活動完成後,有多個分支進行選擇,可以選擇執行其中的一個或者N個分支。 例子:比如去世博園玩,在門口檢票後,可以選擇A-E個片區中的N個進行觀光。     ACTIVITI 中的支援情況: 1.JPDL方式不支

HTML input標籤的type在HTML4.01HTML5之間差異

 <input> 標籤的 type 屬性規定 input 元素的型別。 值 描述 button 定義可點選按鈕(多數情況下,用於通過 JavaScript 啟動指令碼)。 checkbox 定義複選框。 file 定義輸入欄位

介面返回資料資料資料的對比、資料表之間的拆分重組對比

import pymysql import datetime import json import decimal import requests import warnings """ 超市供應鏈資料測試:1、product表和supplier表拆分重組與supply_introduce表對比

馳騁工作流引擎JFlowactiviti對比之2種結構化模式

1. 任意迴圈(Arbitrary Cycles) ACTIVITI : 某一個或多個活動可以反覆執行。 例子:使用者買了瓶汽水,拿到汽水後,中了一瓶,又去兌換了一瓶汽水,如果又中了,再去兌換一瓶汽水…. JFLOW: 完全是條件判斷,在表單中增加一個稽核元件,就可以把每次校驗的資訊,寫入裡面,

馳騁工作流引擎JFlowactiviti對比之3種基於狀態的模式

延遲選擇(Deferred Choice) 流程中某個點可以有多個分支進行選擇。不是基於簡單的資料或者決定就可以很明顯地作出選擇,而是會向系統或者執行環境提供多種可選擇的分支;但是又不同於AND-Split模式,延遲選擇只能選擇一個分支執行,一旦選擇了其中第一個分支,那麼其他分支就會被

馳騁工作流引擎JFlowactiviti對比之4種包含多例項的模式

無同步的多例項(MIwithout) 在流程中,一個活動可以啟用多個例項,每個例項相互獨立,並不需要在後面進行同步。 例子:比如使用者購買了N本書,於是後續的支付賬單、更新客戶可以以本書為單位各自執行。 ACTIVITI 中的支援情況: 支援這種模式,但是不允許在後面進行結束動