如何在spring activiti中禁用历史记录
我将Activiti与spring boot一起使用,在从Activiti表获取数据时,我几乎没有遇到性能问题。我想这是由于历史记录表造成的 当我从activiti表查询数据时,在第一个场景中,需要0.239秒才能获得结果,但在第二个场景中,需要1.884秒才能从数据库中获取数据 这是主要原因,我想禁用历史记录 技术堆栈: 春季活动-5.22.0 Spring启动版本-1.5.8.0版本 甲虫性粘膜炎如何在spring activiti中禁用历史记录,spring,spring-boot,activiti,Spring,Spring Boot,Activiti,我将Activiti与spring boot一起使用,在从Activiti表获取数据时,我几乎没有遇到性能问题。我想这是由于历史记录表造成的 当我从activiti表查询数据时,在第一个场景中,需要0.239秒才能获得结果,但在第二个场景中,需要1.884秒才能从数据库中获取数据 这是主要原因,我想禁用历史记录 技术堆栈: 春季活动-5.22.0 Spring启动版本-1.5.8.0版本 甲虫性粘膜炎 请告诉我,是否有任何配置可以禁用历史记录,如果禁用历史记录,将会出现任何问题。您可以通过在@
请告诉我,是否有任何配置可以禁用历史记录,如果禁用历史记录,将会出现任何问题。您可以通过在@configuration类中设置ProcessEngineConfiguration的history属性来禁用历史记录
@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();
}
}
如果将历史设置为“无”,则不会有问题,但也不会有关于过去活动的信息
您可以设置的级别有:无、活动、审核、完整。
以下是详细信息:请看这里:
您可以尝试:
spring.activiti.historyLevel=none
在application.properties文件中。
希望这有帮助。我们可以通过将历史记录级别保持为“无”来停止历史记录。但这里的重点是在哪里设定历史水平。使用@e.g78 idea,我在配置级别更新了代码,但这并没有解决我的问题。所以我更新了我的代码如下
@Autowired
private SpringProcessEngineConfiguration config;
@GetMapping("/startProcess")
public String startProcess() {
config.setHistoryLevel(HistoryLevel.NONE);
RuntimeService runtimeService = config.getRuntimeService();
runtimeService.startProcessInstanceByKey("testing_DeletingHistory", "start");
谢谢,e.g78。您的回答对我很有帮助,只做了一些修改。我试过了,正如您所说,我在springboot配置类中粘贴了下面的代码。例如:@Bean public ProcessEngineConfigurationImpl getProcessEngineConfiguration(){SpringProcessEngineConfiguration processEngineConf=new SpringProcessEngineConfiguration();processEngineConf.setHistory(HistoryLevel.NONE.getKey());返回processEngineConf;}但我仍然无法阻止历史进入表格。有什么我可以修改的吗。你能发布整个配置类吗?我编辑了我的帖子并添加了我的整个配置类谢谢你的帮助。实际上,我用不同的方式解决了这个问题。不知何故,当我在配置类中添加历史记录时,它并没有获取历史记录。因此,当我开始这个过程时,我在那里声明历史级别。这对我有用。你的回答真的帮了我很大的忙。我没有在Spring Boot中使用activiti,但遗憾的是,在activiti.cfg.xml中设置该参数是不够的