Activiti DB清理

时间:2017-01-10 14:27:30

标签: activiti bpmn bpm

我注意到,activiti服务器数据库变得越来越大并且正在使用大量的磁盘空间。 我正在使用其余的API。 我并没有真正使用历史记录,因此我不介意删除它,但我无法确定如何识别所有已完成的作业/任务/进程并调用相关的删除API。 如果这可以直接在DB上通过SQL命令完成,那也没关系。

2 个答案:

答案 0 :(得分:4)

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

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

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

从act_hi_procinst中选择proc_inst_id_,其中end_act_id_ IS NOT NULL或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

中删除行

希望这有帮助, 格雷格

答案 1 :(得分:1)

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

可能有助于您前进的一些事项: 1.完成任何过程变量后,将其取消。 2.不要将流程引擎作为记录系统,将所有实际数据外部化并根据需要检索它。 3.这与2.一起使用但在可能的情况下使用本地范围的变量,这将不会被保存。 4.仔细考虑您的pocess历史记录日志设置(完整记录大量数据)。

我们的客户数据库呈指数级增长,因为他们因为通常的新手错误而陷入困境,并且使用了进程变量,从未清理过,也从未考虑过将来会发生什么。 祝你好运,如果我们能够进一步提供帮助,请告诉我们。