JBPM4 常用表結構及其說明

        首先我想說。這不一篇原創博文。java

這裏設置成原創。主要是爲了分享,因爲它對於jbpm的剛開始學習的人,真的值得一看。原做者的博文地址並無查到,我是在還有一位轉載此文的博主那兒得到的。地址在這兒spring


       本文從表結構、操做時表的變化以及jbpm4.4各個包的做用來介紹jbpm的。數據庫


第一部分:表結構說明
Jbpm4 共同擁有18張表。例如如下,當中紅色的表爲經常使用的表
 
一:資源庫與執行時表結構
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 參與者表
 
二: 歷史數據表
11.  JBPM4_HIST_ACTINST 流程活動(節點)實例表
12.  JBPM4_HIST_DETAIL  流程歷史具體表 
13.  JBPM4_HIST_PROCINST 流程實例歷史表
14.  JBPM4_HIST_TASK  流程任務實例歷史表
15.  JBPM4_HIST_VAR 流程變量(上下文)歷史表
 
三:身份認證表結構
16.  JBPM4_ID_GROUP 組表
17.  JBPM4_ID_MEMBERSHIP 用戶角色表
18.  JBPM4_ID_USER  用戶表
這三張表非常常見。主要的權限控制,關於用戶認證方面建議仍是本身開發一套,組件自帶的功能太簡單,使用中有很是多需求難以知足
 
第二部分:表結構描寫敘述
1.  JBPM4_DEPLOYMENT 流程定義表
2.  JBPM4_DEPLOYPROP 流程定義屬性表
3.  JBPM4_EXECUTION  流程實例表
主要是存放JBPM4的運行信息,Execution機制取代了JBPM3的Token機制。

4.  JBPM4_PROPERTY  流程引擎表
 
5.  JBPM4_TASK 任務表
存放需要人來完畢的Activities。需要人來參與完畢的Activity 被稱爲Task
6.  JBPM4_VARIABLE 上下文表 存的是進行時的暫時變量
7.  JBPM4_JOB  定時表  存放的是Timer的定義
8. JBPM4_LOB  存儲表
9.  JBPM4_SWIMLANE泳道表
Swim Lane是一種Runtime Process Role。經過Swim Lane。多個Task可以一次分配到同一Actor身上。
10.  JBPM4_PARTICIPATION 參與者表   
存放 Participation的信息,Participation的種類有Candidate、Client、Owner、 Replaced Assignee和Viewer。而詳細的Participation既可以是單一用戶,也可以是用戶組。
 
二: 歷史數據表
11.  JBPM4_HIST_ACTINST 流程活動(節點)實例表 存放Activity Instance的歷史記錄
12.  JBPM4_HIST_DETAIL  流程歷史具體表    保存Variable的變動記錄
13.  JBPM4_HIST_PROCINST 流程實例歷史表 存放Process Instance的歷史信息
14.  JBPM4_HIST_TASK  流程任務實例歷史表 Task的歷史信息。
15.  JBPM4_HIST_VAR 流程變量(上下文)歷史表 保存歷史的變量
 
第三部分:操做信息變化
 
注意:下面操做步驟向表中添加記錄的順序(通過測試)
 
公佈一個流程deploy後
Ø jbpm4_deployment(流程定義):新增一條記錄
Ø jbpm4_lob(存儲表): 新增一條記錄
Ø jbpm4_deployprop(流程定義屬性表):新增四條記錄 
 
上傳一個zip包(包括png和jpdl.xml)後
Ø JBPM4_DEPLOYMENT多一條記錄
Ø JBPM4_DEPLOYPROP 多三條
Ø JBPM4_LOB多兩條。
 
 
開始一個流程startProcessInstanceByKey後
Ø jbpm4_execution(流程實例表):新增一條記錄
Ø jbpm4_hist_procinst(流程實例歷史表):新增一條記錄
Ø jbpm4_variable (上下表):新增一條記錄
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
 
 
 
填寫申請信息
Ø jbpm4_variable(上下表) : 新增N條記錄,依據表單信息決定
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
 
審批申請信息
1.容許:
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
2.駁回:
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄

審批結束設計模式

Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄api


第四部分:JBMP4.4包做用
org.jbpm.pvm.internal.ant

提供使用ant公佈流程,輔助啓動jboss的任務。緩存

org.jbpm.pvm.internal.buildersession

用來構造各類模型。包含活動,活動行爲。事件,事件處理器,流程定義。變量。任務。等等。dom

org.jbpm.pvm.internal.cal異步

