下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年大学试题(社会学)-创新、发明与专利实务笔试参考题库含答案
- 2024年大学试题(文学)-中国饮食文化笔试参考题库含答案
- 2024年大学试题(医学)-言语治疗学笔试参考题库含答案
- 2024年大学试题(医学)-临床药学笔试参考题库含答案
- 中国金属加工行业市场深度调研及竞争格局与投资前景研究报告2024-2034版
- 【高考专题辅导】高考英语专题检测卷(三) 词法 第3讲 形容词和副词
- 磨矿工:中级磨矿分级工必看考点
- 山东省淄博市张店外语实验学校2023-2024学年八年级下学期4月期中数学试题
- 专题03 化学计量-2023年高考化学真题题源解密(全国)(解析版)
- 2023-2024学年北京市西城区第一五六中学高三第二次联考英语试卷含解析
- 甜甜的棒棒糖
- 高真空击密法
- 咕咚来了PPT课件
- 岗位安全操作规程编写指南(六步法)
- 重力式挡土墙施工作业指导书
- 变电站运维方案
- 合同与信息管理监理实施细则
- 地铁16号线变电所及环网电缆送电方案
- 毕业设计(论文)400kn曲柄压力机总体结构及传动系统设计(全套图纸)
- 双向拉伸聚丙烯设备在锂电池隔膜生产上的应用
- 胃癌临床路径(2021年版)
评论
0/150
提交评论