springboot2.x+h2+activiti6環境搭建記錄

由於需要用到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,因爲在配置文件裏配置了掃描位置。

  • 以上就是自己搭建的過程,搭建中坑太多了,,,,,,,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章