歡迎您光臨本站 註冊首頁

J2EE工作流管理系統jBPM詳解(一)

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0

一、jBPM入門簡介

概述

工作流業務流程管理技術是基於SOA技術實現的一個核心部分.使用工作流能夠在軟體開發和業務兩個層次受益:

1、方便開發

工作流管理系統能夠簡化企業級軟體開發甚至維護.

◆降低開發風險 - 通過使用狀態和動作這樣的術語,業務分析師和開發人員使用同一種語言交談.這樣開發人員就不必將用戶需求轉化成軟體設計了.
◆實現的集中統一 -業務流程經常變化,使用工作流系統的最大好處是:業務流程的實現代碼,不再是散落在各種各樣的系統中 .
◆加快應用開發 - 你的軟體不用再關注流程的參與者,開發起來更快,代碼更容易維護.

2、業務流程管理 (BPM)

在自動化業務流程之前,分析並將它們規格化是一件艱苦但會有很好回報的工作:

◆提高效率 - 許多流程在自動化過程中會去除一些不必要的步驟較好的流程式控制制 - 通過標準的工作方法和跟蹤審計,提高了業務流程的管理
◆改進客戶服務 - 因為流程的一致性,提高了對客戶響應的可預見性
◆靈活 - 跨越流程的軟體控制,使流程可以按照業務的需要重新設計.
◆業務流程改進 - 對流程的關注,使它們趨向於流暢和簡單

但從長遠的角度,工作流流程管理技術的研究可為兩個階段進行:1.目前解決華研今後新項目中複雜業務流程如何使用工作流引擎技術進行實現的問題.

2.上升到面向服務體系架構,實現各個服務之間的業務流程.

jBPM,全稱是Java Business Process Management,是一種基於J2EE的輕量級工作流管理系統.jBPM是公開源代碼項目,它使用要遵循 Apache License.

jBPM在2004年10月18日,發布了2.0版本,並在同一天加入了JBoss,成為了JBoss企業中間件平台的一個組成部分,它的名稱也改成JBoss jBPM.隨著jBPM加入JBoss組織,jBPM也將進入一個全新的發展時代,它的前景是十分光明的.

JBoss jBPM 只有最小的倚賴性,它可以很容易的作為java庫來使用.當然它也可以用在訪問量很大的J2EE 群應用伺服器環境中. JBoss jBPM 可以同任何資料庫配置可以部署在任何應用伺服器上.

jBPM 最大的特色就是它的商務邏輯定義沒有採用目前的一些規範,如WfMC XPDL, BPML, ebXML, BPEL4WS等,而是採用了它自己定義的JBoss jBPM Process definition language (jPdl).jPdl認為一個商務流程可以被看作是一個UML狀態圖.jPdl就是詳細定義了這個狀態圖的每個部分,如起始、結束狀態,狀態之間的轉換等.

jBPM的另一個特色是它使用Hibernate來管理它的資料庫.Hibernate是目前Java領域最好的一種數據持久層解決方案.通過Hibernate,jBPM將數據的管理職能分離出去,自己專註於商務邏輯的處理.(具體選型報告可參考工作流技術選型評估報告).

本文檔主要是工作流研究小組關於開源工作流引擎jbpm的研究成果總結.內容包括工作流研究場景的介紹、jbpm的環境配置,並包括以下六個研究主題:

◆JBPM同開發如何結合,又如何保持獨立性;對應用系統的設計實現有什麼樣的制約
◆用戶/角色如何同應用系統結合,變化又如何處理
◆流程中每個活動,如何動態指定執行者
◆類似傳閱功能如何實現
◆子流程如何實現
◆流程執行步驟耗時閥值和自動提醒設置
◆jBPM當前版本的穩定性評估

術語、定義和縮略語

應用場景

本場景是從房地產營銷系統的需求中提取出來的,在房地產項目中,客戶選戶購房的過程是一個非常典型的工作流場景.我們將這一過程提取出來,作為jbpm技術研究的場景.

在購房過程中,會有以下人員參與.
客戶:購房的主體
銷售人員:在購房過程中指導看房,購房.
銷售經理:確定認購信息.
財務人員:收取定金.
客服人員:列印收據,列印客戶認購書.
客戶購房的過程可以描述如下.
◆客戶來到售樓中心,銷售人員進行接待.
◆客戶向銷售人員提供預先申請的服務號.
◆銷售人員確認服務號是否有效,如果無效現場給出一個新的服務號.
◆銷售人員引導客戶選房.
◆客戶確定戶型,房號.
◆銷售人員錄入客戶認購資料.
◆銷售人員確認認購資料填寫完整.
◆銷售人員將認購資料提交給銷售經理審批.
◆確定是否可以獲得優惠,如果客戶是一次交清房款,獲得0.1%優惠.
◆交上級經理審批.
◆銷售人員引導客戶到財務處交納定金.
◆交納定金后,客服人員列印收據.
◆客服人員列印認購書.

為了使用研究的場景更有代表性,揉合其他典型的工作流應用場景,將上面的流程作一些刪改.

客戶認購的流程改為:
◆客戶確定購房,銷售人員錄入認購資料.
◆提交認購資料,必須保證錄入資料的完整性.
◆提交審核,按總金額進行分類審核.如果金額小於50萬銷售經理審核即可,大於50萬還要上級經理兩人同時審核通過.
◆審批完成,客戶到財務處交納定金.
◆客服人員為客戶列印收據,列印認購書,認購完成.


上面的流程中一些異常情況(流程中的一些分支),在這裡先不作考慮,如,客戶在交納定金之前可以隨時放棄認購.

