




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
jbpm5.1介绍(9)Junit测试调用子流程下面的示例中测试在程序中调用其它程序的子流程的示例,需要加载两个配置文件和需要指定属性下面是调用的示例程序?public void testCallActivity() throws Exception System.out.println(Loading process BPMN2-CallActivity.bpmn2);KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();kbuilder.add(ResourceFactory.newClassPathResource(junit/BPMN2-CallActivity.bpmn2),ResourceType.BPMN2);kbuilder.add(ResourceFactory.newClassPathResource(junit/BPMN2-CallActivitySubProcess.bpmn2),ResourceType.BPMN2);KnowledgeBase kbase = kbuilder.newKnowledgeBase();StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);Map params = new HashMap();params.put(x, oldValue);ProcessInstance processInstance = ksession.startProcess(ParentProcess, params);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);assertEquals(new value,(WorkflowProcessInstance) processInstance).getVariable(y);程序输出以下结果Loading process BPMN2-CallActivity.bpmn2我是子流程 subX=oldValue证明子流程调用成功Junit测试子流程执行过程中触发的事件下面的示例中测试在子流程执行的过程中触发各种事件流程如下图在执行到hello1的时候变量x是没有值的,在执行hello2的时候赋值,在执行到hello3的时候变量能够输出值测试程序如下:?public void testSubProcess() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-SubProcess.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.addEventListener(new DefaultProcessEventListener() public void afterProcessStarted(ProcessStartedEvent event) System.out.println(流程启动以后+event);public void beforeVariableChanged(ProcessVariableChangedEvent event) System.out.println(变量改变之前+event);public void afterVariableChanged(ProcessVariableChangedEvent event) System.out.println(变量改变以后+event););ProcessInstance processInstance = ksession.startProcess(SubProcess);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);输出的结果如下:Loading process BPMN2-SubProcess.bpmn2x = null变量改变之前=ProcessVariableChanged(id=2:x; instanceId=1:x; oldValue=null; newValue=Hello; processName=Minimal SubProcess; processId=SubProcess)变量改变以后=ProcessVariableChanged(id=2:x; instanceId=1:x; oldValue=null; newValue=Hello; processName=Minimal SubProcess; processId=SubProcess)x = HelloGoodbye World流程启动以后=ProcessStarted(name=Minimal SubProcess; id=SubProcess)Junit测试多流程循环下面的示例中主要测试的是多流程循环的示例界面流程如下执行的测试程序如下:?public void testMultiInstanceLoopCharacteristicsProcess() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-MultiInstanceLoopCharacteristicsProcess.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);Map params = new HashMap();List myList = new ArrayList();myList.add(First Item);myList.add(Second Item);params.put(list, myList);ProcessInstance processInstance = ksession.startProcess(MultiInstanceLoopCharacteristicsProcess, params);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);执行结果如下Loading process BPMN2-MultiInstanceLoopCharacteristicsProcess.bpmn2item = First Itemitem = Second ItemGoodbye WorldJunit测试异常事件处理流程下面的示例中主要测试的是在执行到子流程中的异常的时候的处理流程程序流程如下:首先执行子流程中的内容,默认遇到错误,将触发错误事件,然后执行对应的事件,输出内容测试程序如下:?public void testEscalationBoundaryEvent() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EscalationBoundaryEvent.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ProcessInstance processInstance = ksession.startProcess(EscalationBoundaryEvent);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);执行完结果如下所示:Loading process BPMN2-EscalationBoundaryEvent.bpmn2执行错误流程,触发事件 Escalation handledJunit测试异常事件处理流程2下面的示例中主要测试异常处理,同上例基本相同都是执行到错误结点的时候自动触发事件,但是加了一个选择分支程序流程示例如图测试程序如下所示?public void testEscalationBoundaryEventInterrupting() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EscalationBoundaryEventInterrupting.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(MyTask,new DoNothingWorkItemHandler();ProcessInstance processInstance = ksession.startProcess(EscalationBoundaryEvent);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);/ TODO: check for cancellation of task执行结果如下:Loading process BPMN2-EscalationBoundaryEventInterrupting.bpmn2Escalation handledJunit测试定时器边界事件下面的示例中主要测试定时器边界事件程序流程如下所示:在属性中设置超时时间是500ms,那么在下面的程序中设置让程序暂停一下执行,触发超时事件?public void testTimerBoundaryEventDuration() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-TimerBoundaryEventDuration.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(MyTask,new DoNothingWorkItemHandler();ProcessInstance processInstance = ksession.startProcess(TimerBoundaryEvent);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);Thread.sleep(1000);ksession = restoreSession(ksession, true);assertProcessInstanceCompleted(processInstance.getId(), ksession);设置为1000,那么就将执行错误处理事件执行的结果如下Loading process BPMN2-TimerBoundaryEventDuration.bpmn2Timer handledJunit测试定时器超时处理下面的两个示例和上面基本上没有区别,只是强调了一下超时处理的周期和边界事件直接看示例程序吧?public void testTimerBoundaryEventCycle1() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-TimerBoundaryEventCycle1.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(MyTask,new DoNothingWorkItemHandler();ProcessInstance processInstance = ksession.startProcess(TimerBoundaryEvent);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);Thread.sleep(1000);ksession = restoreSession(ksession, true);assertProcessInstanceCompleted(processInstance.getId(), ksession);public void testTimerBoundaryEventCycle2() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-TimerBoundaryEventCycle2.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢结构施工安全保障方案
- 地方应用型高校工程人才培养模式的探讨
- 专业消毒员考试题及答案
- 四川烟草专业试题及答案
- 2025年新能源行业绿色信贷发展报告:企业研发投入的关键指标
- DB65T 4456-2021 知识产权纠纷调解服务规范
- 医学免疫学与微生物学试题及答案
- 酬乐天中考试题及答案
- 饮食类知识竞赛题及答案
- 池州保安考试题库及答案
- 中国服用过兴奋剂运动员名单 兴奋剂真的是毒品吗
- 小学英语语法时态讲解与归纳
- 《生存与修炼》熊厚音讲《道德经》教学文案
- 产教融合校企合作[可修改版ppt]课件
- 12贮水花盆案例总结-2015天津中心修改43
- 练习太极拳的三个阶段
- 华为供应商质量管理体系考察报告(全)
- 冶金工业清洁生产的主要途径(共82页).ppt
- 清洁生产实施的主要方法和途径
- 光刻工艺光刻对准
- 热力公司热计量远程抄表系统技术规范(2012.11.21)
评论
0/150
提交评论