我注意到,activiti服务器数据库变得越来越大并且正在使用大量的磁盘空间。 我正在使用其余的API。 我并没有真正使用历史记录,因此我不介意删除它,但我无法确定如何识别所有已完成的作业/任务/进程并调用相关的删除API。 如果这可以直接在DB上通过SQL命令完成,那也没关系。
答案 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历史记录日志设置(完整记录大量数据)。
我们的客户数据库呈指数级增长,因为他们因为通常的新手错误而陷入困境,并且使用了进程变量,从未清理过,也从未考虑过将来会发生什么。 祝你好运,如果我们能够进一步提供帮助,请告诉我们。