第二十二jbpm4.0與jbpm3.0差異二_第1頁(yè)
第二十二jbpm4.0與jbpm3.0差異二_第2頁(yè)
第二十二jbpm4.0與jbpm3.0差異二_第3頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、北風(fēng)網(wǎng)項(xiàng)目培訓(xùn)第二十二JBPM4.0與JBPM3.0差異(二)講師:陽(yáng)光JBPM工作流JBPM4.0與JBPM3.0客戶端接口的變化1、 流程定義語(yǔ)言的模型沒有改變,只是部分元素的命名發(fā)生變化2、 流程執(zhí)行引擎的算法沒有改變,只是對(duì)原有引擎進(jìn)行了優(yōu)化,去掉了冗余的root token。JBPM4出來(lái)后,有不少的文檔探討了JBPM引擎的變化,有的文章分析說其核心引擎的調(diào)度機(jī)制完全不同了,這是不對(duì)的,因?yàn)檫€是Token機(jī)制,只是換了個(gè)名字(Execution),加上一定的優(yōu)化(或稱簡(jiǎn)化)。3、 流程引擎的事件機(jī)制沒有改變,只是改變了默認(rèn)的事件觸發(fā)范圍4、 整個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)完全改變,甚至前綴變成了JB

2、PM4,目的是希望能夠跟JBPM3的表不發(fā)生沖突,甚至能夠兩個(gè)版本并行運(yùn)行。其實(shí)數(shù)據(jù)庫(kù)結(jié)構(gòu)的巨大變化,是第2點(diǎn)變化、以及其他冗余消除的自然結(jié)果5、 接口的變化,文檔的調(diào)整和重寫,只是為了更好的針對(duì)公共普通型應(yīng)用和高級(jí)定制型應(yīng)用,降低二者的開發(fā)難度。引擎存在的幾個(gè)類似問題:1、 root token其實(shí)是冗余,完全可以合并到流程實(shí)例里2、 module instance 也是冗余的3、 流程定義相關(guān)的表也是冗余的4、 沒有歷史表5、 JBPM4.0與JBPM3.0客戶端接口的變化在jbpm4中對(duì)客戶端的接口統(tǒng)一為7個(gè)服務(wù)接口:ProcessService、ExecutionService、Com

3、mandService 、TaskService 、ManagementService、HistoryService、IdentityService,這7個(gè)接口可以從ProcessEngine接口中獲得,jbpm4在啟動(dòng)的過程中由JbpmConfiguration負(fù)責(zé)構(gòu)建引擎。 ProcessService-流程定義的服務(wù)接口,包括對(duì)流程定義的部署、查詢、刪除操作; ExecutionService-執(zhí)行服務(wù)接口,包括啟動(dòng)流程、實(shí)例推進(jìn)、設(shè)置變量等操作;JBPM4.0與JBPM3.0客戶端接口的變化 mand模式的服務(wù)接口,實(shí)際上就是將客戶端的請(qǐng)求全部封裝在一個(gè)調(diào)用接口中,然后由這個(gè)接口去調(diào)用

4、Command接口的眾多實(shí)現(xiàn)(StartExecutionCmd、SignalCmd、SetVariablesCmd、GetTimersCmd、DeployCmd、NewTaskCmd、SubmitTask、ExecuteJobCmd等等,具體可參加pvm/internal/cmd,task/internal/cmd包及其它包下實(shí)現(xiàn)Command接口的類),這是典型的Command模式的應(yīng)用,感興趣的讀者可以去了解設(shè)計(jì)模式中的Command模式; TaskService-人工活動(dòng)的服務(wù)接口,包括對(duì)任務(wù)的創(chuàng)建、提交、查詢、保存、刪除等操作; ManagementService-web管理控制臺(tái)的

5、服務(wù)接口,目前只有獲得消息及計(jì)時(shí)器的接口實(shí)現(xiàn); HistoryService-目前有對(duì)歷史庫(kù)中的流程實(shí)例、活動(dòng)實(shí)例進(jìn)行查詢、某個(gè)流程定義中的所有活動(dòng)的平均持續(xù)時(shí)間、某個(gè)流程定義中的某個(gè)活動(dòng)實(shí)例的轉(zhuǎn)移的執(zhí)行次數(shù) IdentityService-用戶、組、成員關(guān)系的相關(guān)操作方法JBPM4.0IOC容器IOC容器的目的是管理組件和實(shí)現(xiàn)組件之間的解耦。和Spring里的BeanFactory對(duì)應(yīng),Jbpm4里的接口是Context,具體實(shí)現(xiàn)則是WireContext。Context實(shí)際在Jbpm4里有更多的含義,它與Environment一起,共同構(gòu)成了代碼運(yùn)行的運(yùn)行期環(huán)境。在這個(gè)環(huán)境里可以獲取系統(tǒng)的

6、組件,更為重要的是提供了數(shù)據(jù)庫(kù)連接(session)和事務(wù)??纯碈ontext接口的核心方法: Object get(String key);T Get(ClassT type)很明顯,提供兩種從容器里獲取組件的方法,一種是通過name,一種是通過type。對(duì)于IOC容器來(lái)說,一般情況下都會(huì)提供一種加載的方式,比如從xml文件進(jìn)行加載、從資源文件進(jìn)行加載。Jbpm4透過WireParser具備從xml加載的能力。此外,WireContext通過一個(gè)Map緩存初始化后的組件。JBPM4.0IOC容器的實(shí)現(xiàn)容器的實(shí)現(xiàn)有五個(gè)關(guān)鍵類和接口,分別是:WireParser、Binding、Descript

7、or、WireDefinition和WireContext。WireParser讀取xml文件,同時(shí)WireParser會(huì)加載一系列的Binding(默認(rèn)從jbpm.wire.bindins.xml文件讀取加載)。Binding負(fù)責(zé)根據(jù)xml里元素的tag將xml元素轉(zhuǎn)換為對(duì)應(yīng)的Descriptor。Descriptor負(fù)責(zé)初始化對(duì)象。它們被添加到WireDefinition。WireDefinition被WireParser返回給WireContext。WireContext創(chuàng)建對(duì)象時(shí)會(huì)訪問WireDefinition里的Descriptor,同時(shí)將初始化對(duì)象的任務(wù)委托給Descriptor自身。需要注意的是:Jbpm4在初始化對(duì)象時(shí)有著四種策略,分別是:延遲創(chuàng)建和初始化、延遲創(chuàng)建和立刻初始化、立刻創(chuàng)建和延遲初始化、立刻創(chuàng)建和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論