Springboot集成activity過(guò)程圖解
1.第一步添加bpmn文件得插件,不然沒(méi)法查看和編輯bpmn文件,添加插件的方法各自百度即可,很簡(jiǎn)單

2.安裝好bpmn插件后開始新建bpmn文件,也就是畫流程圖


一般是在代碼中進(jìn)行指定流程審批人的,我這里只做入門案例
3.添加pom依賴
這里包含了在線設(shè)計(jì)流程圖的相關(guān)依賴,在下一篇會(huì)寫出來(lái),項(xiàng)目中一般都是在前端在線設(shè)計(jì);所以直接放上去也沒(méi)事
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>springboot_activiti</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_activiti</name>
<description>Demo project for Spring Boot</description>
<properties>
<springboot.version>2.2.0.RELEASE</springboot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<activiti.version>6.0.0</activiti.version>
</properties>
<dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>spring-context</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-jdbc</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-tx</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-orm</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-beans</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
<exclusion>
<artifactId>activation</artifactId>
<groupId>javax.activation</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>${activiti.version}</version>
</dependency>
<!-- Activiti 流程圖 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-common-rest</artifactId>
<version>${activiti.version}</version>
</dependency>
<!-- Activiti 在線設(shè)計(jì) -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-modeler</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<artifactId>spring-beans</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-context</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-core</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-tx</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-security-config</artifactId>
<groupId>org.springframework.security</groupId>
</exclusion>
<exclusion>
<artifactId>spring-security-core</artifactId>
<groupId>org.springframework.security</groupId>
</exclusion>
<exclusion>
<artifactId>spring-security-crypto</artifactId>
<groupId>org.springframework.security</groupId>
</exclusion>
<exclusion>
<artifactId>spring-security-web</artifactId>
<groupId>org.springframework.security</groupId>
</exclusion>
<exclusion>
<artifactId>spring-webmvc</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>activation</artifactId>
<groupId>javax.activation</groupId>
</exclusion>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${springboot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8081</port>
<path>/activity</path>
<systemProperties>
<com.sun.management.jmxremote.port>4000</com.sun.management.jmxremote.port>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.yml文件
這里采用的數(shù)據(jù)庫(kù)還是mysql
這里有個(gè)需要注意的地方,springboot2.2中的driver-class-name值變了,不是以前的那個(gè)了,不然會(huì)報(bào)錯(cuò)
spring:
datasource:
url: jdbc:mysql://localhost:3307/t2?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
activiti:
# 自動(dòng)部署驗(yàn)證設(shè)置:true-開啟(默認(rèn))、false-關(guān)閉
check-process-definitions: false
#自動(dòng)部署文件路徑后綴
# process-definition-location-prefix: classpath:/processes/
# process-definition-location-suffixes:
# - **.bpmn
# - **.bpmn20.xml
server:
port: 8082
5.配置已經(jīng)好了,下面開始寫代碼了,只是初步寫了一些新建流程,正常提交流程,直接結(jié)束流程,以及查詢待辦的案例,細(xì)節(jié)還需要各自自己去調(diào)試學(xué)習(xí)
controller
package com.springboot_activiti.controller;
import com.springboot_activiti.service.ActivityConsumerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/activiti")
public class ActivitiController {
@Autowired
private ActivityConsumerService activityConsumerService;
/**
* 注冊(cè)流程
* @return
*/
@RequestMapping("/createDeployment")
public Boolean createDeployment(){
return activityConsumerService.createDeployment();
}
/**
* 啟動(dòng)流程
* @return
*/
@RequestMapping("/startActivityDemo")
public Boolean startActivityDemo(){
return activityConsumerService.startActivityDemo("test01");
}
/**
* 獲取待辦
* @return
*/
@RequestMapping("/getTaskList")
public boolean getTaskList(){
return activityConsumerService.getTaskList();
}
/**
* 提交
* @param taskId
* @return
*/
@RequestMapping("/complete")
public boolean complete(String taskId){
return activityConsumerService.complete(taskId);
}
/**
* 根據(jù)流程id直接結(jié)束流程
* @paramru
* @return
*/
@RequestMapping("/deleteProcessInstance")
public boolean deleteProcessInstance(String runId){
return activityConsumerService.deleteProcessInstance(runId);
}
}
service
package com.springboot_activiti.service;
public interface ActivityConsumerService {
boolean createDeployment();
boolean startActivityDemo(String key);
boolean getTaskList();
boolean complete(String taskId);
boolean deleteProcessInstance(String runId);
}
實(shí)現(xiàn)類
package com.springboot_activiti.service;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("activityService")
public class ActivityConsumerServiceImpl implements ActivityConsumerService {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private RepositoryService repositoryService;
/**
* 注冊(cè)一個(gè)流程
* @return
*/
@Override
public boolean createDeployment() {
DeploymentBuilder builder=repositoryService.createDeployment();
builder.addClasspathResource("test01.bpmn");
builder.deploy();
return true;
}
/**
* 查詢待辦
* @return
*/
public boolean getTaskList(){
//獲取待辦的一些信息,這里可以傳入需要查詢的用戶,
//我這里查詢的所有待辦
List<Task> tasks = taskService.createTaskQuery().list();
for (Task t:tasks) {
System.out.println(t.getCreateTime());
System.out.println(t.getId());
System.out.println(t.getName());
System.out.println(t.getProcessInstanceId());
System.out.println(t.getTaskDefinitionKey());
System.out.println(t.getParentTaskId());
}
return true;
}
/**
* 根據(jù)流程key開啟一個(gè)流程
* @param key
* @return
*/
@Override
public boolean startActivityDemo(String key) {
ProcessInstance test01 = runtimeService.startProcessInstanceByKey(key);
String id = test01.getId();
System.out.println("流程id="+id);
/* */
/* String assignee = "abc";*/
return true;
}
/**
* 根據(jù)任務(wù)id提交任務(wù)
* @param taskId
* @return
*/
@Override
public boolean complete(String taskId){
taskService.complete(taskId);
return true;
}
/**
* 根據(jù)流程id直接結(jié)束流程
* @param runId
* @return
*/
@Override
public boolean deleteProcessInstance(String runId){
runtimeService.deleteProcessInstance(runId,"結(jié)束");
return true;
}
}
啟動(dòng)類,這里存在一個(gè)在線視圖設(shè)計(jì)的驗(yàn)證處理,
package com.springboot_activiti;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan("com")
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
org.activiti.spring.boot.SecurityAutoConfiguration.class
})
public class SpringbootActivitiApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActivitiApplication.class, args);
}
}
所有的代碼已經(jīng)寫好了
備注說(shuō)明:
項(xiàng)目啟動(dòng)會(huì)新建28張表,各自代表的含義自行百度把
因?yàn)槲业臄?shù)據(jù)都是直接在流程圖bpmn文件里面寫好的,實(shí)際中肯定是在代碼里面指定的
首先訪問(wèn)注冊(cè)流程
啟動(dòng)流程(會(huì)返回一個(gè)流程id)
查看待辦就可以獲取相關(guān)的信息了
正常提交任務(wù),會(huì)審批到下一節(jié)點(diǎn)(查看待辦可以得到任務(wù)id)
直接結(jié)束流程(非正常結(jié)束,啟動(dòng)流程的id傳入即可)
請(qǐng)求案例
查詢待辦


