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來關閉流程檔案檢查.

Activiti BPMN visualizer: 安裝後打開*.bpmn20.xml檔案,右鍵選擇"View BPMN(Activiti) Diagram"可打開流程圖編輯頁,效果如下圖
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:完成指定任務
說明
- 流程圖配置中assignee表示指定的使用者
- 由于實體中包含一些運作時内容不便于序列化是以傳回時去掉了一些屬性
位址:
https://gitee.com/MeiJM/spring-cram/tree/master/activiti