【问题标题】:How to disable history in spring activiti如何在春季活动中禁用历史记录
【发布时间】:2019-02-01 12:33:44
【问题描述】:

我在 Spring Boot 中使用 Activiti,我在从 activiti 表中获取数据时遇到了一些性能问题,这是由于我猜是历史表。

当我从 activiti 表中查询数据时,在第一种情况下需要 0.239 秒才能获得结果,但在第二种情况下需要 1.884 秒才能从数据库中获取数据。

这是主要原因,我想禁用历史记录。

技术栈:

春季活动 - 5.22.0

Spring Boot 版本 - 1.5.8.Release

MyBatis for ORM

请告诉我,是否有任何配置可以禁用历史记录,如果我们禁用历史记录会出现任何问题。

【问题讨论】:

    标签: spring spring-boot activiti


    【解决方案1】:

    您可以通过在 @Configuration 类中设置 ProcessEngineConfiguration 的历史属性来禁用历史记录。

    @Configuration
    public class ActivityConfig {
    
        @Autowired
        DataSource dataSource;
    
        @Bean
        public DataSourceTransactionManager getTransactionManager() {
            return new DataSourceTransactionManager(dataSource);
        }
    
        @Bean
        public ProcessEngineConfigurationImpl getProcessEngineConfiguration() {
            SpringProcessEngineConfiguration res = new SpringProcessEngineConfiguration();
            res.setDataSource(dataSource);
            res.setHistory("full");
            res.setTransactionManager(getTransactionManager());
            return res;
        }
    
        @Bean
        public ProcessEngineFactoryBean getProcessEngine() {
            ProcessEngineFactoryBean res = new ProcessEngineFactoryBean();
            res.setProcessEngineConfiguration(getProcessEngineConfiguration());
            return res;
        }
    
        @Bean
        public RepositoryService getRepositoryService() throws Exception {
            return getProcessEngine().getObject().getRepositoryService();
        }
    
        @Bean
        public FormService getFormService() throws Exception {
            return getProcessEngine().getObject().getFormService();
        }
    
        @Bean
        public TaskService getTaskService() throws Exception {
            return getProcessEngine().getObject().getTaskService();
        }
    
        @Bean
        public RuntimeService getRuntimeService() throws Exception {
            return getProcessEngine().getObject().getRuntimeService();
        }
    
        @Bean
        public HistoryService getHistoryService() throws Exception {
            return getProcessEngine().getObject().getHistoryService();
        }
    
        @Bean
        public IdentityService getIdentityService() throws Exception {
            return getProcessEngine().getObject().getIdentityService();
        }
    }
    

    如果您将历史记录设置为 NONE,您将没有问题,但也没有关于过去活动的信息。

    您可以设置的级别是:NONE、ACTIVITY、AUDIT、FULL。 以下是详细信息:https://www.activiti.org/5.x/userguide/#historyConfig

    【讨论】:

    • 我按你说的试过了,我在springboot配置类中粘贴了下面的代码。例如:@Bean public ProcessEngineConfigurationImpl getProcessEngineConfiguration() { SpringProcessEngineConfiguration processEngineConf = new SpringProcessEngineConfiguration(); processEngineConf.setHistory(HistoryLevel.NONE.getKey());返回进程EngineConf;但我仍然无法阻止历史记录到表格中。有什么可以修改的吗?
    • 你能发布整个配置类吗?
    • 我编辑了我的帖子并添加了我的整个配置类
    • 感谢您的帮助。实际上我以不同的方式解决了这个问题。当我在配置类中添加它时,不知何故它没有记录历史。所以当我开始这个过程时,我在声明历史级别。这对我有用。真的,你的回答对我帮助很大。
    【解决方案2】:

    看这里:https://github.com/Activiti/Activiti/blob/5.x/modules/activiti-spring-boot/spring-boot-starters/activiti-spring-boot-starter-basic/src/main/java/org/activiti/spring/boot/ActivitiProperties.java#L46

    你可以试试:

    spring.activiti.historyLevel=none
    

    在您的 application.properties 文件中。 希望这会有所帮助。

    【讨论】:

    • 我没有在 Spring Boot 中使用 activiti,但是不幸的是在 activiti.cfg.xml 中设置该参数是不够的
    【解决方案3】:

    我们可以通过将历史级别保持为“NONE”来停止历史。但这里的重点是设置历史级别的位置。使用@e.g78 的想法我更新了配置级别的代码,但这并没有解决我的问题。所以我更新了我的代码如下。

    @Autowired
    private SpringProcessEngineConfiguration config;
    
    @GetMapping("/startProcess")
    public String startProcess() {
        config.setHistoryLevel(HistoryLevel.NONE);
        RuntimeService runtimeService = config.getRuntimeService();
        runtimeService.startProcessInstanceByKey("testing_DeletingHistory", "start");
    

    感谢 e.g78。您的回答对我有所帮助,几乎没有修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多