springboot集成activiti6工作流程實戰

本文章代碼對應的版本springboot1.5.9,activiti6.0,開發工具idea.

官網文檔地址http://www.mossle.com/docs/activiti/index.html

官網對應的activiti.war包可直接下載部署到tomcat上啓動,但是對應項目自身的業務操作不能用給定的前端頁面操作,所以需要對應的開發集成.

1.idea安裝activiti插件actiBPM,安裝重啓

2.引入activiti對應的maven包

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>6.0.0</version>
        </dependency>

3.配置resources

server:
  port: 8081
spring:
  ###datascource
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/db_activiti?useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
#    type: com.alibaba.druid.pool.DruidDataSource
  activiti:
    database-schema-update: true
    check-process-definitions: true
    process-definition-location-prefix: classpath:/process/
    history-level: full          #配置流程記錄級別  none  activiti audit full
    #db-history-used: true
    db-identity-used: false

4.resources下新建文件夾process,右擊新建.bpmn文件

5.拖拽右側工具畫流程(這裏就不講具體的使用)

6.創建後續所需的服務

  • RepositoryService:提供一系列管理流程部署和流程定義的API。
  • RuntimeService:在流程運行時對流程實例進行管理與控制。
  • TaskService:對流程任務進行管理,例如任務提醒、任務完成和創建任務等。
  • IdentityService:提供對流程角色數據進行管理的API,這些角色數據包括用戶組、用戶及它們之間的關係。
  • ManagementService:提供對流程引擎進行管理和維護的服務。
  • HistoryService:對流程的歷史數據進行操作,包括查詢、刪除這些歷史數據。
  • FormService:表單服務。
@Configuration
public class ActivitiConfig {

    @Value("${spring.activiti.database-schema-update}")
    private String databaseSchemaUpdate;

    @Value("${spring.activiti.db-identity-used}")
    private boolean dbIdentityUsed;

    @Value("${spring.datasource.url}")
    private String dbUrl;

    @Bean
    public ProcessEngine processEngine(DataSourceTransactionManager transactionManager, DataSource dataSource) throws IOException {
        SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
        /**
         *  自動部署已有的流程文件
         *  作用相當於 (據bpmn文件部署流程repositoryService.createDeployment().addClasspathResource("singleAssignee.bpmn").deploy();)
         */
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "processes/*.bpmn");
        configuration.setTransactionManager(transactionManager);
        //設置數據源
        configuration.setDataSource(dataSource);
        //是否每次都更新數據庫
        //configuration.setDatabaseSchemaUpdate(databaseSchemaUpdate);
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
        //configuration.setAsyncExecutorActivate(false);
        configuration.setDeploymentResources(resources);
        //設置是否使用activti自帶的用戶體系
        configuration.setDbIdentityUsed(dbIdentityUsed);
        return configuration.buildProcessEngine();
    }


    /**
     * 工作流倉儲服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine) {
        return processEngine.getRepositoryService();
    }


    /**
     * 工作流運行服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine) {
        return processEngine.getRuntimeService();
    }


    /**
     * 工作流任務服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public TaskService taskService(ProcessEngine processEngine) {
        return processEngine.getTaskService();
    }


    /**
     * 工作流歷史數據服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public HistoryService historyService(ProcessEngine processEngine) {
        return processEngine.getHistoryService();
    }


    /**
     * 工作流管理服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public ManagementService managementService(ProcessEngine processEngine) {
        return processEngine.getManagementService();
    }


    /**
     * 工作流唯一服務
     *
     * @param processEngine
     * @return
     */
    @Bean
    public IdentityService identityService(ProcessEngine processEngine) {
        return processEngine.getIdentityService();
    }
}

7.啓動類加對應註解(不加會出現報錯,一大坑)

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

此時,啓動服務,無保報錯則啓動成功.同時數據庫會生成24張對應表,即完成基本的集成.

processEngine是流程引擎核心,整個流程的關鍵所在.下一節主要講常用流程的實現.

 

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