JBPM簡介

  1. 1. JBPM簡介

JBPM,全稱是Java Business Process Management(業務流程管理),它是覆蓋了業務流程管理、工做流、服務協做等領域的一個開源的、靈活的、易擴展的基於java實現的流程業務處理框架(Business Process Management)。jBPM是公開源代碼項目,它使用要遵循 Apache License。 支撐企業的流程性業務應用:解釋業務規則,使得協做自動化java

2.JBPM最大特點web

  就是它的商務邏輯定義沒有采用目前的一些規範,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是採用了它本身定義的JBoss jBPM Process definition language (jPdl)。jPdl認爲一個商務流程能夠被看做是一個UML狀態圖。jPdl就是詳細定義了這個狀態圖的每一個部分,如起始、結束狀態,狀態之間的轉換,過圖型化的流程定義,直觀地描述業務流程。數據庫

jBPM的另外一個特點是它使用Hibernate來管理它的數據庫。Hibernate是目前Java領域最好的一種數據存儲層解決方案,只要是 Hibernate 支持的數據庫, jBPM 也就支持。經過Hibernate,jBPM將數據的管理職能分離出去,本身專一於商務邏輯的處理。apache

3.JBPM帶來的益處api

實現了無紙化的工做模式; 過程可監控:便於對執行過程的跟蹤和監控 數據可管理:便於對數據進行檢索、分析 可靠性:減小人-人交互的主觀錯誤的機率 4.JBPM常見應用領域 行政管理:行政、事業單位、大中型(國有)企業 產品研發和製造:用於對整個研發、生產製造過程的管理和調度 電子商務:訂單處理 其餘 如大型內容管理系統的多步審覈 5.JBPM常見場景 公文流轉、行政審批、訂單處理、產品研發、製造過程 其餘須要多個角色協做、多步完成的活動瀏覽器

6.JBPM模型說明tomcat

加載流程定義: 定義工具能夠系統提供,也能夠只是讀取定義結果 啓動流程: 啓動選定的流程,建立流程實例 辦理任務(流程的每一步): 執行流程的每一個步驟(不必定都須要人蔘與:自動任務節點) 記錄流程的狀態: 對狀態的管理是工做流引擎的主要職責數據結構

7.JBPM主要概念oracle

流程定義:預先定義的業務流轉邏輯 流程實例:業務的一次實際流轉過程 參與者:任務的執行者 活動(任務):組成流程定義的節點 活動實例:組成流程實例的元素 流轉:從一個節點到另外一個節點這一行爲 工做列表:當前須要辦理的任務集合 工做流引擎:工做流的核心組件,對流程實例、任務實例以及其狀態進行管理框架

8.JBPM套件的組成

jPDL Designer:流程定義設計器,流程建模工具 jPDL Library:流程執行引擎 WebConsole:參與者和流程執行環境的交互界面,流程運行期間的監控工具

9.使用jBPM開發工做流的通常流程

1) jBPM的運行須要數據庫的支持,所以系統設計時要選定所用數據庫。只要是Hibernate支持的數據庫,jBPM就支持。數據庫的初始化能夠由jBPM自動完成,也能夠經過ant generate.ddl任務生成SQL語句,在jBPM外部本身建立所需的表。

  2) 使用jPdl定義工做流,生成processdinination.xml文件。能夠採用GUI工具gpdl,但目前只支持jBPM1.0,並且bug不少。XML的DTD定義文件在jBPM下載包中。

  3) Ant create.pde生成pde包的工做目錄。將processdinination.xml文件和其它須要的文件放在指定的目錄下,使用ant build.precess.archives生成pde包。pde包的格式採用jar。

  4) 更改pde工做目錄/src/config/jbpm.properties的相關屬性,主要是設定相關的數據庫鏈接信息。注意要將數據庫的JDBC驅動放在pde工做目錄的lib目錄下。

  5) Ant deploy.process.archives將剛纔生成的pde部署到數據庫。實際上就是向數據庫插入一些相關數據。

6) 利用jBPM API函數開發相應的工做流程。

10.jbpm表結構介紹

10.1資源庫和運行時表結構

JBPM4_DEPLOYMENT,JBPM4_DEPLOYPROP,JBPM4_LOB存儲流程定義相關的部署信息

