目的是由引擎产生的事件会被捕获,包含所有事件数据的map会被创建出来,并提供给org.activiti.engine.impl.event.logger.EventFlusher, 会把数据刷新到别的地方
默认会使用一个简单地基于数据库的事件处理器或者叫作刷新器,会使用jackson把map转换为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传统历史管理器的附加品
虽然所有数据都在数据库表中,但是并没有为查询优化,不容易获取
真实的使用场景:
审计跟踪
将事件日志数据放到大数据存储中