客戶的認購要錄入的資料內容包括:客戶姓名,房號,定金,總金額,流程號等,這裡僅選取幾個重要的數據作為保存對象.保存錄入資料時自動取得一個流程號,任何時候,可以根據此流程號跟蹤流程狀態,在保存認購資料時要記錄流程號.

通用的標準規範

jBPM 是個功能全面的Workflow Engine,融合了4大功能:Workflow,BPM,BPEL,PageFlow.它自己有個BPEL擴展,採用jboss Hibernate實現,它使用自定義的自定義標準jpdl,不支持目前公開的工作流(業務流程)標準,如:
◆JCP
◆JSR208 Java Business Integration
◆JSR207 Process Definition for Java
◆OASIS
◆WS-BPEL
◆Workflow Management Coalition(WFMC)
◆WFMC XPDL
◆Business Process Management Initiative (BPMI)
◆BPMN
◆Object Management Group (OMG)
◆State Chart XML (SCXML)

處理測試階段的JBoss jBPM BPEL擴展準備支持BPEL 1.1標準(非標準組織通過的標準).

技術方案

由於公司採取的架構是ejb3 tapestry4架構,我們的場景實現架構也是基於以上架構進行實現的(tapestry4 ejb3 jbpm3.2),我們所採取的jbpm版本是3.2,這也是目前jbpm最新的版本.這裡我們使用jboss作為我們的web伺服器

開發環境

這裡我們是採用eclipse3.2開發工具進行開發,Tapestry4 ejb3的開發環境配置和以往的項目配置基本保持一致,這裡就不再進行詳細介紹,關鍵就是jbpm3.2的配置方法.

我們從jBoss官方網站(http://www.jboss.org)上下載jbpm-jpdl-suite-3.2.GA.zip,最新的版本是3.2.GA,這個包括:
◆jbpm-server , 預先配置的jboss 應用伺服器.
◆jbpm-designer , jBPM流程圖形化設計器的eclipse 插件 .
◆jbpm-db , jBPM 資料庫兼容包 (參看下面).
◆jbpm , 核心jbpm組件包括庫和用戶手冊.
◆jbpm-bpel , JBoss jBPM BPEL 擴展參考.

預配置的JBoss 應用伺服器有下列安裝組件:
核心jBPM 組件 , 打包作為JBoss服務檔案

一個包括所有jBPM 表格的完整資料庫 : 默認的 hypersonic 資料庫包含所有的jBPM 表格和已經定義的流程.

jBPM 控制台web應用程序 這個可以用來為jBPM管理員.

jBPM調度程序 所有定時器的執行. 調度程序在新手工具箱里配置成了一個servlet.這個Servlet會為產生一個線程來監視每個定時器的執行.

一個流程例子 已經發布進了jBPM 資料庫,關於jbpm-jpdl-suite-3.2套件包的具體介紹,可以參考JBoss jBPM Cookbook手冊.

JBoss jBPM 是一個Java庫. 因此,它可以用在任何java環境比如web 應用程序,Swing應用程序,EJB,Web Service等等,JBoss jBPM 核心組件被打包成一個簡單的Java庫文件.它依賴你所使用的功能性, 庫 jbpm-jpdl.jar及一些相關的第三方的庫比如 . hibernate3.2, dom4j 等等

在我們實現場景中.要使用jbpm,我們需要將jbpm3.2的包導入我們的項目當中, jbpm3.2的主要包括兩個包jbpm-jpdl.jar和jbpm-identity.jar.而jbpm-jpdl.jar是jbpm的核心包,jbpm-identity.jar則是jbpm自帶的用戶角色許可權管理包.我們將這兩個包導入我們的項目中.(具體可參考jbpm的用戶手冊)

在jbpm中,流程的定義主要是編寫在xml文件中的,我們需要將具體的業務流程在xml中定義.我們需要在項目的根目錄上新建一個源目錄,這裡我們命名為「processes」,在該目錄我們可以保存流程定義xml文件.

JBoss jBPM 包括一個圖形化的流程設計工具. 這個設計器是用來創作商業流程的,該圖形設計器是一個Eclipse插件,圖形化設計工具最重要的特性是它同時支持業務分析員和技術開發人員. 這樣就可以在業務流程建模和實際執行之間平滑轉換.使用該插件你可以通過界面來拖拉描繪你的業務流程,而不需要靠手寫編碼來設計.該插件位於jbpm-jpdl-suite-3.2.GA.zip中,插件的安裝方法可以參考elipse插件的安裝方法.安裝完畢后,我們下面可以通過該插件新建流程設計文件.

步驟如下:1、在processes目錄中右建選擇「New」—》「other」

2、選擇「Process Definition」,點擊「Next」

輸入Process name,點擊完成.打開設計界面,我們就可以在上面根據我們的業務來設計工作流流程文件.

Jbpm本身包含很多自己的jbpm資料庫表,jBPM內部使用hibernate來管理它的資料庫,通過Hibernate,jBPM將數據的管理職能分離出去,自己專註於商務邏輯的處理,我們可以使jBPM移植在不同的資料庫..我們進行的每一步流程操作都保存在jbpm數據表中,通過調用jbpm提供的介面,我們可以對jBPM資料庫進行存儲,更新和檢索流程信息的服務.這裡我們使用Mysql5.0資料庫,下面我們在項目中新建一個源目錄「config.files」,名字可以任意,在該目錄建立hibernate.cfg.xml文件:

hibernate.cfg.xml


[火星人 ] J2EE工作流管理系統jBPM詳解(一)已經有1625次圍觀

http://coctec.com/docs/java/show-post-61962.html