JBPM4_EXECUTION主要是存放JBPM4的執行信息,Execution機制代替了JBPM3的Token機制

JBPM4_TASK存放須要人來完成的Activities(活動),須要人來參與完成的Activity 被稱爲Task

JBPM4_PARTICIPATION參與者表,存放參與者信息,參與者的種類有Candidate、Client、Owner、Replaced Assignee和Viewer。而具體的參與者既能夠是單一用戶,也能夠是用戶組

JBPM4_SWIMLANE泳道表。SwimLane是一種Runtime Process Role。經過SwimLane,多個Task能夠一次分配到同一Actor身上

JBPM4_JOB 存放的是Timer 的定義

JBPM4_VARIABLE 存的是進行時的臨時變量。

10.2歷史數據庫表結構

JBPM4_HIST_PROCINST 與JBPM4_HIST_ACTINST 分別存放Process Instance和Activity Instance的歷史記錄

JBPM4_HIST_DETAIL 保存 Variable的變動記錄

JBPM4_HIST_VAR 保存歷史的變量 JBPM4_HIST_TASK Task的歷史信息

身份認證表結構

JBPM4_ID_GROUP ,JBPM_ID_MEMBERSHIP ,JBPM4_ID_USER 這三張表很常見,基本的權限控制,關於用戶認證方面建議仍是本身開發一套,組件自帶的功能太簡單,使用中有不少需求難以知足

除了前面述及的17張表外,還有一張引擎參數表,這是一張獨立的表,在此沒有單獨列出

11.GPD(圖形化流程設計器) for Eclipse插件安裝

  • · 幫助-->軟件更新(Help --> Software Updates)
  • · 選擇「有效軟件」標籤(Available Software)
  • · 點擊添加站點(Add Site)
  • · 在對話框裏添加站點擊(Add Site)對話框,點擊壓縮包(Archive)
  • · 找到gpd/jbpm-gpd-site.zip
  • · 點擊「肯定」(ok)自動回到「軟件更新和擴展」對話框
  • · 選擇jPDL 4 流程設計器更新站點(jPDL 4 GPD Update Site)
  • · 點擊安裝(Install)
  • · 在安裝(Install)對話框中,選擇Flow Common Feature 和jPDL 4 Feature
  • · 點擊下一步(Next)
  • · 選擇接受(Accept),並點完成(Finish)
  • · 重啓Eclipse

12. 基於Web的Signavio流程設計器

jBPM3開始,這個著名的開源項目就由於沒有基於瀏覽器的圖形化流程設計器而飽受用戶詬病,沒錯,進入了Web時代,流程設計器沒有理由老是停留在CS(Client Server)階段。有不少公司認識到了這一點,所以市場上的jBPM Web流程設計器並很多見,但它們或不開放源代碼、或基於特定的業務、或存在支持升級問題。總之,沒有RedHat JBoss jBPM的官方認證和支持,您用着總會不放心,不是嗎?

如今您不用擔憂了。從Version 4.1開始,jBPM官方發佈包綁定了一個徹底開源的基於Web的BPM流程設計器,代號爲Signavio。

12.1jBPM Web流程設計器簡介

Signavio Web流程建模工具是和JBoss jBPM團隊、德國的Signavio公司和Hasso Plattner Institute(HPI軟件工程研究所)緊密協做的成果。Signavio項目基於Web建模工具Oryx,Oryx是由HPI主持的開源項目。HPI和Signavio公司都會持續地在Oryx項目和Signavio項目中投入人員和資金的支持。關於這兩個項目,您能夠在Google Code上找到:http://code.google.com/p/signavio-oryx-initiative/

使用Signavio可讓業務流程分析人員經過瀏覽器創建業務流程模型。Signavio輸出的流程文件格式正是jPDL。這意味着Signavio設計出的流程定義文件能夠直接導入到Eclipse GPD,反之亦然。流程定義文件會保存在硬盤上,位於 $jbpm_home/signavio-repository中,這個參數在安裝腳本中有默認值。

下圖是Signavio流程設計器的使用界面,它能很好地支持IE和Firefox瀏覽器。

注意:Signavio是基於web的業務流程建模工具,綁定在jBPM中,是100%開源的(基於MIT開放源代碼許可證)。同時,Signavio公司也提供商業版的同名工具,毫無疑問,商業版的Signavio有更多的功能。

