Flowable入门系列文章75 - 历史 03

1、异步历史记录配置

在Flowable 6.1.0中引入了异步历史记录,并允许使用历史作业执行程序异步地保存历史数据。

<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<property name="asyncHistoryEnabled" value="true" />
<property name="asyncHistoryExecutorNumberOfRetries" value="10" />
<property name="asyncHistoryExecutorActivate" value="true" />
...
</bean>

通过该asyncHistoryExecutorActivate属性,可以在启动Process Engine时自动启动历史作业执行程序。对于测试用例,这只会设置为false(或者,如果Async History当然没有启用)。该asyncHistoryExecutorNumberOfRetries属性配置“异步历史记录”作业的重试次数。此属性与正常的异步作业有所不同,因为历史作业可能需要更多的周期才能成功处理。例如,首先必须在ACT_HI_TASK_表中创建历史任务,然后才能由其他历史记录作业更新该受理人。Process Engine配置中此属性的默认值设置为10。当达到重试次数时,历史作业将被忽略。

除了这些属性之外,该asyncHistoryExecutor属性还可用于以类似的方式配置AsyncExecutor,这与正常的异步作业执行程序可以执行的方式相同。

当历史数据不会被保存在默认的历史表中时,例如,在NoSQL数据库(如Elasticsearch,MongoDb,Cassandra等)中是必需的,或者完全不同的是,负责处理作业的处理程序可以被覆盖:

  • 使用historyJobHandlers属性,它是所有自定义历史作业处理程序的映射
  • 或者,配置customHistoryJobHandlers列表中的所有实例将historyJobHandlers在引导时添加到地图中。

或者,也可以使用消息队列并配置引擎,以便在新的历史记录作业可用时发送消息。这样,可以在不同的服务器上将历史数据处理到引擎运行的位置。也可以使用JTA(使用JMS时)配置引擎和Message Queue,并且不将历史数据存储在作业中,而是将所有数据发送到参与全局事务的Message Queue。

2、用于审计目的的历史

当配置至少audit用于配置水平。然后,所有的属性通过方法提交 FormService.submitStartFormData(String processDefinitionId,
Map<String, String> properties)和FormService.submitTaskFormData(String taskId, Map<String, String> properties)记录。

表单属性可以通过查询API来获取,如下所示:

historyService
.createHistoricDetailQuery()
.formProperties()
...
.list();

在这种情况下,只HistoricFormProperty返回类型的历史细节。

如果您在调用提交方法之前已经设置了已验证的用户,IdentityService.setAuthenticatedUserId(String)那么提交表单的已验证用户将可以在历史记录中访问,也可以在HistoricProcessInstance.getStartUserId()启动表单和 HistoricActivityInstance.getAssignee()任务表单中访问。

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


版权声明:本文为qq_30739519原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。