提供日曆,包含日期。時間段,持續時間,節假日。ide

org.jbpm.pvm.internal.cfg

JbpmConfiguration和SpringConfiguration實現了org.jbpm.api.Configuration。用來從配置文件構造ProcessEngine

org.jbpm.pvm.internal.xml

主要用於解析xml的,主要解析jbpm.cfg.xml和流程定義文件

org.jbpm.pvm.internal.util

包括常常使用工具

org.jbpm.pvm.internal.wire

用來在ioc裏進行依賴綁定。子包包括binding, descriptor, operation和xml,而且默認的綁定方式是使用field。而不是常見的setter綁定方式。

org.jbpm.pvm.internal.type

用來進行類型轉換,主要是載入jbpm.cfg.xml對流程引擎進行初始化時。還有就是公佈流程的時候進行類型轉換。子包包含converter。matcher和variable,類型轉換器,類型匹配器和變量。

org.jbpm.pvm.internal.tx

當中負責處理事務,JtaTransaction啦,SpringTransationInterceptor 啦,StandardTransaction啦,這些需要依據實際環境詳細選擇。jta的實現部分已經單獨放到子包jta中了。但願spring中的事務也能這樣處理就行了。

org.jbpm.pvm.internal.test

包下放了一個JobTestHelper,顯然是可以幫助在測試環境下執行job的,。

org.jbpm.api.client

這部分包括ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution繼承了OpenExecution,聲明瞭end(), signal(), suspend(), resume()之類的方法。

ClientProcessDefintion繼承了OpenProcessDefintion,當中的功能主要是 createProcessInstance和startProcessInstance。

org.jbpm.pvm.internal.cmd

包括Command和CommandService,這是命令設計模式的基礎。

當中放着所有的命令,所有的流程操做都可以在這裏找到。

org.jbpm.pvm.internal.email

如下有兩個子包impl和spi。僅僅要注意spi下的AddressResolver, MailProducer和MailSession就可以實現本身定義的實現了。

org.jbpm.pvm.internal.env

包括Context, Environment, EnvironmentFactory, Transaction, WireObject。當中Context, Environment和EnvironmentFactory組成了jBPM4裏的IoC系統。Transaction定義了通用事務。 WireObject用來作依賴綁定。如下保存着環境有關的實現類。包括Authentication權限認證。Environment與context 相關的各個類。

org.jbpm.pvm.internal.hibernate

如下的類是專門與hibernate進行交互的類,包括類型轉換。命名策略和最基本的DbSessionImpl。所有與數據庫的操做都來源於此。

org.jbpm.pvm.internal.history

如下是歷史操做所需要的部分。其下還包括events和model包。

org.jbpm.pvm.internal.identity

包主要負責身份認證的操做。包括三個子包cmd, impl和spi。cmd下定義所用到的命令,impl下是實現類。spi下放着IdentitySession。

org.jbpm.pvm.internal.jms

包含JmsMessageSession和JmsMessageUtil,應該是用來處理jms的,JmsMessageSession與 org.jbpm.api.job.Message相關聯。

說明job下的Message是依靠jms發送異步消息的。

org.jbpm.pvm.internal.job

提供了對job, message和timer的實現

org.jbpm.pvm.internal.jobexecutor

提供了任務運行器。包含JobExecutorServlet和相應的線程池。以及一系列的命令和處理器。無論是job, message或是timer,終於都會被這裏運行。

org.jbpm.pvm.internal.lob

主要用來處理流程公佈時的文件內容,需要把jpdl.xml文件和圖片,甚至是之後可能把class文件都以附件形式保存到數據庫中,以備後用

org.jbpm.pvm.internal.model

這個模型包中包括了很是多很是多類。包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。

簡單分類一下。最底層的是ObservableElement,它是可以被事件監聽的元素,並且可以繼承,CompositeElement繼承了 ObservableElement,它裏面可以裝填多個活動。再加上Event中定義了多個事件,這些就構成了最主要的事件模型。

Activity和 ActivityCoordinates分別定義了活動類和活動位置。以這些爲基礎。OpenProcessDefinition繼承了 ProcessDefinition和CompositeElement。

終於,咱們另外一個Condition類,它僅僅有一個evaluate方法,接受OpenExecution做爲參數返回boolean值。Condition和Activity組合成了Transition。這個轉移包括了起點。終點,以及條件推斷。最龐大的模型部分,活動,轉移,流程定義,流程實例的實現類都放在這裏。

在它的op子包中包括的是流程進行中的各項操做。

