jbpm的表結(jié)構(gòu)以及六大服務(wù)
來源:程序員人生 發(fā)布時間:2014-12-13 08:45:38 閱讀次數(shù):3450次
對jbpm的開發(fā),你應(yīng)當具有的基本知識是對表結(jié)構(gòu)的理解,和對API的熟習(xí),下面我就帶大家總結(jié)1下這兩方面的知識:
1、jbpm表結(jié)構(gòu)介紹
1.資源庫和運行時表結(jié)構(gòu)(10張表)
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。而具體的參與者既可以是單1用戶,也能夠是用戶組 。
JBPM4_SWIMLANE泳道表。SwimLane是1種Runtime Process Role。通過SwimLane,多個Task可以1次分配到同1Actor身上 。
JBPM4_JOB 寄存的是Timer 的定義 。
JBPM4_VARIABLE 存的是進行時的臨時變量。
JBPM4_PROPERTY 引擎參數(shù)表
JBPM4_HIST_PROCINST 與JBPM4_HIST_ACTINST 分別寄存Process Instance和Activity Instance的歷史記錄 。
JBPM4_HIST_DETAIL 流程歷史詳細表,保存 Variable的變更記錄 。
JBPM4_HIST_VAR 保存歷史的變量 JBPM4_HIST_TASK Task的歷史信息 。
JBPM4_HIST_TASK 任務(wù)歷史表,Task的歷史信息。
3.身份認證表結(jié)構(gòu) (3張表)
JBPM4_ID_GROUP ,JBPM_ID_MEMBERSHIP ,JBPM4_ID_USER 這3張表很常見,基本的權(quán)限控制,關(guān)于用戶認證方面建議還是自己開發(fā)1套,組件自帶的功能太簡單,使用中有很多需求難以滿足
2、流程引擎對象:
ProcessEngine是jbpm4所有Service API之源
在jbpm中各種服務(wù)相互依存,但所有的service API都從ProcessEngine中取得,它是由Configuration類構(gòu)建的,即工作流引擎根據(jù)配置產(chǎn)生。
ProcessEngine是線程安全的,因此它可以保存在靜態(tài)變量中,乃至JNDI命名服務(wù)中或其他重要位置。在利用中,所有線程和要求都可使用同1個ProcessEngine對象,以下代碼告知您如何取得ProcessEngine:
ProcessEngine processEngine=Configuration.getProcessEngine();
上面代碼中的Configuration使用了classpath根目錄下的默許配置文件jbpm.cfg.xml創(chuàng)建1個ProcessEngine。如果你要自定義位置,那末可以這樣做:
ProcessEngine processEngine=new Configuration().setResource(“myjbpm.xml”)
buildProcessEngine();
然后,那6個service直接可以用processEngine.getXXX()得到。下面把這6個service描寫1下:
1.操作資源庫和運行時服務(wù)(4個)
RepositoryService―流程之源服務(wù)的接口。提供對流程定義的部署,查詢,刪除等操作。
ExecutionService―流程履行服務(wù)的接口。提供啟動流程實例,“履行”推動,設(shè)置流程變量等操作
ManagementService―流程管理控制服務(wù)的接口,提供異步工作(Job)相干的履行和查詢操作。
TaskService―人工任務(wù)服務(wù)的接口。提供對任務(wù)(Task)的創(chuàng)建,提交,查詢,保存,刪除等操作。
HistoryService―流程歷史服務(wù)的接口。提供對流程歷史庫(即已完成的流程實例歸檔)中歷史流程實例,歷史活動實例等記錄的查詢操作。還提供諸如某個流程定義中所有活動的平均延續(xù)時間,某個流程定義中某轉(zhuǎn)移的經(jīng)過次數(shù)等數(shù)據(jù)分析服務(wù)。
3.操作身份認證服務(wù) (1個)
IdentityService―身份認證服務(wù)的接口。提供對流程用戶,用戶組和組成員關(guān)系的相干服務(wù)
3、當前使用工作流的問題:
1、對當前任務(wù)的條件查詢:
jBPM不提供靈活進行條件查詢的api,如果需要,可以自定義hibernate查詢,從jbpm相應(yīng)的數(shù)據(jù)表中查詢?nèi)蝿?wù)數(shù)據(jù)。但需要對jBPM機制比較了解,而且有些復(fù)雜條件難以用jBPM本身的信息查到。
2、統(tǒng)計各個流程實例的狀態(tài):
可以通過流程實例,在jbpm系統(tǒng)表中查詢,也能夠在業(yè)務(wù)表的相應(yīng)數(shù)據(jù)上加上狀態(tài)列來統(tǒng)計。前1個比較麻煩,后1個比較直觀,但不會因使用jBMP而使工作量減少。
3、工作流數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)結(jié)合:
1般通過在流程實例中添加相應(yīng)的1筆數(shù)據(jù)的標識作為變量來關(guān)聯(lián)。也能夠有針對性的擴大jbpm的系統(tǒng)表來實現(xiàn)與業(yè)務(wù)的關(guān)聯(lián)性。
4、修改流程后的歷史數(shù)據(jù)兼容性問題:
Jbpm工作流流程定義有版本的概念,修改流程后要重新發(fā)布,與舊的流程不是1個同1個版本。系統(tǒng)可以區(qū)分開新舊流程來。
總結(jié): 關(guān)于業(yè)務(wù)數(shù)據(jù)與jBPM本身的數(shù)據(jù)
理論上說,如果使用jBPM,可以將所有業(yè)務(wù)數(shù)據(jù)放到j(luò)BPM的context中管理,不再保護業(yè)務(wù)數(shù)據(jù)表。但這樣的結(jié)果是在流程以外的環(huán)境(比如在統(tǒng)計報表中)中沒法容易的得到業(yè)務(wù)數(shù)據(jù)。所以1般會建立業(yè)務(wù)數(shù)據(jù)表,我不使用工作流時1樣,然后讓jBMP從業(yè)務(wù)數(shù)據(jù)表中得到業(yè)務(wù)數(shù)據(jù),而不在jBPM中保存業(yè)務(wù)數(shù)據(jù)。因此,使用jBPM后,在業(yè)務(wù)數(shù)據(jù)方面基本不會減少工作。
對jbpm的學(xué)習(xí)還是處于低級階段,其中對表結(jié)構(gòu)的熟習(xí),和對流程引擎對象使用的熟練程度,都需要在項目中去歷練。而現(xiàn)在的想法,與思惟上的困難也只有在真實的看到項目上線的那天才會明了。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