關於JBPM

1.        工作流

       工作流是一項分離業務操作和系統流程的技術。工作流由實體(Entity)、參與者(Participant)、流程定義(Flow Definition)、工作流引擎(Engine) 四部分組成。

l 實體是工作流的主體,是需要隨着工作流一起流動的物件(Object)。例如,在一個採購申請批准流程中,實體就是採購申請單;在公文審批流程中,實體就是公文。

l 參與者是各個處理步驟中的責任人,可能是人,也可能是某個職能部門,還可能是某個自動化的設備;

l 流程定義是預定義的工作步驟,它規定了實體流動的路線。它可能是完全定義的,即對每種可能的情況都能完全確定下一個參與者,也可能是不完全定義的,需要參與者根據情況決定下一個參與者;

l 工作流引擎是驅動實體按流程定義從一個參與者流向下一個參與者的機制

      前三個要素是靜態的,而第四個要素是動態的,它將前三者結合起來,是工作流的核心組成元素。

2.        JBPM

       jBPM,全稱是Java Business Process Management,是一種基於J2EE的輕量級工作流管理系統。

n jBPM的一個特色是採用了它自己定義的JBoss jBPM Process definition language (jPdl)。jPdl認爲一個商務流程可以被看作是一個UML狀態圖。jPdl就是詳細定義了這個狀態圖的每個部分,如起始、結束狀態,狀態之間的轉換等。

n jBPM的另一個特色是它使用Hibernate來管理它的數據庫。Hibernate是目前Java領域最好的一種數據持久層解決方案。通過Hibernate,jBPM將數據的管理職能分離出去,自己專注於商務邏輯的處理。

JBPM工作流的應用分析

jbpm工作流步驟:

1、加載(發佈)流程定義

這個意思是,我們通過jbpm的designer插件,或者是用其他工具,制定出processDefinition

,然後將其加載到應用中的過程。這個加載可以是寫入內存中,或者是直接寫入數據庫等。

2、啓動流程

創建流程實例的過程。具體創建實例的方法有多種,可根據自己的需要自行選擇。

3、處理任務

在流程流轉的過程中,JBPM引擎會爲我們生成任務的實例,我們就需要針對這些任務實例來進行處理,然後結束這些任務實例,並推動流程的流轉。

4、記錄流程的相關狀態

記錄流程狀態這點包括且不限於以下內容:

1)流程實例的開啓

2)任務實例的創建

3)任務實例的開始執行

4)任務實例的結束

5)流程實例的結束

使用jBPM的優勢

將業務流程複雜的系統結構清晰話,提供系統運行時的靈活性

1、 解耦系統業務流程

流程獨立,可以使用工具定義和建模,利於跟蹤、監控、管理、調度、優化和重整

2、 提高系統的靈活性

系統流程定義生產環境的修改和調整,用戶和外部工具交互,任務的動態分派

使用jBPM時的問題

1、 對當前任務的條件查詢

jBPM不提供靈活進行條件查詢的api,如果需要,可以自定義hibernate查詢,從jbpm相應的數據表中查詢任務數據。但需要對jBPM機制比較瞭解,而且有些複雜條件難以用jBPM本身的信息查到。

2、 當前任務的分頁

在上一問題的基礎上,使用hibernate分頁。

3、 統計各個流程實例的狀態

可以通過流程實例,在jbpm系統表中查詢,也可以在業務表的相應數據上加上狀態列來統計。前一個比較麻煩,後一個比較直觀,但不會因使用jBMP而使用工作量減少。

4、 工作流數據與業務數據結合

一般通過在流程實例中添加相應的一筆數據的標識作爲變量來關聯。也可以有針對性的擴展jbpm的系統表來實現與業務的關聯性。

5、 修改流程後的歷史數據兼容性問題

Jbpm工作流流程定義有版本的概念,修改流程後要重新發布,與舊的流程不是一個同一個版本。系統可以區別開新舊流程來。

結論

1、 工作量

初步的結論是:引入工作流技術不會明顯減少系統開發工作量。相反,在一般情況下,會增加一部分工作量。

如果項目流程比較少,而且比較固定,則使用工作流技術會明顯增加開發工作量。

如果項目流程多,而且比較複雜,則使用工作流技術會使項目結構層次更加清晰、更具有擴展性,根據需求有可能要修改和擴展現有開源工作流類庫與數據庫結構,也會增加額外的工作量。但權衡之下,利大於弊。

2、 關於業務數據與jBPM本身的數據

理論上說,如果使用jBPM,可以將所有業務數據放到jBPM的context中管理,不再維護業務數據表。但這樣的結果是在流程之外的環境(比如在統計報表中)中無法容易的得到業務數據。所以一般會建立業務數據表,我不使用工作流時一樣,然後讓jBMP從業務數據表中得到業務數據,而不在jBPM中保留業務數據。因此,使用jBPM後,在業務數據方面基本不會減少工作

3、 工作流學習成本

工作流本身的概念較複雜,使用jbpm,需要學習其工作流的定義和結構,流程定義工具和語言、瞭解其數據結構。與其它工作流產品(如Shark)相比,jBPM對Java開發人員來說學習較低成本,在做流程複雜的項目時,學習成本可以接受。

4、 系統用戶和角色與工作流整合

流程的流轉和任務的分派完成,都是用戶在控制,所以需要將用戶、角色和權限整合到jbpm工作流中。

5、 系統業務的整合和調整

將流程抽取後,原本連續的業務處理變成一個個的任務節點。需要在每個業務相關處理處添加工作流流程控制、在每個節點處實現相關的業務和流程切入點。

6、 適用範圍

Jbpm工作流適用於:

n 項目流程比較多,流程複雜的項目。

n 系統運行和維護、升級時,流程可能需要修改、調整和跟蹤、控制的項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章