org.jbpm.pvm.internal.query

History, Job, ProcessDefintion, ProcessInstance這四個query類的實現,還提供了一個Page類,但是當中僅僅有firstResult和maxResults,因此沒啥大用

org.jbpm.pvm.internal.repository

負責的是流程的公佈。主要有Deployment和Repository相應的service, session和cache。這裏使用的緩存,因此每次使用流程定義的時候可以利用緩存提升效率。

org.jbpm.pvm.internal.script

包括對腳本的支持,默認支持了JuelScriptEngine。

org.jbpm.pvm.internal.session

支持各類會話,DbSession, MessageSession, RepositorySession和TimerSession。

org.jbpm.pvm.internal.spring

僅僅有一個CommandTransactionCallback用來實現從spring中得到事務,並用其運行jbpm中定義的各類命令

org.jbpm.pvm.internal.stream

用於從各類途徑讀取資源。無論是jbpm配置文件和流程資源都要經過這些來轉換成流的形式,以供給jbpm處理。

org.jbpm.pvm.internal.svc

當中svc也許是service的縮寫。這個包中除了包含org.jbpm.api包下定義的所有service接口的實現,還包含commandService的實現和認證攔截器。

org.jbpm.pvm.internal.task

表明了所有與任務,任務參與者相關的信息,包含Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。簡單劃分後,主要有任務,任務定義任務處理。剩下的都是與任務分配有關了。TaskDefinition從字面上來看是指任務定義,裏邊僅僅有一個getName()。

Task中保存了任務相關的一些內容,OpenTask主要用來處理歷史事件。參與者部分基本分紅三個部分,以Assignable和AssignmentHandler組成的本身定義分配部分。Participation參與者和swimlane泳道。臨時沒有發現三者之間與任務的聯繫


JBPM4 常常使用表結構
第一部分:表結構說明
Jbpm4 共同擁有18張表。例如如下,當中紅色的表爲經常使用的表
 
一:資源庫與執行時表結構
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 參與者表
 
二: 歷史數據表
11.  JBPM4_HIST_ACTINST 流程活動(節點)實例表
12.  JBPM4_HIST_DETAIL  流程歷史具體表 
13.  JBPM4_HIST_PROCINST 流程實例歷史表
14.  JBPM4_HIST_TASK  流程任務實例歷史表
15.  JBPM4_HIST_VAR 流程變量(上下文)歷史表
 
三:身份認證表結構
16.  JBPM4_ID_GROUP 組表
17.  JBPM4_ID_MEMBERSHIP 用戶角色表
18.  JBPM4_ID_USER  用戶表
這三張表非常常見,主要的權限控制,關於用戶認證方面建議仍是本身開發一套。組件自帶的功能太簡單,使用中有很是多需求難以知足
 
第二部分:表結構描寫敘述
1.  JBPM4_DEPLOYMENT 流程定義表
2.  JBPM4_DEPLOYPROP 流程定義屬性表
3.  JBPM4_EXECUTION  流程實例表
主要是存放JBPM4的運行信息,Execution機制取代了JBPM3的Token機制。
4.  JBPM4_PROPERTY  流程引擎表
 
5.  JBPM4_TASK 任務表
存放需要人來完畢的Activities,需要人來參與完畢的Activity 被稱爲Task
6.  JBPM4_VARIABLE 上下文表 存的是進行時的暫時變量
7.  JBPM4_JOB  定時表  存放的是Timer的定義
8. JBPM4_LOB  存儲表
9.  JBPM4_SWIMLANE泳道表
Swim Lane是一種Runtime Process Role。經過Swim Lane。多個Task可以一次分配到同一Actor身上。

10.  JBPM4_PARTICIPATION 參與者表   
存放 Participation的信息。Participation的種類有Candidate、Client、Owner、 Replaced Assignee和Viewer。而詳細的Participation既可以是單一用戶。也可以是用戶組。
 
二: 歷史數據表
11.  JBPM4_HIST_ACTINST 流程活動(節點)實例表 存放Activity Instance的歷史記錄
12.  JBPM4_HIST_DETAIL  流程歷史具體表    保存Variable的變動記錄
13.  JBPM4_HIST_PROCINST 流程實例歷史表 存放Process Instance的歷史信息
14.  JBPM4_HIST_TASK  流程任務實例歷史表 Task的歷史信息。
15.  JBPM4_HIST_VAR 流程變量(上下文)歷史表 保存歷史的變量
 
第三部分:操做信息變化
 
