You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL手动将Camunda数据库中所有待处理任务设为已完成

可以通过直接执行SQL修改Camunda数据库表的方式实现需求,操作前建议提前备份数据库避免误操作。

核心处理SQL

Camunda的运行时任务、作业数据都存储在ACT_RU_前缀的库表中,仅需修改以下核心表的对应字段即可阻止残留任务被调度:

  • 标记所有待处理用户任务为已完成状态
UPDATE ACT_RU_TASK 
SET DELETE_REASON_ = 'MANUAL_COMPLETE_PER_TEST', 
    STATUS_ = 'COMPLETED', 
    END_TIME_ = NOW()
WHERE STATUS_ = 'OPEN' AND END_TIME_ IS NULL;
  • 标记所有待执行异步作业为不可调度状态
UPDATE ACT_RU_JOB
SET RETRIES_ = 0,
    EXCEPTION_MSG_ = 'SKIPPED_PER_TEST_RESET',
    LOCK_EXP_TIME_ = NULL,
    LOCK_OWNER_ = NULL
WHERE RETRIES_ > 0;
  • 可选操作:如果需要同时终止所有运行中的流程实例,避免后续触发新任务生成,可执行:
UPDATE ACT_RU_EXECUTION
SET END_ACT_ID_ = 'MANUAL_TERMINATION',
    END_TIME_ = NOW(),
    STATE_ = 'SUSPENDED'
WHERE END_TIME_ IS NULL AND SUPER_EXEC_ IS NULL;

注意事项

  • 以上SQL适配Camunda 7.x主流版本,若使用Camunda 8版本,需根据新的库表结构调整对应字段。
  • 所有SQL操作必须在Camunda服务完全停止的状态下执行,避免服务运行过程中读写库表产生数据不一致问题。
  • 所有修改记录都添加了自定义标识(如MANUAL_COMPLETE_PER_TEST),方便后续排查时区分测试手动修改的记录和正常业务生成的记录。
  • 若测试场景不需要保留运行时任务数据,也可以直接清空所有ACT_RU_前缀的运行时表,历史数据会保留在ACT_HI_前缀的历史表中,不会丢失测试历史记录。
  • 可以将上述SQL配置为Spring Boot测试环境的前置初始化脚本,在application-test.yml中添加以下配置即可实现服务启动前自动执行:
spring:
  sql:
    init:
      mode: always
      schema-locations: classpath:reset-camunda-jobs.sql

内容的提问来源于stack exchange,提问作者user1861013

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:30:05