由於需要用到activiti6工作流,經過艱難的配置終於把環境搭起來了,結合查的和自己踩的坑,記錄下過程,以備後用。
1.eclipse安裝activi插件
我的eclipse是Eclipse IDE for RCP and RAP Developers,在線安裝一直失敗,最終離線安裝搞定。
參照https://blog.csdn.net/qq_24583853/article/details/85270214安裝成功
2.配置h2數據庫和activiti6
配置文件配置如下,採用本地文件方式存儲
#配置數據庫h2的參數
spring.datasource.url=jdbc:h2:./db/H2/testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.h2.console.enabled=true
spring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=false
spring.activiti.process-definition-location-prefix: classpath:/processes/
3.pom的主要配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency><dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency><dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-common-rest</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
4.參數加載配置代碼
對於數據庫和mybatis參數用config配置類進行加載如下:
-
@Configuration @ConfigurationProperties(prefix = "spring.datasource") @MapperScan(basePackages = { DataSourceConstants.MAPPER_PACKAGE }, sqlSessionFactoryRef = "mybatisSqlSessionFactory") public class DataSourceConfig { private String url; private String username; private String password; @Bean(name = "mybatisDataSource") public DataSource mybatisDataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("org.h2.Driver"); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } @Bean(name = "mybatisTransactionManager") public DataSourceTransactionManager mybatisTransactionManager() { return new DataSourceTransactionManager(mybatisDataSource()); } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { //防止前端不填值後端插入失敗 sqlSessionFactory.getConfiguration().setJdbcTypeForNull(JdbcType.NULL); return new SqlSessionTemplate(sqlSessionFactory); } @Bean(name = "mybatisSqlSessionFactory") public SqlSessionFactory mybatisSqlSessionFactory(@Qualifier("mybatisDataSource") DataSource mybatisDataSource) throws Exception { final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(mybatisDataSource); sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources(DataSourceConstants.MAPPER_LOCATION)); return sessionFactory.getObject(); } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
activiconfig
-
@Configuration public class ActivitiConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String userName; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driver; @Bean public ProcessEngineConfiguration processEngineConfiguration() { ProcessEngineConfiguration processEngineConfiguration = new StandaloneProcessEngineConfiguration(); // 連接數據庫的配置 processEngineConfiguration.setJdbcDriver(driver); processEngineConfiguration.setJdbcUrl(url); processEngineConfiguration.setJdbcUsername(userName); processEngineConfiguration.setJdbcPassword(password); // processEngineConfiguration.setAsyncExecutorActivate(true); // processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); return processEngineConfiguration; } /* @Bean public ProcessEngine processEngine() { return processEngineConfiguration().buildProcessEngine(); } */ @Bean public RepositoryService repositoryService() { return processEngineConfiguration().buildProcessEngine().getRepositoryService(); } @Bean public RuntimeService runtimeService() { return processEngineConfiguration().buildProcessEngine().getRuntimeService(); } @Bean public TaskService taskService() { return processEngineConfiguration().buildProcessEngine().getTaskService(); } @Bean public FormService formService() { return processEngineConfiguration().buildProcessEngine().getFormService(); } @Bean public HistoryService historyService() { return processEngineConfiguration().buildProcessEngine().getHistoryService(); } @Bean public ManagementService managementService() { return processEngineConfiguration().buildProcessEngine().getManagementService(); } @Bean public IdentityService identityService() { return processEngineConfiguration().buildProcessEngine().getIdentityService(); } }
-
啓動類
-
@SpringBootApplication @EnableAutoConfiguration(exclude = { org.activiti.spring.boot.SecurityAutoConfiguration.class }) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }
在啓動類中,一定要加上剃掉security的權限校驗,不然每次需要權限校驗
-
切記要在resources下創建目錄processes,因爲在配置文件裏配置了掃描位置。
-
以上就是自己搭建的過程,搭建中坑太多了,,,,,,,