激活数据库清理

Activiti DB cleanup

我注意到 activiti 服务器 DB 变得相当大并且正在使用大量磁盘-space。 我正在和其他人一起工作 API。 我并没有真正使用历史记录,所以我不介意删除它,但我无法弄清楚如何识别所有已完成的 jobs/tasks/processes 并调用相关的删除 API。 如果这可以通过 SQL 命令直接在数据库上完成,那也很好。

增长的表可能是历史表 (ACT_HI_*),它将根据您在 Activiti 引擎中设置的历史级别增长。

也就是说,历史表的归档非常容易,因为没有外键。

首先,使用类似以下内容检索所有已关闭或终止的流程实例:

select proc_inst_id_ from act_hi_procinst where end_act_id_ IS NOT NULL or 
delete_reason_ IS NOT NULL

然后使用此列表从以下位置删除关联行:

ACT_HI_ACTINST
ACT_HI_ATTACHMENT
ACT_HI_COMMENT
ACT_HI_DETAIL
ACT_HI_IDENTITYLINK
ACT_HI_TASKINST
ACT_HI_VARINST

最后,您可以删除 ACT_HI_PROCINST

中的行

希望这对您有所帮助, 格雷格

使用 Pojo 不错,只是需要注意所有用于活动 运行 和关闭实例的 pojo 都存储在同一个 table 中,所以它可能变得非常大。而且,由于 Pojo 不可搜索,因此在进程结束后它们的用处充其量是微不足道的。

一些可以帮助您前进的事情: 1. 完成所有流程变量后将其清空。 2. 不要将流程引擎用作记录系统,外部化所有真实数据并在需要时检索它。 3. 这与 2. 一致,但尽可能使用局部范围的变量,这不会被保存。 4. 仔细考虑您的进程历史记录日志设置(完整记录大量数据)。

我们有一些客户的数据库呈指数增长,因为他们犯了常见的菜鸟错误,对所有事情都使用了流程变量,从未清理过,也从未考虑过将来会发生什么。 祝你好运,如果我们能提供进一步的帮助,请告诉我们。