注意:下面操做步驟向表中添加記錄的順序(通過測試)
 
公佈一個流程deploy後
Ø jbpm4_deployment(流程定義):新增一條記錄
Ø jbpm4_lob(存儲表): 新增一條記錄
Ø jbpm4_deployprop(流程定義屬性表):新增四條記錄 
 
上傳一個zip包(包括png和jpdl.xml)後
Ø JBPM4_DEPLOYMENT多一條記錄
Ø JBPM4_DEPLOYPROP 多三條
Ø JBPM4_LOB多兩條。
 
 
開始一個流程startProcessInstanceByKey後
Ø jbpm4_execution(流程實例表):新增一條記錄
Ø jbpm4_hist_procinst(流程實例歷史表):新增一條記錄
Ø jbpm4_variable (上下表):新增一條記錄
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
 
 
 
填寫申請信息
Ø jbpm4_variable(上下表) : 新增N條記錄,依據表單信息決定
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
 
審批申請信息
1.容許:
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄
2.駁回:
Ø jbpm4_task (任務表):新增一條記錄
Ø jbpm4_hist_task(任務歷史表):新增一條記錄
Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄

審批結束

Ø jbpm4_hist_actinst (活動節點實例表):新增一條記錄

jbpm4.4最核心的包

1.antlr.jar

2.commons-collections.jar

3.commons-logging.jar

4.dom4j.jar

5.hibernate-core.jar

6.javassist.jar

7.jbpm.jar

8.jta.jar

9.mail.jar

10.slf4j-api.jar

11.slf4j-jdk14.jar

12.slf4j-log4j12.jar

配置文件

jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml五個hibernate映射文件

jbpm.default.cfg.xml     ---->   流程引擎的默認配置文件

jbpm.identity.cfg.xml    ---->   身份驗證配置文件

jbpm.jbossremote.cfg.xml ---->   遠程調用jboss實現命令模式

jbpm.jobexecutor.cfg.xml ---->   任務運行器的配置

jbpm.task.lifecycle.xml  ---->   任務生命週期,包含啓動。暫停,繼續,完畢。取消之類

jbpm.tx.hibernate.cfg.xml---->   默認的hibernate事務配置

jbpm.tx.jta.cfg.xml      ---->   jta的事務配置

jbpm.variable.types.xml  ---->   配置變量類型映射

jbpm.wire.bindings.xml   ---->   依賴綁定映射

jbpm4.4包做用

org.jbpm.pvm.internal.ant

提供使用ant公佈流程,輔助啓動jboss的任務。

org.jbpm.pvm.internal.builder

用來構造各類模型,包含活動,活動行爲,事件。事件處理器,流程定義,變量。任務,等等。

org.jbpm.pvm.internal.cal

提供日曆。包含日期。時間段,持續時間,節假日。

org.jbpm.pvm.internal.cfg

JbpmConfiguration和SpringConfiguration實現了org.jbpm.api.Configuration,用來從配置文件構造ProcessEngine

org.jbpm.pvm.internal.xml

主要用於解析xml的,主要解析jbpm.cfg.xml和流程定義文件

org.jbpm.pvm.internal.util

包括常常使用工具

org.jbpm.pvm.internal.wire

用來在ioc裏進行依賴綁定。子包包括binding, descriptor, operation和xml,而且默認的綁定方式是使用field。而不是常見的setter綁定方式。

org.jbpm.pvm.internal.type

用來進行類型轉換,主要是載入jbpm.cfg.xml對流程引擎進行初始化時。還有就是公佈流程的時候進行類型轉換。子包包含converter,matcher和variable,類型轉換器,類型匹配器和變量。

org.jbpm.pvm.internal.tx

當中負責處理事務,JtaTransaction啦,SpringTransationInterceptor 啦。StandardTransaction啦,這些需要依據實際環境詳細選擇。

jta的實現部分已經單獨放到子包jta中了。

但願spring中的事務也能這樣處理就行了。

org.jbpm.pvm.internal.test

包下放了一個JobTestHelper,顯然是可以幫助在測試環境下執行job的,。

org.jbpm.api.client

這部分包括ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution繼承了OpenExecution,聲明瞭end(), signal(), suspend(), resume()之類的方法。ClientProcessDefintion繼承了OpenProcessDefintion,當中的功能主要是 createProcessInstance和startProcessInstance。

org.jbpm.pvm.internal.cmd

包括Command和CommandService。這是命令設計模式的基礎。當中放着所有的命令,所有的流程操做都可以在這裏找到。

