已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
jbpm5.1介绍(8)Junit测试或流程下面的示例中使用的是或流程,看如下流程图判断节点的值是大于0,大于10还是大于20看测试程序public void testInclusiveSplit() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-InclusiveSplit.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);Map params = new HashMap();params.put(x, 15);ProcessInstance processInstance = ksession.startProcess(com.sample.test, params);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);?传入的值是15,那么执行结果应该是path1和path2,因为两个节点都满足条件看输出结果Loading process BPMN2-InclusiveSplit.bpmn2path1path2可以再使用其它值进行测试Junit测试或流程2这个示例同上,但是不同的是当执行流程结点如果没有发现符合条件的节点那么自动执行默认的流程测试程序?public void testInclusiveSplitDefault() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-InclusiveSplitDefault.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);Map params = new HashMap();params.put(x, -5);ProcessInstance processInstance = ksession.startProcess(com.sample.test, params);assertTrue(processInstance.getState() = ProcessInstance.STATE_COMPLETED);执行结果如下Loading process BPMN2-InclusiveSplitDefault.bpmn2path3Junit测试触发事件这个示例是演示在执行流程的过程中触发事件的示例,当执行到什么的时候触发什么样的流程其中加入了两个事件,触发条件是YES或者No,然后在下面的程序中分别触发?public void testEventBasedSplit() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EventBasedSplit.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();/ YesProcessInstance processInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.signalEvent(Yes, YesValue, processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);/ NoprocessInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.signalEvent(No, NoValue, processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);分别触发,得到的执行结果是Loading process BPMN2-EventBasedSplit.bpmn2Executing work item WorkItem 1 name=Email1, state=0, processInstanceId=1, parametersExecuting Yesx=YesValueExecuting work item WorkItem 2 name=Email2, state=0, processInstanceId=1, parametersExecuting work item WorkItem 3 name=Email1, state=0, processInstanceId=2, parametersExecuting Nox=NoValueExecuting work item WorkItem 4 name=Email2, state=0, processInstanceId=2, parametersJunit测试触发时间事件这个示例是演示运行的过程中如果触发时间事件将执行什么样的结果流程图如下所示在执行的过程中在执行到时间节点后会看到有一个延时我们这里设置的是500ms测试程序如下:?public void testEventBasedSplit2() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EventBasedSplit2.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();/ YesProcessInstance processInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.signalEvent(Yes, YesValue, processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);Thread.sleep(800);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.fireAllRules();ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();/ TimerprocessInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);Thread.sleep(800);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.fireAllRules();assertProcessInstanceCompleted(processInstance.getId(), ksession);测试结果Loading process BPMN2-EventBasedSplit2.bpmn2Executing work item WorkItem 1 name=Email1, state=0, processInstanceId=1, parametersExecuting Yesx=YesValueExecuting work item WorkItem 2 name=Email2, state=0, processInstanceId=1, parametersExecuting work item WorkItem 3 name=Email1, state=0, processInstanceId=2, parametersExecuting Timerx=nullExecuting work item WorkItem 4 name=Email2, state=0, processInstanceId=2, parameters会明显看到有一个延迟执行的效果Junit测试条件判断这个示例是判断条件判断是否可以执行,如下流程默认情况下只触发上边的流程,下边的流程只有条件满足的情况下才能够触发看一下执行的流程?public void testEventBasedSplit3() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EventBasedSplit3.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();Person jack = new Person();jack.setName(Jack);/ YesProcessInstance processInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.signalEvent(Yes, YesValue, processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);/ ConditionprocessInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.insert(jack);assertProcessInstanceCompleted(processInstance.getId(), ksession);看执行结果Loading process BPMN2-EventBasedSplit3.bpmn2Executing work item WorkItem 1 name=Email1, state=0, processInstanceId=1, parametersExecuting Yesx=YesValueExecuting work item WorkItem 2 name=Email2, state=0, processInstanceId=1, parametersExecuting work item WorkItem 3 name=Email1, state=0, processInstanceId=2, parametersExecuting Conditionx=nullExecuting work item WorkItem 4 name=Email2, state=0, processInstanceId=2, parameters可以看到当流程执行到inset(jack)时触发下面的流程其中用到了接口public interfaceWorkingMemoryEntryPoint程序可以指定在什么时候切入,进入切入点后就会进行流程判断,如果满足条件,就会如上示例,执行Condition节点并向下执行Junit测试传入条件事件这个示例是判断传入条件的事件,根据传入的条件触发不同的事件执行,看一下流程根据传入的条件判断下面是测试代码,先传入执行上面的流程,然后再执行下面的流程?public void testEventBasedSplit4() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EventBasedSplit4.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();/ YesProcessInstance processInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ksession.signalEvent(Message-YesMessage, YesValue,processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();/ NoprocessInstance = ksession.startProcess(com.sample.test);ksession.signalEvent(Message-NoMessage, NoValue,processInstance.getId();assertProcessInstanceCompleted(processInstance.getId(), ksession);程序执行结果如下:Loading process BPMN2-EventBasedSplit4.bpmn2Executing work item WorkItem 1 name=Email1, state=0, processInstanceId=1, parametersExecuting Yesx=YesValueExecuting work item WorkItem 2 name=Email2, state=0, processInstanceId=1, parametersExecuting work item WorkItem 3 name=Email1, state=0, processInstanceId=2, parametersExecuting Nox=NoValueExecuting work item WorkItem 4 name=Email2, state=0, processInstanceId=2, parametersJunit测试发送任务这个示例是测试发送消息的示例,流程如下结构测试程序如下:?public void testEventBasedSplit5() throws Exception KnowledgeBase kbase = createKnowledgeBase(BPMN2-EventBasedSplit5.bpmn2);StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler(ksession);ksession.getWorkItemManager().registerWorkItemHandler(Receive Task,receiveTaskHandler);/ YesProcessInstance processInstance = ksession.startProcess(com.sample.test);assertTrue(processInstance.getState() = ProcessInstance.STATE_ACTIVE);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();receiveTaskHandler.setKnowledgeRuntime(ksession);ksession.getWorkItemManager().registerWorkItemHandler(Receive Task,receiveTaskHandler);receiveTaskHandler.messageReceived(YesMessage, YesValue);assertProcessInstanceCompleted(processInstance.getId(), ksession);receiveTaskHandler.messageReceived(NoMessage, NoValue);ksession = restoreSession(ksession, true);ksession.getWorkItemManager().registerWorkItemHandler(Email1,new SystemOutWorkItemHandler();ksession.getWorkItemManager().registerWorkItemHandler(Email2,new SystemOutWorkItemHandler();receiveTaskHandler.setKnowledgeRuntime(ksession);ksession.getWorkItemManager().registerWorkItemHandler(Receive Task,receiveTaskHandler);/ NoprocessInstance = ksession.startProcess(com.sample.test);receiveTaskHandler.messageReceived(NoMessage, NoValue);assertProcessInstanceCompleted(processInstance.getId(), ksession);receiveTaskHandler.messageReceived(YesMessage, YesValue);执行结果如下:Loading process BPMN2-EventBasedSplit5.bpmn2Executing work item WorkItem 1 name=Email1, state=0, processInstanceId=1, parametersExecuting Yesx=YesValueExecuting work item WorkItem 4 name=Email2, state=0, processInstanceId=1, parametersExecuting work item WorkItem 5 name=Email1, state=0, processInstanceId=2, parametersExecuting Nox=NoValueExecuting work item WorkItem 8 name=Email2, state=0, processInstanceId=2, param
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 备战2026年高考英语考试易错题(新高考)易错点01 冠词和数词(解析版)
- 住宅IDI项目维修服务供应商采购项目技术标2025.5.13
- 2025年曹秽论剑中考试题及答案
- 视觉识别模型-洞察与解读
- 2025年卫生统计师岗位招聘面试参考题库及参考答案
- 2025年行为心理学家岗位招聘面试参考试题及参考答案
- 2025年建筑助理岗位招聘面试参考题库及参考答案
- 2025年销售代表岗位招聘面试参考题库及参考答案
- 2025年HR系统管理员岗位招聘面试参考题库及参考答案
- 2025年资深研究员岗位招聘面试参考试题及参考答案
- 经营权抵押合同(标准版)
- 3GWh锂离子电池生产线项目建设工程方案
- 2025云南省交通投资建设集团有限公司普洱管理处招聘约350人笔试历年参考题库附带答案详解
- 医学科普脑出血康复课件
- 2025年粮油仓储管理员初级考试试题(附答案)
- 酒旅直播培训课件下载
- 2026年高考作文备考之10组主题+人民日报素材积累+主体段写作范例
- 民法典之遗嘱继承课件
- 职工困难借款管理办法
- 公务员备考数据分析公式详解
- 医院账务合并方案模板(3篇)
评论
0/150
提交评论