运行时间和历史记录分离

时间:2019-05-31 07:16:02

标签: camunda

我想在不实现自定义HistoryEventHandler的情况下将单独的数据库用于运行时和历史数据。有人知道这怎么可能吗?

我阅读了camunda用户指南,但这并没有太大帮助,因为它仅暗示了自定义实现方式。

当前,每次查询历史记录数据(大约2百万个活动条目)时,系统的性能都会下降,因为它也会阻塞运行时。我想在不失去查询历史数据的能力的情况下避免这种情况。

3 个答案:

答案 0 :(得分:0)

Camunda BPM提供了Optimize,它将历史记录数据从Engine提取到Elastic Search数据库。如果您使用的是企业版,则可能是解决它的一种方法。

答案 1 :(得分:0)

这将是一个非常酷的功能,但目前不支持。您将必须禁用默认历史记录并实现自定义处理程序。

答案 2 :(得分:0)

(根据您对其他答案的评论,您似乎有兴趣学习有关自定义HistoryEventHandler实现的更多信息。因此,我添加此答案是希望对您有所帮助。)

实现自定义历史记录事件处理程序并不困难,但要记住以下几点:

  • 除非您要跳过标准Camunda历史记录表中的历史记录信息存储,否则将要使用其CompositeHistoryEventHandler。这只是使您能够使用多个HistoryEventHandler实现。
  • 任何HistoryEventHandler实现都将在与执行流程实例的线程相同的线程中完成;因此,您将需要了解自定义HistoryEventHandler对性能的影响。
  • 您可能要考虑通过消息总线或消息传递系统发布历史事件,以便在不影响Camunda工作流实例性能的情况下实现可靠​​的传递。
  • 最后,将自定义的HistoryEventHandler以及Camunda的默认HistoryEventHandler及其功能用于一段时间后删除流程实例可能是有意义的。这样一来,您就可以在一段时间内使用其查询功能,而不会堆积历史记录(从而降低系统速度)。