我将Activiti与Spring Boot结合使用,从Activiti表获取数据时遇到了一些性能问题,这是由于我猜是历史表。
当我从activiti表中查询数据时,在第一种情况下,它需要0.239秒才能获得结果,但是在第二种情况下,它需要1.884秒来从数据库中获取数据。
这是主要原因,我想禁用历史记录。
技术栈:
Spring Activiti-5.22.0
Spring Boot版本-1.5.8。发布
MyBatis for ORM
请告诉我,是否有任何配置可禁用历史记录,并且如果我们禁用历史记录,将会有任何问题。
答案 0 :(得分: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();
}
}
如果将历史记录设置为“无”,则不会有任何问题,也不会有关于过去活动的信息。
您可以设置的级别为:无,活动,审核,完整。 详细信息如下:https://www.activiti.org/5.x/userguide/#historyConfig
答案 1 :(得分:0)
您可以尝试:
spring.activiti.historyLevel=none
在application.properties文件中。 希望这会有所帮助。
答案 2 :(得分:0)
我们可以通过将历史记录级别保持为“ 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");
例如,感谢78。您的回答对我有所帮助,只需进行少量修改即可。