spring - Activiti 边界事件未在 Spring Boot 集成测试中触发
问题描述
我已经编写了集成测试来测试使用 Activiti 作为工作流引擎的应用程序的几个边界事件的执行。在定期运行 Spring Boot 应用程序时,所有边界事件都会正确执行。
集成测试类使用以下注解:
@Transactional
@RunWith(SpringRunner.class)
@ActiveProfiles("it")
@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)
在开始集成测试时,日志表明异步滚刀执行器已启动:
[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 的异步作业执行器所需的任何测试类注释?
解决方案
您使用的是哪个版本?为什么你有@Transactional 注释在那里?那是一个集成测试,这意味着 spring boot 应用程序将运行并且您测试将是一个客户端,那里没有发生任何事务性的事情,对吗?除非我从你的设置中遗漏了一些东西。
推荐阅读
- html - 如何在node.js的不同数据库表中保存非输入字段(来自DB)?
- mulesoft - mulesoft ON 中的基本身份验证允许应用程序
- python - python错误IndexError:数组索引过多
- python - 共享 tkinter 应用程序并将我的机器用作 MySQL 服务器?
- sql-server-2012 - sql server 2012 动态列的总和
- awk - 基于冒号之间的值的 awk 条件语句
- laravel - Laravel 8 Gate 问题我试图用不同的模型检查条件,但有错误显示
- python - Python Pyqt5不断更新输出值
- bash - 两个字符命令未存储在 mac 终端的 bash 历史记录中
- python - 如何避免在 discord.py 中触发事件?