首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用spring活动中的历史记录

如何禁用spring活动中的历史记录
EN

Stack Overflow用户
提问于 2019-01-29 04:39:23
回答 3查看 814关注 0票数 1

我正在使用Activiti和spring boot,我在从activiti表中获取数据时遇到了一些性能问题,我想这是由于历史表的原因。

当我从activiti表中查询数据时,在第一个场景中花了0.239秒才得到结果,但在第二个场景中花了1.884秒从数据库中获取数据。

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

技术堆栈:

Spring活动- 5.22.0

Spring Boot版本-1.5.8版本

用于对象关系管理的MyBatis

请让我知道,是否有任何配置来禁用历史记录,如果我们禁用历史记录会有任何问题。

EN

回答 3

Stack Overflow用户

发布于 2019-01-30 17:04:25

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

代码语言:javascript
复制
@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();
    }
}

如果您将历史记录设置为无,您将不会有任何问题,但也不会有关于过去活动的信息。

您可以设置的级别为:无、活动、审核、完全。以下是详细信息:https://www.activiti.org/5.x/userguide/#historyConfig

票数 1
EN

Stack Overflow用户

发布于 2019-01-31 17:29:46

看这里: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

您可以尝试:

代码语言:javascript
复制
spring.activiti.historyLevel=none

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

票数 0
EN

Stack Overflow用户

发布于 2019-02-01 12:33:44

我们可以通过将历史级别保持为“无”来停止历史记录。但这里的要点是在哪里设置历史级别。我使用@e.g78 idea更新了配置级别的代码,但这并没有解决我的问题。所以我更新了代码,如下所示。

代码语言:javascript
复制
@Autowired
private SpringProcessEngineConfiguration config;

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

谢谢,e.g78。你的回答对我很有帮助,只做了很少的修改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54409969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档