返回介绍

18.10. 事件日志

发布于 2023-09-17 23:40:34 字数 1244 浏览 0 评论 0 收藏 0

Flowable引入了事件日志机制。日志机制基于Flowable引擎的事件机制,并默认禁用。总的来说,来源于引擎的事件会被捕获,并创建一个包含了所有事件数据(甚至更多)的map,提供给org.flowable.engine.impl.event.logger.EventFlusher,由它将这些数据保存其他地方。默认情况下,使用简单的基于数据库的事件处理器/保存器,用Jackson将上述map序列化为JSON,并将其作为EventLogEntryEntity实例存入数据库。默认会在数据库中创建ACT_EVT_LOG表保存事件日志。如果不使用事件日志,可以删除这个表。

要启用数据库记录器:

processEngineConfigurationImpl.setEnableDatabaseEventLogging(true);

或在运行时:

databaseEventLogger = new EventLogger(processEngineConfiguration.getClock(),
                    processEngineConfiguration.getObjectMapper());
runtimeService.addEventListener(databaseEventLogger);

如果默认的数据库记录不符合要求,可以扩展EventLogger类。createEventFlusher()方法需要返回org.flowable.engine.impl.event.logger.EventFlusher接口的实例。可以使用managementService.getEventLogEntries(startLogNr, size);获取EventLogEntryEntity实例。

显然,这个表中的数据也可以JSON的形式存入NoSQL存储,如MongoDB,Elastic Search等。也容易看出这里使用的类(org.flowable.engine.impl.event.logger.EventLogger/EventFlusher与许多其他EventHandler类)是可插拔的,可以按你的使用场景调整。(比如将JSON直接发送给队列或NoSQL,而不存入数据库)

请注意这个事件日志机制是独立于Flowable的“传统”历史管理器的。尽管所有数据都保存在数据库表中,但并未对查询或快速恢复做优化。实际使用场景主要是审计及存入大数据存储。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文