admin管理员组

文章数量:1530518

当密集使用时,流程引擎可以产生大量的历史数据。历史记录清理是一个基于可配置的实时时间,设置删除此数据的特性。

它将删除:

  • 历史流程实例加上所有相关的历史数据(例如,历史变量实例、历史任务实例、历史实例权限、与之相关的所有注释和附件等)。
  • 历史决策实例加上所有相关的历史数据(即,历史决策输入和输出实例)
  • 历史案例实例加上所有相关的历史数据(例如,历史变量实例、历史任务实例等)。
  • 历史批量加上所有相关的历史数据(历史事件和作业日志)

历史记录清理可以手动触发,也可以定期触发。只有 camunda-admins有手动执行历史记录清理的权限。

关于历史清理的场景案例:假设我们有一个计费流程,由于法律合规的原因,我们必须保持十年的历史记录。然后我们有一个假日申请流程,其历史数据只在短时间内相关。为了减少我们必须存储的数据量,我们希望快速删除与假日相关的数据。通过历史清理,我们可以将计费流程的历史时间分配为10年,将假日流程的历史时间分配为7天。然后清除历史记录,以确保在活动时间过期时删除历史记录数据。这样,我们就可以根据历史数据对我们业务的重要性,有选择地保留历史数据。同时,我们只在数据库中保留所需的内容。

注意:删除数据的确切时间取决于几个配置设置,例如所选的历史记录清理策略。下面的部分将解释基本的概念和设置。

基本概念

可清除的实例

Camunda历史中以下元素是可清除的:

  • 过程实例
  • 决策实例
  • 案例实例
  • 批处理

需要注意,清理某类型实例时,总是会删除所有其依赖的历史数据。例如,清理流程实例会删除历史流程实例以及所有历史活动实例、历史任务实例等。

历史存活时间TTL

历史存活时间(History Time To Live, TTL)定义了历史数据在清理之前,在数据库中可保留的时间。流程、案例和决策实例:TTL可以在相应流程定义的XML文件中定义。这个值可以在通过Java和REST API部署后进一步更改,也可以在流程引擎配置中定义TTL,请参见TTL配置部分

实例结束时间

实例结束时间是指实例不再活动时的时间,包括

  • 流程实例:实例结束时的时间。
  • 决策实例:评估决策时的时间。
  • 案例实例:实例完成时的时间。
  • 批处理:批处理完成时的时间。

结束时间被持久地保存在相应的实例表ACT_HI_PROCINST、ACT_HI_CASEINST、ACT_HI_DECINST和ACT_HI_BATCH中。

实例删除时间

实例删除时间(Removal Time)是指某实例被删除时的时间。它的计算方式为:Removal Time = base time+ TTL。基本时间(base time)是可配置的,可以是实例的开始时间或结束时间:

  • 流程实例:基本时间是流程实例开始的时间或结束的时间。这是可配置的。
  • 决策实例:基本时间是评估决策时的时间。
  • 案例实例:对于案例实例,未实现删除时间的概念。
  • 批处理:基本时间是创建批量的时间或批完成的时间。这是可配置的。

对于嵌套结构中的流程和决策实例(例如,由另一个流程实例通过BPMN调用活动启动的流程实例),所有实例的删除时间始终等于根实例的删除时间。

删除时间将被持久地保存在所有历史记录表中。因此,在相应删除时间存储在对应的ACT_HI_PROCINST、ACT_HI_ACTINST、ACT_HI_TASKINST等表中。有关如何配置删除时间,请参见删除时间策略配置部分

清理策略

为了清理历史数据,Camunda提供了2种可选的清理策略:基于删除时间的策略(Removal-Time-based)、基于结束时间的策略(End-Time-based)。基于删除时间的策略是默认策略,在大多数情况下都推荐使用。下面的部分将详细描述这些策略及其差异。<

本文标签: 历史