啟動(dòng)流程


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用Tessdata做OCR圖片文字識(shí)別的詳細(xì)思路
這篇文章主要介紹了Java使用Tessdata做OCR圖片文字識(shí)別的詳細(xì)思路,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
java HashMap通過(guò)value反查key的代碼示例
本文講解了java HashMap通過(guò)value反查key的方法,直接提供代碼供大家參考使用2013-11-11
SpringBoot使用前綴樹過(guò)濾敏感詞的方法實(shí)例
Trie也叫做字典樹、前綴樹(Prefix Tree)、單詞查找樹,特點(diǎn):查找效率高,消耗內(nèi)存大,這篇文章主要給大家介紹了關(guān)于SpringBoot使用前綴樹過(guò)濾敏感詞的相關(guān)資料,需要的朋友可以參考下2022-01-01
springboot3.2整合mybatis-plus詳細(xì)代碼示例
這篇文章主要給大家介紹了關(guān)于springboot3.2整合mybatis-plus的相關(guān)資料,Spring Boot是一個(gè)非常流行的Java Web框架,可以快速地搭建Web應(yīng)用程序,需要的朋友可以參考下2023-12-12
java讀取html文件,并獲取body中所有的標(biāo)簽及內(nèi)容的案例
這篇文章主要介紹了java讀取html文件,并獲取body中所有的標(biāo)簽及內(nèi)容的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Java使用HashMap映射實(shí)現(xiàn)消費(fèi)抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了Java使用HashMap映射實(shí)現(xiàn)消費(fèi)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
spring boot metrics監(jiān)控指標(biāo)使用教程
這篇文章主要為大家介紹了針對(duì)應(yīng)用監(jiān)控指標(biāo)暴露spring boot metrics監(jiān)控指標(biāo)的使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析三之后端反向調(diào)用前端
Dwr是為人所熟知的前端框架,其異步推送功能是為人所津津樂(lè)道的,下來(lái)主要研究一下它的這個(gè)功能是怎么應(yīng)用的;2016-04-04

