在Spring Boot集成测试中未激活Activiti边界事件

时间:2018-04-26 08:22:41

标签: spring spring-boot activiti

我编写了集成测试来测试使用Activiti作为工作流引擎的应用程序的几个边界事件的执行。定期运行Spring Boot应用程序时,所有边界事件都会正确执行。

集成测试类使用以下注释:

@Transactional
@RunWith(SpringRunner.class)
@ActiveProfiles("it")
@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)

启动集成测试时,日志表明async hob执行程序已启动:

[INFO ] 2018-04-26 09:58:44 [main] -- Starting up the default async job executor [org.activiti.engine.impl.asyncexecutor.DefaultAsyncJobExecutor].
[INFO ] 2018-04-26 09:58:44 [main] -- Creating thread pool queue of size 100
[INFO ] 2018-04-26 09:58:44 [main] -- Creating executor service with corePoolSize 2, maxPoolSize 10 and keepAliveTime 5000

集成测试获取给定进程的当前任务,并使用Activiti的taskService.complete(..)方法完成多个用户任务,直到它到达边界计时器事件。

正确设置计时器到期日期,然后日志表明事件已经启动且计划已安排:

[DEBUG] 2018-04-26 09:58:55 [main] -- Setting workflow variable dueDate to Thu Apr 26 09:59:25 CEST 2018 for process 17
[DEBUG] 2018-04-26 09:58:55 [main] -- Activiti Event received: TIMER_SCHEDULED for process instance 17

但是计时器永远不会触发(TIMER_FIRED没有触发)。

在与测试(it)相同的配置文件中运行应用程序正常,计时器的行为符合预期。

我是否会错过任何所需的测试类注释来启用Activiti的异步作业执行程序?

1 个答案:

答案 0 :(得分:1)

您使用的是哪个版本? 你为什么在那里有@Transactional注释? 这是一个集成测试,意味着春季启动应用程序将运行,你测试将是一个客户端,那里没有发生交易事情吗?除非我遗漏了你的设置。