12.2獨立安裝Signavio

複製 $jbpm_home/install/src/signavio/jbpmeditor.war 到您的目標Web容器中。

12.3配置Signavio

Signavio配置很簡單,大多數參數在web.xml中修改便可,您能夠在 jbpmeditor.war/WEB-INF/ 目錄中找到。其中最重要的是 fileSystemRootDirectory 參數。這個參數的值必須爲一個物理上存在的本地目錄,它指定了流程定義文件(即*.jpdl.xml 文件)存儲的位置,如下是此參數的web.xml片斷:

12.3 Signavio缺點:

1:不支持中文。

2:只能用firefox打開頁面。

13.在目錄中添加jPDL4模式

  • · 點擊窗口-->屬性(Windows-->Preferences)
  • · 選擇XML-->目錄(XML-->CataLog)
  • · 點擊添加(Add)
  • · 添加XML目錄(Add XML Catalog Entry)的窗口打開
  • · 點擊map-icon的圖標下面的按鈕並選擇文件系統(File System)
  • · 在打開的對話框中,選擇jBPM安裝目錄下src文件夾中jpdl.xsd文件
  • · 點擊打開(Open)而且關閉全部的對話框

14.ssh+jbpm整合

  • · 加入jbpm.jar包, 文件位置在jbpm發佈包根目錄下
    • 加入jbpm配置文件,文件位置在jbpm發佈包根目錄/examples/src下:
    • · Spring配置文件加入如下代碼:
    • · Hibernate配置文件加入如下代碼: 第一次執行時需放開第一行代碼 以便在目標數據庫中建立jBPM 表結構;建立以後需手動註釋第一行代碼; 或者在jbpm-4.4/install目錄下執行cmd命令: ant create.jbpm.schema 。

15.部署到tomcat6.0

需刪除tomcat6.0 lib目錄下el-api.jar 包,由於會和jbpm的包產生衝突。而後導入jbpm發佈包lib目錄下的如下三個包:

Ok,啓動服務。

16.示例項目

TestJBPM是一個簡單的jbpm+ssh+oracle10g+tomcat6整合項目,實現了一個簡單的請假流程。工程由myeclipse打開。

流程圖以下:

部署前需修改jbpm.hibernate.cfg.xml文件,改成您本身的數據庫鏈接方式

導入庫文件 testJbpm.dmp

apache-tomcat-6.0.20 下有部署好的Signavio流程設計器,啓動tomcat前,須要在c盤下建立test文件夾。

17JBPM工做流小結

通過兩週的學習和討論,咱們瞭解了工做流的概念、並逐步分析和熟悉了jbpm工做流的特色和應用,現對jbpm工做流總結以下。 17.1關於JBPM工做流 17.1.1工做流 工做流是一項分離業務操做和系統流程的技術。工做流由實體(Entity)、參與者(Participant)、流程定義(Flow Definition)、工做流引擎(Engine) 四部分組成。 實體是工做流的主體,是須要隨着工做流一塊兒流動的物件(Object)。例如,在一個採購申請批准流程中,實體就是採購申請單;在公文審批流程中,實體就是公文。 參與者是各個處理步驟中的責任人,多是人,也多是某個職能部門,還多是某個自動化的設備; 流程定義是預約義的工做步驟,它規定了實體流動的路線。它多是徹底定義的,即對每種可能的狀況都能徹底肯定下一個參與者,也多是不徹底定義的,須要參與者根據狀況決定下一個參與者; 工做流引擎是驅動實體按流程定義從一個參與者流向下一個參與者的機制 前三個要素是靜態的,而第四個要素是動態的,它將前三者結合起來,是工做流的核心組成元素。 17.1.2JBPM

