Activiti 数据库清理

in *_*elp 1 business-process-management bpmn activiti

我注意到 activiti 服务器数据库变得非常大并且正在使用大量磁盘空间。我正在使用其余的 API。我并不真正使用历史记录,所以我不介意删除它,但是我无法弄清楚如何识别所有已完成的作业/任务/流程并调用相关的删除 API。如果这可以通过直接在数据库上的 SQL 命令完成,那也很好。

Gre*_*ley 6

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

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

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

select proc_inst_id_ from act_hi_procinst where end_act_id_ IS NOT NULL or 
delete_reason_ IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

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

ACT_HI_ACTINST
ACT_HI_ATTACHMENT
ACT_HI_COMMENT
ACT_HI_DETAIL
ACT_HI_IDENTITYLINK
ACT_HI_TASKINST
ACT_HI_VARINST
Run Code Online (Sandbox Code Playgroud)

最后,您可以从中删除行 ACT_HI_PROCINST

希望这会有所帮助,格雷格


Gre*_*ley 5

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

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

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