一,概述
JBPM全稱——Java Business PrcessManagerment(業務流程管理),它是覆蓋了業務流程管理、工作流、服務協作等領域的一個開放的、靈活的、易擴展的可執行流程語言框架。
二,最大特色
(1)它的業務邏輯定義沒有采用目前的一些規范,而是采用了它自己定義的Jboss Jbpm Process Definition Language(jpdl)。jpdl任務一個業務流程可以被看作是一個UML狀態圖。jpdl認為一個業務流程可以被看作是一個UML狀態圖。jpdl就是詳細定義了這個狀態圖的每個部分,如起始、結束狀態,以及狀態之間的轉換,通過圖形化的流程定義,直觀地描述業務流程。
(2)使用Hibernate來管理Jbpm的數據庫。
三,通過實例介紹Jbpm重要的幾張表
(1)Jbpm共18張表
(2)涉及到的一些基本流程無非是:
——部署流程定義、啟動流程實例、獲取個人(組)任務、高亮顯示(查看流程進展圖)、完成任務。。。。
(3)例:以請假流程為例:
qingjia.jpdl.xml:
<?xmlversion="1.0" encoding="UTF-8"?>
<processname="qingjia1" xmlns="http://jbpm.org/4.4/jpdl"key="qingjia1">
<start g="246,28,7,3"name="start1">
<transition g="-71,-17"name="to 申請請假" to="申請請假"/>
</start>
<end g="226,320,48,48"name="end1"/>
<task assignee="張三" g="88,99,92,52" name="申請請假">
<transition g="-138,5"name="to 部門經理審批" to="部門經理審批"/>
</task>
<task assignee="李四" g="233,156,92,52" name="部門經理審批">
<transition g="3,-26"name="to 總經理審批" to="總經理審批"/>
</task>
<task assignee="王二麻子" g="380,226,92,52" name="總經理審批">
<transition g="-47,-17"name="to end1" to="end1"/>
</task>
</process>
(1)部署流程定義——從classpath加載jpdl.xml文件
public staticProcessEngine processEngine;
processEngine =Configuration.getProcessEngine();
public voidtestDeployFromClasspath(){
processEngine.getRepositoryService()
.createDeployment()
.addResourceFromClasspath("qingjia.jpdl.xml")
.addResourceFromClasspath("qingjia.png")
.deploy();
}
涉及到的表:
表名(英)
表名(中)
說明
字段
字段說明
Jbpm4_Deployment
部署表
描述一次部署
DBID_
主鍵、部署ID
State
狀態 active
Jbpm4_Lob
倉庫表
存放了流程定義文檔(xml、png)
Deployment_
部署ID、外鍵
Name_
Xml或png的文件路徑
Jbpm4_Deployprop
部署屬性表
DBID_
主鍵
Objname_
流程定義名稱
Key_
每部署一次,生成4行記錄
Langid
語言版本 jpdl-4.4
Pdid
{pdkey-version}
Pdkey
流程定義名稱
一般情況下,pdkey和objname_的值是一樣的
Pdversion
版本號
如果pdkey沒有發生改變,每部署一次,版本號加1;如果pdkey發生改變,則是一個全新的名稱,所以版本號應該從1開始計算
(2)啟動流程實例——根據Id啟動
public voidtestStartPIByPDID(){
ProcessInstancepi = processEngine.getExecutionService()
.startProcessInstanceById("qingjia1-1");
System.out.println(pi.getId());
System.out.println(pi.getState());
}
表名(英)
表名(中)
說明
字段
字段說明
Jbpm4_Execution
流程實例表
表示當前正在執行的流程實例
DBID_
主鍵
ID_
流程實例ID
ActivityName_
當前流程實例活躍的節點
Procdefid_
流程定義ID
Jbpm4_Hist_Procinst
歷時流程實例表
表示歷史的流程實例,但是當前正在運行的流程實例也在這裡
DBID_
主鍵
ID_
流程實例ID
Start_
整個流程實例的開始時間
End_
流程實例的結束時間,如果該流程實例為當前正在運行的流程,則該值為空
State
表示流程實例的狀態,如果是正在運行為active,如果流程實例結束為ended
Jbpm4_task
任務表
表示當前正在執行的任務(任務是jbpm流程圖的一個節點)
DBID_
主鍵、任務ID
臨時表,當前任務完成後,數據被刪除;
當啟動流程實例的時候,會自動離開開始節點,流向下一個節點
Name_
任務名稱
Assignee_
任務執行人
Jbpm4_Hist_Task
歷史任務表
表示歷史的任務,但是當前正在執行的任務也在這裡
State_
如果一個任務被完成以後,值為completed
End_
任務結束時間
Jbpm4_Hist_Actinst
歷時節點表
表示歷史的節點
Type
節點類型
四,表結構總結:
共18張表。紅色為常用表
(1)資源庫與運行時表結構
1. JBPM4_DEPLOYMENT 流程定義表
2. JBPM4_DEPLOYPROP 流程定義屬性表
3. JBPM4_EXECUTION 流程實例表
4. JBPM4_PROPERTY 流程引擎表
5. JBPM4_TASK 任務表
6. JBPM4_VARIABLE 上下文表
7. JBPM4_JOB 定時表
8. JBPM4_LOB 存儲表
9. JBPM4_SWIMLANE泳道表
10. JBPM4_PARTICIPATION 參與者表
(2) 歷史數據表
11. JBPM4_HIST_ACTINST 流程活動(節點)實例表
12. JBPM4_HIST_DETAIL 流程歷史詳細表
13. JBPM4_HIST_PROCINST 流程實例歷史表
14. JBPM4_HIST_TASK 流程任務實例歷史表
15. JBPM4_HIST_VAR 流程變量(上下文)歷史表
(3)身份認證表結構
16. JBPM4_ID_GROUP 組表
17. JBPM4_ID_MEMBERSHIP 用戶角色表
18. JBPM4_ID_USER 用戶表
JBPM4.4部署在Tomcat6以上的版本jar包沖突 http://www.linuxidc.com/Linux/2014-04/99476.htm
JBPM工作流開發指南 PDF http://www.linuxidc.com/Linux/2014-06/103823.htm
JBPM流程實例(PV)Process Variables http://www.linuxidc.com/Linux/2014-06/102859.htm
JBPM流程實例(PI)Process Instance http://www.linuxidc.com/Linux/2014-06/102858.htm
JBPM流程部署校驗 http://www.linuxidc.com/Linux/2014-06/102860.htm
JBPM 的詳細介紹:請點這裡
JBPM 的下載地址:請點這裡