192 - 启用安全的BPMN 2.0 xml和事件记录

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了192 - 启用安全的BPMN 2.0 xml和事件记录相关的知识,希望对你有一定的参考价值。

1、启用安全的BPMN 2.0 xml

在大多数情况下,部署到Flowable引擎的BPMN 2.0流程受到开发团队的严格控制。但是,在某些使用情况下,可能需要将任意BPMN 2.0 xml上载到引擎。在这种情况下,请考虑到意图不好的用户可以按照此处所述的方法关闭服务器。
为避免上述链接中描述的攻击,可以在流程引擎配置上设置属性enableSafeBpmnXml:

<property name="enableSafeBpmnXml" value="true"/>

默认情况下,此功能已禁用! 这是因为它依赖于StaxSource类的可用性。不幸的是,在某些平台上(例如JDK 6,JBoss等),这个类是不可用的(由于旧的XML解析器实现),因此无法启用安全的BPMN 2.0 xml功能。

如果Flowable运行的平台确实支持它,请启用此功能。

2、事件记录

事件记录机制已经被引入。日志机制建立在Flowable引擎的通用事件机制上,默认情况下是禁用的。这个想法是捕获来自引擎的事件,并且包含所有事件数据(以及更多)的映射被创建并提供给org.flowable.engine.impl.event.logger.EventFlusher,其将刷新该数据去别的地方 默认情况下,使用简单的数据库支持的事件处理程序/冲洗器,它使用Jackson将所述映射序列化为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,大小);可以用来通过Flowable 检索EventLogEntry实例。

很容易看出这个表数据现在如何用于将JSON提供给大数据NoSQL存储,如MongoDB,弹性搜索等等。也很容易看出这里使用的类(org.flowable.engine。 impl.event.logger.EventLogger / EventFlusher和许多EventHandler类)是可插入的,可以根据自己的用例进行调整(例如,不将JSON存储在数据库中,而是直接将其发送到队列或大数据存储区)。

请注意,此事件记录机制是Flowable 的传统历史记录管理器的补充。虽然所有的数据都在数据库表中,但它并不是针对查询进行优化的,也不便于检索。真正的用例是审计跟踪,并将其提供给大数据存储。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:

以上是关于192 - 启用安全的BPMN 2.0 xml和事件记录的主要内容,如果未能解决你的问题,请参考以下文章

192 - 启用安全的BPMN 2.0 xml和事件记录

Flowable入门系列文章19 - BPMN 2.0简介

如何扩展 BPMN 2.0

Liferay7 BPM门户开发之2: BPMN 2.0 开发入门 (Activiti BPMN extensions)

Activiti BPMN 2.0 学习心得

BPMN2.0解析