工作流引擎Activiti使用进阶!详细解析工作流框架中高级功能的使用示例 (4)

目的是由引擎产生的事件会被捕获,包含所有事件数据的map会被创建出来,并提供给org.activiti.engine.impl.event.logger.EventFlusher, 会把数据刷新到别的地方

默认会使用一个简单地基于数据库的事件处理器或者叫作刷新器,会使用jacksonmap转换为JSON, 并保存到数据库中的EventLogEntryEntity实体

默认会创建数据库日志表ACT_EVT_LOG. 如果没有使用事件日志,可以删除这个表

启用数据库日志:

processEngineConfiguration.setEnableDatabaseEventLogging(true);

或者在流程引擎运行阶段:

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

EventLogger类可以继承:

在需要使用自定义的数据日志时:

createEventFlusher() 方法需要返回一个org.activiti.engine.impl.event.logger.EventFlusher接口的实例

managementService.getEventLogEntries(startLogNr, size) 可以获取Actviti的EventLogEntryEntity实例

可以使用大数据的NoSQL存储: MongoDb,Elastic Search等等来存储JSON。

使用的类是可插拔的: org.activiti.engine.impl.event.logger.EventLogger/EventFlusher和很多EventHandler

可以切换成自定义应用场景: 不在数据库中存储JSON,而是放到队列或大数据存储中

注意:

事件日志机制是Activiti传统历史管理器的附加品

虽然所有数据都在数据库表中,但是并没有为查询优化,不容易获取

真实的使用场景:

审计跟踪

将事件日志数据放到大数据存储中

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjzwy.html