工作流Activiti的學(xué)習(xí)總結(jié) activiti的API和虛擬工作流測(cè)試_第1頁(yè)
工作流Activiti的學(xué)習(xí)總結(jié) activiti的API和虛擬工作流測(cè)試_第2頁(yè)
工作流Activiti的學(xué)習(xí)總結(jié) activiti的API和虛擬工作流測(cè)試_第3頁(yè)
工作流Activiti的學(xué)習(xí)總結(jié) activiti的API和虛擬工作流測(cè)試_第4頁(yè)
工作流Activiti的學(xué)習(xí)總結(jié) activiti的API和虛擬工作流測(cè)試_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、工作流Activiti的學(xué)習(xí)總結(jié)(五)activiti的API和虛擬工作流測(cè)試工作流Activiti的學(xué)習(xí)總結(jié)(五)activiti的API和虛擬工 作流測(cè)試activiti的API在activiti引擎中,你可以通過(guò)多種方式 獲取ProcessEngine對(duì)象,從ProcessEngine中獲取各種服務(wù)對(duì)象, 從而訪問(wèn)工作流/BPM方法。ProcessEngine和她的各種服務(wù)均為線程安全性服務(wù)。在整個(gè)項(xiàng)目中每一種服務(wù)僅需要保持一個(gè)引用。ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEn gine();RuntimeSe

2、rviceruntimeService=processEngine.getRuntimeSe rvice();RepositoryServicerepositoryService=processEngine.getRepo sitoryService();TaskServicetaskService=processEngine.getTaskServi ce();ManagementServicemanagementService=processEngine.getMa nagementService();IdentityServiceidentityService=processEngine

3、.ge tIdentityService();HistoryServicehistoryService=processEngine.get HistoryService();ServiceService=processEngine.getService();針 對(duì) ProcessEngine 的說(shuō)明:ProcessEngine.getDefaultProcessEngine() 在第一個(gè)被調(diào)用的時(shí)候初始化并創(chuàng)建一個(gè)流程引擎,在以后的調(diào) 用中返回同一個(gè)引用的流程引擎對(duì)象。針對(duì)流程引擎中初始化方法為ProcessEngine.init().銷(xiāo)毀方法 的方法為ProcessEngine.destro

4、y().ProcessEngineConfiguration.createProcess EngineConfigurationFromStream(Stream).buildProcessEngine()倉(cāng)寸 建工作流引擎,ProcessEngine見(jiàn)掃描所有的activiti.cfg.xml文件 和 activiti-context.xml 文件。異常策略:在 activiti 中 org.activiti.engine.ActivitiException 類(lèi) 為所有異常的基類(lèi)。ActivitiException為非檢查性異常。例如:*Calledwhenthetaskissuccessf

5、ullycuted.*paramtaskIdtheidofthe tasktocomplete,cannotbenull.*throwsActivitiExceptionwhennotas kexistswiththegivenid.*/voidcomplete(StringtaskId);其他異常類(lèi)如 下:ActivitiWrongDbException:ThrownwhentheActivitienginediscovers amismatchbetweenthedatabaseschemaversionandtheengineversion(s chema 版本和引擎版本不匹配報(bào)的錯(cuò) 誤

6、).ActivitiOptimisticLockingException:Thrownwhenanoptimisticlo ckingoccursinthedatastorecausedbyconcurrentaccessofthesamedatae ntry.ActivitiClassLoadingException:Thrownwhenanclassrequestedto loadwasnotfoundorwhenerroroccurredwhileloadingit(eg.JavaDelegat es,TaskListeners,.).Activiti 的測(cè)試:activiti 的測(cè)試支

7、持 Junit3 和 Junit4的單元測(cè)試。在 junit3 的單元測(cè)試中,org.activit.engine.test.ActivitiTestCase 必須被繼承。在setup ()方法中,流程引擎要初始化加載classpath下默認(rèn) 的activi.cfg.xml資源文件。針對(duì)不同的配置文件可能需要重新getConfigurationResource() 方法。在 ActivitiTestCase 中 可 以 使 用 org.activiti.engine.test.Deployment 注解方法。publicclassMyBusinessProcessTestextendsActi

8、vitiTestCaseDeplo ymentpublicvoidtestSimpleProcess()runtimeService.startProcessIns tanceByKey(simpleProcess“)Tasktask=taskService.createTaskQuer y().singleResult();assertEquals(MyTask“,task.getName()taskSplet e(task.getId();assertEquals(0,runtimeService.createProcessInstance Query().count();在junit4中

9、org.activiti.engine.test.ActivitiRuleRule 被采用。通過(guò)ActivitiRule中g(shù)etter方法獲取相關(guān)的服務(wù)。在 Junit4 同樣功能的單元測(cè)試如下:publicclassMyBusinessProcessTestRulepublicActivitiRuleactivitiRule=newActivitiRule();TestDeploymentpublicvoidruleUsageE xample()RuntimeServiceruntimeService=activitiRule.getRuntimeS ervice()runtimeServi

10、ce.startProcessInstanceByKey(ruleUsage“)Ta skServicetaskService=activitiRule.getTaskService();Tasktask=taskSe rvice.createTaskQuery().singleResult()assertEquals(MyTask“,task.getName();taskSplete(task.getId();assertEquals(0,runtimeService.createProcessInstanceQuery().count();在 web 環(huán)境中流程引擎的 使用:由于proce

11、ssEngine是一個(gè)線程安全性的對(duì)象可以容易在 多個(gè)線程中被共享。在web容器啟動(dòng)加載創(chuàng)建工作流引擎,在容器銷(xiāo)毀銷(xiāo)毀工作 流引擎??梢許ervletContextListener實(shí)現(xiàn)相關(guān)的功能。publicclassProcessEnginesServletContextListenerimplementsServlet ContextListenerpublicvoidcontextInitialized(ServletContextEvents ervletContextEvent)ProcessEngines.init();publicvoidcontextDestr oyed(Ser

12、vletContextEventservletContextEvent)ProcessEngines.des troy();Activiti 提 供 模 擬 流 程 的 APIPvmProcessDefinitionprocessDefinition=newProcessDefinition Builder().createActivity(a).initial().behavior(newWaitState().trans ition(b).endActivity().createActivity(b).behavior(newWaitState( ).transition(c).endAc

13、tivity().createActivity(c).behavior(newWai tState().endActivity().buildProcessDefinition();PvmProcessInstance processInstance=processDefinition.createProcessInstance();processI nstance.start();PvmcutionactivityInstance=processInstance.findcutio n(“a)assertNotNull(activityInstance)activityInstance.si

14、gnal(null,n ull)activityInstance=processInstance.findcution(“b“)assertNotNull( activityInstance);activityInstance.signal(null,null);activityInstance=p rocessInstance.findcution(“c“)assertNotNull(activityInstance)activiti 中表達(dá)式 activiti 使用 UEL(UnifiedExpressionLanuage)標(biāo)記解析 配置文件中表達(dá)式。UEL是EE6特性。activiti 中 Expressions 支持兩種方式: 1.Valueexpression:在 activiti中Delegatecution是在上下文中是使用“cution”在表達(dá)式上 下文被使用的。所有

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論