项目实践之工作流引擎基本文档!Activiti工作流框架中流程引擎API和服务详解 (3)

继承了ActivitiTestCase, 可以在测试方法上使用org.activiti.engine.test.Deployment注解.测试执行前,与测试类在同一个包下的,格式为testClassName.testMethod.bpmn20.xml的资源文件,会被部署.测试结束后,发布包也会被删除,包括所有相关的流程实例,任务...Deployment注解也可以直接设置资源的位置

public class MyBusinessProcessTest extends ActivitiTestCase { @Deployment public void testSimpleProcess() { runtimeService.startProcessInstanceByKey("simpleProcess"); Task task = taskService.createTaskQuery().singleResult(); assertEquals("My Task", task.getName()); taskService.complete(task.getId()); assertEquals(0, runtimeService.createProcessInstanceQuery().count()); } }

要想在使用JUnit 4编写单元测试时获得同样的功能

可以使用org.activiti.engine.test.ActivitiRule. 通过它,可以通过getter方法获得流程引擎和各种服务

使用这个Rule也会启用org.activiti.engine.test.Deployment注解

它会在classpath下查找默认的配置文件,如果配置文件相同的话,对应的流程引擎会被静态缓存,就可以用于多个单元测试

public class MyBusinessProcessTest { @Rule public ActivitiRule activitiRule = new ActivitiRule(); @Test @Deployment public void ruleUsageExample() { RuntimeService runtimeService = activitiRule.getRuntimeService(); runtimeService.startProcessInstanceByKey("ruleUsage"); TaskService taskService = activitiRule.getTaskService(); Task task = taskService.createTaskQuery().singleResult(); assertEquals("My Task", task.getName()); taskService.complete(task.getId()); assertEquals(0, runtimeService.createProcessInstanceQuery().count()); } } 调试单元测试

使用内存数据库H2进行单元测试,在调试环境监视Activiti的数据库:

在单元测试里设置了一个断点:

用调试模式运行单元测试,右击单元测试,选择[运行为]和[单元测试],测试会停在我们的断点上, 然后我们就可以监视测试的变量,它们显示在调试面板里

-

要监视Activiti的数据,打开[显示]窗口(如果找不到,打开[窗口]-[显示视图]-[其他],选择[显示]并点击[代码已完成],org.h2.tools.Server.createWebServer("-web").start()

在这里插入图片描述

选择你点击的行,右击.然后选择[显示]

打开一个浏览器,输入:8082, 输入内存数据库的JDBC URL(默认为jdbc:h2:mem:activiti),点击连接按钮

在这里插入图片描述

可以看到Activiti的数据,通过它们可以了解单元测试时,如何以及为什么这样运行的

在这里插入图片描述

Web中的流程引擎

ProcessEngine是线程安全的,可以在多线程下共享

在web应用中, 意味着可以在容器启动时创建流程引擎, 在容器关闭时关闭流程引擎

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyffzw.html