天天看點

Spring boot整合Activiti7Activiti介紹SpringBoot配置說明流程圖編輯IDEA插件API說明例子參考資料

Activiti介紹

Activiti是一個輕量級的java開源

BPMN 2

工作流引擎.目前以更新至7.x,支援與springboot2內建.

SpringBoot配置說明

  • pom.xml 增加activiti-spring-boot-starter并指定對應版本.
<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M6</version>
        </dependency>
        <!--        指定資料源-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>      
  • java配置

activiti-spring-boot預設內建了spring security用于權限管理如需禁用security啟動類中屏蔽ActivitiSpringIdentityAutoConfiguration,再增加一個配置類即可 Application中禁用權限相關內建

package com.meijm.activiti;
import org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(exclude = {ActivitiSpringIdentityAutoConfiguration.class})
public class ActivitiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivitiApplication.class);
    }
}      

增加配置類ActivitiSpringIdentityAutoConfiguration,其中有三個方法在源碼中并未查詢到引用暫時不處理

package com.meijm.activiti.config;
import com.google.common.collect.ImmutableList;
import org.activiti.api.runtime.shared.identity.UserGroupManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
public class ActivitiSpringIdentityAutoConfiguration {
    @Bean
    public UserGroupManager userGroupManager() {
        return new UserGroupManager() {
            @Override
            public List<String> getUserGroups(String s) {
                return ImmutableList.of("指定使用者歸屬組");
            }
            @Override
            public List<String> getUserRoles(String s) {
                return null;
            }
            @Override
            public List<String> getGroups() {
                return null;
            }
            @Override
            public List<String> getUsers() {
                return null;
            }
        };
    }
}      

完成以上配置後項目啟動時會建立基礎的資料表,不包含曆史記錄等,如需要則在配置檔案中增加配置即可.

配置介紹

.

啟動後可能會不建立資料表,資料庫連接配接中增加nullCatalogMeansCurrent=true這個參數就好了,具體原因不明

spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/m-activiti?serverTimezone=UTC&nullCatalogMeansCurrent=true      

工程啟動後會自動加載/resources/processes下流程圖配置檔案, 支援兩種格式*.bpmn20.xml,*.bpmn

流程圖編輯IDEA插件

actiBPM: 安裝後對*.bpmn字尾的檔案可以直接打開流程圖編輯視圖,效果如下,編輯儲存後會在标簽中增加xmlns=""屬性,會導緻自動部署失敗,可以手動删除此屬性,也可以通過spring.activiti.check-process-definitions=false來關閉流程檔案檢查.

Spring boot整合Activiti7Activiti介紹SpringBoot配置說明流程圖編輯IDEA插件API說明例子參考資料

Activiti BPMN visualizer: 安裝後打開*.bpmn20.xml檔案,右鍵選擇"View BPMN(Activiti) Diagram"可打開流程圖編輯頁,效果如下圖

Spring boot整合Activiti7Activiti介紹SpringBoot配置說明流程圖編輯IDEA插件API說明例子參考資料

API說明

內建配置好之後會在系統注入以下bean,使用時增加注入即可,最基礎的是前三個bean.

名稱 介紹
RuntimeService 執行時Service可以處理所有執行狀态的流程例項流程控制(開始,暫停,挂起等)
TaskService 任務Service用于管理、查詢任務,例如簽收、辦理、指派等
RepositoryService 流程倉庫Service,可以管理流程倉庫例如部署删除讀取流程資源
IdentitiServicec 身份Service可以管理查詢使用者、組之間的關系
FormService 表單Service用于讀取和流程、任務相關的表單資料
HistoryService 曆史Service用于查詢所有的曆史資料
ManagementService 引擎管理Service,和具體業務無關,主要查詢引擎配置,資料庫作業
DynamicBpmService 動态bpm服務

例子

下面源碼中包含一個簡單的流程例子,包含兩個使用者任務,提供了controller來操作流程

/baseActiviti/start:流程啟動

/baseActiviti/taskList:檢視指定使用者的任務

/baseActiviti/completeTask:完成指定任務

說明

  1. 流程圖配置中assignee表示指定的使用者
  2. 由于實體中包含一些運作時内容不便于序列化是以傳回時去掉了一些屬性

位址:

https://gitee.com/MeiJM/spring-cram/tree/master/activiti

參考資料

https://www.activiti.org/userguide/#springSpringBoot https://blog.csdn.net/yang_zzu/article/details/103998671 https://www.cnblogs.com/tianguodk/p/9414363.html https://blog.csdn.net/qq_40887780/article/details/83588130 https://www.cnblogs.com/liaojie970/p/8857710.html