jBPM,全稱是Java Business Process Management,是一種基於J2EE的輕量級工做流管理系統。 jBPM的一個特點是採用了它本身定義的JBoss jBPM Process definition language (jPdl)。jPdl認爲一個商務流程能夠被看做是一個UML狀態圖。jPdl就是詳細定義了這個狀態圖的每一個部分,如起始、結束狀態,狀態之間的轉換等。 jBPM的另外一個特點是它使用Hibernate來管理它的數據庫。Hibernate是目前Java領域最好的一種數據持久層解決方案。經過Hibernate,jBPM將數據的管理職能分離出去,本身專一於商務邏輯的處理。 17.2JBPM工做流的應用分析 17.2.1jbpm工做流步驟: 一、加載(發佈)流程定義 這個意思是,咱們經過jbpm的designer插件,或者是用其餘工具,制定出processDefinition ,而後將其加載到應用中的過程。這個加載能夠是寫入內存中,或者是直接寫入數據庫等。 二、啓動流程 建立流程實例的過程。具體建立實例的方法有多種,可根據本身的須要自行選擇。 三、處理任務 在流程流轉的過程當中,JBPM引擎會爲咱們生成任務的實例,咱們就須要針對這些任務實例來進行處理,而後結束這些任務實例,並推進流程的流轉。 四、記錄流程的相關狀態 記錄流程狀態這點包括且不限於如下內容: 1)流程實例的開啓 2)任務實例的建立 3)任務實例的開始執行 4)任務實例的結束 5)流程實例的結束 17.2.2使用jBPM的優點 將業務流程複雜的系統結構清晰話,提供系統運行時的靈活性 一、解耦系統業務流程 流程獨立,可使用工具定義和建模,利於跟蹤、監控、管理、調度、優化和重整 二、提升系統的靈活性 系統流程定義生產環境的修改和調整,用戶和外部工具交互,任務的動態分派 17.2.3使用jBPM時的問題 一、對當前任務的條件查詢 jBPM不提供靈活進行條件查詢的api,若是須要,能夠自定義hibernate查詢,從jbpm相應的數據表中查詢任務數據。但須要對jBPM機制比較瞭解,並且有些複雜條件難以用jBPM自己的信息查到。 二、當前任務的分頁 在上一問題的基礎上,使用hibernate分頁。 三、統計各個流程實例的狀態 能夠經過流程實例,在jbpm系統表中查詢,也能夠在業務表的相應數據上加上狀態列來統計。前一個比較麻煩,後一個比較直觀,但不會因使用jBMP而使用工做量減小。 四、工做流數據與業務數據結合 通常經過在流程實例中添加相應的一筆數據的標識做爲變量來關聯。也能夠有針對性的擴展jbpm的系統表來實現與業務的關聯性。 五、修改流程後的歷史數據兼容性問題 Jbpm工做流流程定義有版本的概念,修改流程後要從新發布,與舊的流程不是一個同一個版本。系統能夠區別開新舊流程來。 17.3結論 一、工做量 初步的結論是:引入工做流技術不會明顯減小系統開發工做量。相反,在通常狀況下,會增長一部分工做量。若是項目流程比較少,並且比較固定,則使用工做流技術會明顯增長開發工做量。若是項目流程多,並且比較複雜,則使用工做流技術會使項目結構層次更加清晰、更具備擴展性,根據需求有可能要修改和擴展示有開源工做流類庫與數據庫結構,也會增長額外的工做量。但權衡之下,利大於弊。 二、關於業務數據與jBPM自己的數據 理論上說,若是使用jBPM,能夠將全部業務數據放到jBPM的context中管理,再也不維護業務數據表。但這樣的結果是在流程以外的環境(好比在統計報表中)中沒法容易的獲得業務數據。因此通常會創建業務數據表,我不使用工做流時同樣,而後讓jBMP從業務數據表中獲得業務數據,而不在jBPM中保留業務數據。所以,使用jBPM後,在業務數據方面基本不會減小工做 三、工做流學習成本 工做流自己的概念較複雜,使用jbpm,須要學習其工做流的定義和結構,流程定義工具和語言、瞭解其數據結構。與其它工做流產品(如Shark)相比,jBPM對Java開發人員來講學習較低成本,在作流程複雜的項目時,學習成本能夠接受。 四、系統用戶和角色與工做流整合 流程的流轉和任務的分派完成,都是用戶在控制,因此須要將用戶、角色和權限整合到jbpm工做流中。 五、系統業務的整合和調整 將流程抽取後,本來連續的業務處理變成一個個的任務節點。須要在每一個業務相關處理處添加工做流流程控制、在每一個節點處實現相關的業務和流程切入點。 六、適用範圍 Jbpm工做流適用於: 一、項目流程比較多,流程複雜的項目。 二、系統運行和維護、升級時,流程可能須要修改、調整和跟蹤、控制的項目。

相關文章
相關標籤/搜索