org.jbpm.pvm.internal.email

如下有兩個子包impl和spi,僅僅要注意spi下的AddressResolver, MailProducer和MailSession就可以實現本身定義的實現了。

org.jbpm.pvm.internal.env

包括Context, Environment, EnvironmentFactory, Transaction, WireObject。

當中Context, Environment和EnvironmentFactory組成了jBPM4裏的IoC系統。

Transaction定義了通用事務。

WireObject用來作依賴綁定。如下保存着環境有關的實現類。

包括Authentication權限認證,Environment與context 相關的各個類。

org.jbpm.pvm.internal.hibernate

如下的類是專門與hibernate進行交互的類,包括類型轉換,命名策略和最基本的DbSessionImpl,所有與數據庫的操做都來源於此。

org.jbpm.pvm.internal.history

如下是歷史操做所需要的部分。其下還包括events和model包。

org.jbpm.pvm.internal.identity

包主要負責身份認證的操做。包括三個子包cmd, impl和spi,cmd下定義所用到的命令,impl下是實現類,spi下放着IdentitySession。

org.jbpm.pvm.internal.jms

包含JmsMessageSession和JmsMessageUtil,應該是用來處理jms的。JmsMessageSession與 org.jbpm.api.job.Message相關聯。

說明job下的Message是依靠jms發送異步消息的。

org.jbpm.pvm.internal.job

提供了對job, message和timer的實現

org.jbpm.pvm.internal.jobexecutor

提供了任務運行器。包含JobExecutorServlet和相應的線程池。以及一系列的命令和處理器。無論是job, message或是timer,終於都會被這裏運行。

org.jbpm.pvm.internal.lob

主要用來處理流程公佈時的文件內容,需要把jpdl.xml文件和圖片,甚至是之後可能把class文件都以附件形式保存到數據庫中。以備後用

org.jbpm.pvm.internal.model

這個模型包中包括了很是多很是多類,包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。

簡單分類一下。

最底層的是ObservableElement,它是可以被事件監聽的元素,並且可以繼承。CompositeElement繼承了 ObservableElement,它裏面可以裝填多個活動。再加上Event中定義了多個事件,這些就構成了最主要的事件模型。Activity和 ActivityCoordinates分別定義了活動類和活動位置。以這些爲基礎。OpenProcessDefinition繼承了 ProcessDefinition和CompositeElement。終於,咱們另外一個Condition類。它僅僅有一個evaluate方法。接受OpenExecution做爲參數返回boolean值,Condition和Activity組合成了Transition,這個轉移包括了起點,終點,以及條件推斷。最龐大的模型部分,活動,轉移,流程定義。流程實例的實現類都放在這裏。在它的op子包中包括的是流程進行中的各項操做。

org.jbpm.pvm.internal.query

History, Job, ProcessDefintion, ProcessInstance這四個query類的實現,還提供了一個Page類,但是當中僅僅有firstResult和maxResults。因此沒啥大用

org.jbpm.pvm.internal.repository

負責的是流程的公佈,主要有Deployment和Repository相應的service, session和cache,這裏使用的緩存,因此每次使用流程定義的時候可以利用緩存提升效率。

org.jbpm.pvm.internal.script

包括對腳本的支持,默認支持了JuelScriptEngine。

org.jbpm.pvm.internal.session

支持各類會話,DbSession, MessageSession, RepositorySession和TimerSession。

org.jbpm.pvm.internal.spring

僅僅有一個CommandTransactionCallback用來實現從spring中得到事務,並用其運行jbpm中定義的各類命令

org.jbpm.pvm.internal.stream

用於從各類途徑讀取資源。無論是jbpm配置文件和流程資源都要經過這些來轉換成流的形式,以供給jbpm處理。

org.jbpm.pvm.internal.svc

當中svc也許是service的縮寫。這個包中除了包含org.jbpm.api包下定義的所有service接口的實現,還包含commandService的實現和認證攔截器。

org.jbpm.pvm.internal.task

表明了所有與任務,任務參與者相關的信息。包含Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。簡單劃分後,主要有任務,任務定義任務處理。剩下的都是與任務分配有關了。TaskDefinition從字面上來看是指任務定義。裏邊僅僅有一個getName()。Task中保存了任務相關的一些內容。OpenTask主要用來處理歷史事件。參與者部分基本分紅三個部分。以Assignable和AssignmentHandler組成的本身定義分配部分,Participation參與者和swimlane泳道。臨時沒有發現三者之間與任務的聯繫

相關文章
相關標籤/搜索