下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度餐饮行业冷链配送与质量追溯体系合同3篇
- 郑州科技学院《风景人像基础教程》2023-2024学年第一学期期末试卷
- 2025版互联网金融服务委托理财合同范本库3篇
- 2025年行政合同签订及管理中行政优先权的法律风险防范指南2篇
- 美容院股份转让服务协议(2025版)2篇
- 二零二五版美容美发行业美容院品牌推广服务合同4篇
- 2025年度个人反担保协议样本:教育机构贷款融资专用4篇
- 2025版全面升级危险品物流运输合同范本3篇
- 西安市2025年度汽车租赁企业服务质量评价体系3篇
- 2025年度菜鸟驿站绿色物流体系建设与推广合同3篇
- 圆周率的认识
- 基于SMT求解器的分支条件覆盖测试
- 反骚扰政策程序
- 运动技能学习与控制课件第十一章运动技能的练习
- 射频在疼痛治疗中的应用
- 四年级数学竖式计算100道文档
- “新零售”模式下生鲜电商的营销策略研究-以盒马鲜生为例
- 项痹病辨证施护
- 怀化市数字经济产业发展概况及未来投资可行性研究报告
- 07FD02 防空地下室电气设备安装
- 教师高中化学大单元教学培训心得体会
评论
0/150
提交评论