工作流Activiti的学习总结 activiti的API和虚拟工作流测试_第1页
工作流Activiti的学习总结 activiti的API和虚拟工作流测试_第2页
工作流Activiti的学习总结 activiti的API和虚拟工作流测试_第3页
工作流Activiti的学习总结 activiti的API和虚拟工作流测试_第4页
工作流Activiti的学习总结 activiti的API和虚拟工作流测试_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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() 在第一个被调用的时候初始化并创建一个流程引擎,在以后的调 用中返回同一个引用的流程引擎对象。针对流程引擎中初始化方法为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 环境中流程引擎的 使用:由于proce

11、ssEngine是一个线程安全性的对象可以容易在 多个线程中被共享。在web容器启动加载创建工作流引擎,在容器销毁销毁工作 流引擎。可以ServletContextListener实现相关的功能。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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论