Activiti 边界事件未在 Spring 引导集成测试中触发

Activiti boundary event not firing in Spring Boot integration tests

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

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

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

在开始集成测试时,日志表明异步 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 的异步作业执行器所需的任何测试 class 注释?

您使用的是哪个版本? 为什么你有 @Transactional 注释在那里? 那是一个集成测试,意味着 spring 启动应用程序将 运行 并且你测试将是一个客户端,那里没有发生事务性的事情,对吗?除非我从你的设置中遗漏了一些东西。