工作流Activiti的學習總結 activiti的API和虛擬工作流測試_第1頁
工作流Activiti的學習總結 activiti的API和虛擬工作流測試_第2頁
工作流Activiti的學習總結 activiti的API和虛擬工作流測試_第3頁
工作流Activiti的學習總結 activiti的API和虛擬工作流測試_第4頁
工作流Activiti的學習總結 activiti的API和虛擬工作流測試_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、工作流Activiti的學習總結(五)activiti的API和虛擬工作流測試工作流Activiti的學習總結(五)activiti的API和虛擬工 作流測試activiti的API在activiti引擎中,你可以通過多種方式 獲取ProcessEngine對象,從ProcessEngine中獲取各種服務對象, 從而訪問工作流/BPM方法。ProcessEngine和她的各種服務均為線程安全性服務。在整個項目中每一種服務僅需要保持一個引用。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();針 對 ProcessEngine 的說明:ProcessEngine.getDefaultProcessEngine() 在第一個被調(diào)用的時候初始化并創(chuàng)建一個流程引擎,在以后的調(diào) 用中返回同一個引用的流程引擎對象。針對流程引擎中初始化方法為ProcessEngine.init().銷毀方法 的方法為ProcessEngine.destro

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

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

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

7、持 Junit3 和 Junit4的單元測試。在 junit3 的單元測試中,org.activit.engine.test.ActivitiTestCase 必須被繼承。在setup ()方法中,流程引擎要初始化加載classpath下默認 的activi.cfg.xml資源文件。針對不同的配置文件可能需要重新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 被采用。通過ActivitiRule中getter方法獲取相關的服務。在 Junit4 同樣功能的單元測試如下: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是一個線程安全性的對象可以容易在 多個線程中被共享。在web容器啟動加載創(chuàng)建工作流引擎,在容器銷毀銷毀工作 流引擎??梢許ervletContextListener實現(xià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 中表達式 activiti 使用 UEL(UnifiedExpressionLanuage)標記解析 配置文件中表達式。UEL是EE6特性。activiti 中 Expressions 支持兩種方式: 1.Valueexpression:在 activiti中Delegatecution是在上下文中是使用“cution”在表達式上 下文被使用的。所有

溫馨提示

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

最新文檔

評論

0/150

提交評論