JBPM - 業(yè)務(wù)流程管理
JBPM,全稱是JavaBusinessProcessManagement(業(yè)務(wù)流程管理),它是復(fù)蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個(gè)開源的、靈活的、易擴(kuò)展的可執(zhí)行流程語言框架。jBPM是公開源代碼項(xiàng)目,使用它要遵循ASL - ApacheLicenseVersion2.0和EULA - JBossEndUserLicenseAgreement協(xié)議。jBPM在2004年10月18日,發(fā)布了2.0版本,并在同一天加入了JBoss,成為了JBoss企業(yè)中間件平臺(tái)的一個(gè)組成部分,它的名稱也改成JBossjBPM。
簡(jiǎn)介
JBPM工作流。JBPM,全稱是JavaBusinessProcessManagement - 業(yè)務(wù)流程管理,它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個(gè)開源的、靈活的、易擴(kuò)展的可執(zhí)行流程語言框架。jBPM是公開源代碼項(xiàng)目,使用它要遵循ASL - ApacheLicenseVersion2.0和EULA - JBossEndUserLicenseAgreement協(xié)議。
jBPM在2004年10月18日,發(fā)布了2.0版本,并在同一天加入了JBossJBPM案例流程圖
特色
就是它的業(yè)務(wù)邏輯定義沒有采用目前的一些規(guī)范,如WfMC′sXPDL,BPML,ebXML,BPEL4WS等,而是采用了它自己定義的
JBossjBPMProcessdefinitionlanguage - jPdl。jPdl認(rèn)為一個(gè)業(yè)務(wù)流程可以被看作是一個(gè)UML狀態(tài)圖。jPdl就是詳細(xì)定義了這個(gè)狀態(tài)圖的每個(gè)部分,如起始、結(jié)束狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換,通過圖型化的流程定義,直觀地描述業(yè)務(wù)流程。
jBPM的另一個(gè)特色是它使用Hibernate來管理它的數(shù)據(jù)庫(kù)。Hibernate是目前Java領(lǐng)域非常流行的一種數(shù)據(jù)存儲(chǔ)層解決方案,只要是Hibernate支持的數(shù)據(jù)庫(kù),jBPM也就支持。通過Hibernate,jBPM將數(shù)據(jù)的管理職能分離出去,自己專注于業(yè)務(wù)邏輯的處理。
工作流程
1jBPM的運(yùn)行需要數(shù)據(jù)庫(kù)的支持,因此系統(tǒng)設(shè)計(jì)時(shí)要選定所用數(shù)據(jù)庫(kù)。只要是Hibernate支持的數(shù)據(jù)庫(kù),jBPM就支持。數(shù)據(jù)庫(kù)的初始化可以由jBPM自動(dòng)完成,也可以通過antgenerate.ddl任務(wù)生成SQL語句,在jBPM外部自己創(chuàng)建所需的表。
2使用jPdl定義工作流,生成processdinination.xml文件??梢圆捎肎UI工具jPdl,但目前只支持jBPM1.0,而且bug很多。XML的DTD定義文件在jBPM下載包中。
3Antcreate.pde生成pde包的工作目錄。將processdinination.xml文件和其它需要的文件放在指定的目錄下,使用antbuild.precess.archives生成pde包。pde包的格式采用jar。
4更改pde工作目錄/src/config/jbpm.properties的相關(guān)屬性,主要是設(shè)定相關(guān)的數(shù)據(jù)庫(kù)連接信息。注意要將數(shù)據(jù)庫(kù)的JDBC驅(qū)動(dòng)放在pde工作目錄的lib目錄下。
5Antdeploy.process.archives將剛才生成的pde部署到數(shù)據(jù)庫(kù)。實(shí)際上就是向數(shù)據(jù)庫(kù)插入一些相關(guān)數(shù)據(jù)。
6利用jBPMAPI函數(shù)開發(fā)相應(yīng)的工作流程。
jBPM能否適應(yīng)“中國(guó)國(guó)情”的流程應(yīng)用?
——以下內(nèi)容摘自《jBPM4工作流應(yīng)用開發(fā)指南》第20章“中國(guó)特色工作流的jBPM實(shí)現(xiàn)”:目前,中國(guó)內(nèi)地對(duì)于工作流管理系統(tǒng)的應(yīng)用主要還是集中于“人工流程”,也就是以人工任務(wù)密集型的工作流應(yīng)用為主。
主要原因在于國(guó)內(nèi)的信息化系統(tǒng)建設(shè)還遠(yuǎn)不及歐美發(fā)達(dá)國(guó)家成熟,系統(tǒng)多是以新建和推倒重來為主,很少有經(jīng)過長(zhǎng)期穩(wěn)定運(yùn)行的“沉淀”系統(tǒng),因此工作流管理系統(tǒng)中用于應(yīng)用集成的相關(guān)自動(dòng)活動(dòng)功能就很少能得到施展,工作流管理系統(tǒng)大部分的應(yīng)用還是集中在需要人工干預(yù)的“任務(wù)”上。
這也可以解釋為何在歐美國(guó)家大行其道的EAI(企業(yè)應(yīng)用集成)產(chǎn)品在國(guó)內(nèi)市場(chǎng)并不普及的原因?!瑫r(shí)從jBPM項(xiàng)目本身來說,其作為一款基于西方業(yè)務(wù)流程管理思想設(shè)計(jì)的工作流框架,更多的是關(guān)注“如何輔助開發(fā)者更容易的讓流程運(yùn)行完成”,而不是關(guān)注“記錄流程運(yùn)行的歷史和軌跡”。
因此,jBPM項(xiàng)目從設(shè)計(jì)上就沒有考慮“回退”、“取回”、“會(huì)簽”、“委派”等業(yè)務(wù)場(chǎng)景。這也是因?yàn)闁|西方文化的差異之所在:例如回退,西方人認(rèn)為“往回流轉(zhuǎn)的情況肯定也是一種業(yè)務(wù)流程規(guī)則的定義。
那么肯定可以通過分支或條件流轉(zhuǎn)的設(shè)計(jì)來解決”,而國(guó)內(nèi)則常常把回退作為一個(gè)“人性化管理和處理的潛在規(guī)則”來看待,并且認(rèn)為這是一個(gè)合理的需求。本章的目的就是:提出這些具有中國(guó)特色的(當(dāng)然這并不是中國(guó)所特有的)業(yè)務(wù)流程問題,在jBPM4的架構(gòu)基礎(chǔ)上分析解決這些問題的思路,并給出一種解決方案供參考。
發(fā)展?fàn)顩r
工作流系統(tǒng)(workflowmanagementsystems)還處于技術(shù)發(fā)展曲線(technologyhypecurve)上的初級(jí)階段。在這個(gè)領(lǐng)域我們將面臨一個(gè)激動(dòng)人心的階段。為了描述這一點(diǎn),可以和關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RDBMS)做一個(gè)對(duì)比。當(dāng)在軟件開發(fā)團(tuán)隊(duì)中談?wù)揜DBMS時(shí),大部分人會(huì)有一個(gè)清晰的概念,在你和他們交流的時(shí)候,人們會(huì)通過輕微的點(diǎn)頭表示認(rèn)可或理解你所說的。可當(dāng)使用工作流術(shù)語討論工作流時(shí),他們會(huì)搖頭表示不同意,因?yàn)槊總€(gè)人對(duì)工作流術(shù)語都有不同的理解。
導(dǎo)致形成這種狀況的原因之一,是在工作流中使用了過多的概念。在這個(gè)領(lǐng)域中的大量規(guī)范和工具沒有一個(gè)是相似的。當(dāng)然,它們相互之間有重疊并且會(huì)相互參考引證。
在介紹工作流時(shí)有一個(gè)話題必須包括,那就是工作流和業(yè)務(wù)流程管理(BPM)的關(guān)系。術(shù)語“工作流”通常描述人與計(jì)算機(jī)系統(tǒng)的一系列相關(guān)交互。在開發(fā)人員中,工作流經(jīng)常被提及。
有時(shí),工作流的意思是指一些不同的UI界面。業(yè)務(wù)流程管理的范圍比較廣,相比之下工作流多半局限于技術(shù)領(lǐng)域。業(yè)務(wù)流程管理還從管理人員的角度涉及了非技術(shù)問題,比如分析、組織的效率。在本文中,我首先解釋什么是工作流管理系統(tǒng),然后介紹業(yè)務(wù)流程管理的優(yōu)點(diǎn)。
接下來描述一下為什么工作流市場(chǎng)乍看起來如此混亂。本文給出的主要結(jié)論是:選擇工作流系統(tǒng)是想用工作流系統(tǒng)的公司,將要面對(duì)的最困難的事情。為此,本文的核心部分描述了一個(gè)流程定義(processdefinition)的四個(gè)層次,為你選擇工作流提供一個(gè)基礎(chǔ)。
舉例
表達(dá)了一個(gè)抽象的流程定義,之所以說是抽象,因?yàn)樗鼪]有表示確切的執(zhí)行者,比如某借款人被具體化為張三,部門主管成為張三的部門經(jīng)理李四,而財(cái)務(wù)明確為王五的時(shí)候,這個(gè)流程定義就被具體化,成為一個(gè)流程實(shí)例。此外過程中的相關(guān)人員我們稱之為參與者Actor,過程需要參與者介入的環(huán)節(jié)稱之為Task,每—個(gè)任務(wù)在流程實(shí)例中的具體化稱之為任務(wù)實(shí)例,從一個(gè)任務(wù)結(jié)點(diǎn)到另一個(gè)任務(wù)結(jié)點(diǎn)轉(zhuǎn)為叫做流轉(zhuǎn)(Transition),在流程中,由程序預(yù)先設(shè)定的行為如發(fā)郵件,我們稱之為活動(dòng)(Action)。
