springboot集成activiti在線編輯器

項目關(guān)鍵目錄一覽:

一、springboot集成activiti

1 pom.xml jar包環(huán)境

<?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 http://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.0.3.RELEASE</version>

? ? ? ? <relativePath/> <!-- lookup parent from repository -->

? ? </parent>

? ? <groupId>com.example</groupId>

? ? <artifactId>activiti-test</artifactId>

? ? <version>0.0.1-SNAPSHOT</version>

? ? <name>activiti-test</name>

? ? <description>Demo project for Spring Boot</description>

? ? <properties>

? ? ? ? <java.version>1.8</java.version>

? ? </properties>

? ? <dependencies>

? ? ? ? <!--aop 攔截-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-aop</artifactId>

? ? ? ? ? ? <version>2.0.3.RELEASE</version>

? ? ? ? ? ? <scope>compile</scope>

? ? ? ? </dependency>

? ? ? ? <!--web模塊-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-web</artifactId>

? ? ? ? </dependency>

? ? ? ? <!--spring-boot集成mybatis-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>com.ruijc</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-mybatis</artifactId>

? ? ? ? ? ? <version>3.2.2</version>

? ? ? ? </dependency>

? ? ? ? <!--lombok -->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.projectlombok</groupId>

? ? ? ? ? ? <artifactId>lombok</artifactId>

? ? ? ? ? ? <optional>true</optional>

? ? ? ? </dependency>

? ? ? ? <!--test 用例-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-starter-test</artifactId>

? ? ? ? ? ? <scope>test</scope>

? ? ? ? </dependency>

? ? ? ? <!--druid 連接池-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>com.alibaba</groupId>

? ? ? ? ? ? <artifactId>druid-spring-boot-starter</artifactId>

? ? ? ? ? ? <version>1.1.10</version>

? ? ? ? </dependency>

? ? ? ? <!--mysql-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>mysql</groupId>

? ? ? ? ? ? <artifactId>mysql-connector-java</artifactId>

? ? ? ? ? ? <version>5.1.43</version>

? ? ? ? ? ? <!--<version>8.0.15</version>-->

? ? ? ? </dependency>

? ? ? ? <!--activiti基礎(chǔ)包-->

? ? ? ? <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-json-converter</artifactId>

? ? ? ? ? ? <version>6.0.0</version>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.apache.xmlgraphics</groupId>

? ? ? ? ? ? <artifactId>batik-transcoder</artifactId>

? ? ? ? ? ? <version>1.7</version>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.apache.xmlgraphics</groupId>

? ? ? ? ? ? <artifactId>batik-codec</artifactId>

? ? ? ? ? ? <version>1.7</version>

? ? ? ? </dependency>

? ? ? ? <!--分頁插件 4.1.5 版本以上修復(fù) selectProvider不兼容問題-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>com.github.pagehelper</groupId>

? ? ? ? ? ? <artifactId>pagehelper</artifactId>

? ? ? ? ? ? <version>4.1.5</version>

? ? ? ? </dependency>

? ? ? ? <!--common-->

? ? ? ? <!--<dependency>-->

? ? ? ? ? ? <!--<groupId>org.apache.commons</groupId>-->

? ? ? ? ? ? <!--<artifactId>commons-lang3</artifactId>-->

? ? ? ? ? ? <!--<version>3.0</version>-->

? ? ? ? <!--</dependency>-->

? ? ? ? <!--熱部署-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? <artifactId>spring-boot-devtools</artifactId>

? ? ? ? ? ? <optional>true</optional>

? ? ? ? </dependency>

? ? </dependencies>

? ? <build>

? ? ? ? <plugins>

? ? ? ? ? ? <plugin>

? ? ? ? ? ? ? ? <groupId>org.springframework.boot</groupId>

? ? ? ? ? ? ? ? <artifactId>spring-boot-maven-plugin</artifactId>

? ? ? ? ? ? ? ? <!--設(shè)置外部打包-->

? ? ? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? ? ? <includeSystemScope>true</includeSystemScope>

? ? ? ? ? ? ? ? </configuration>

? ? ? ? ? ? </plugin>

? ? ? ? ? ? <!--mybatis generator begin-->

? ? ? ? ? ? <plugin>

? ? ? ? ? ? ? ? <!--Mybatis-generator插件,用于自動生成Mapper和POJO-->

? ? ? ? ? ? ? ? <groupId>org.mybatis.generator</groupId>

? ? ? ? ? ? ? ? <artifactId>mybatis-generator-maven-plugin</artifactId>

? ? ? ? ? ? ? ? <version>1.3.5</version>

? ? ? ? ? ? ? ? <configuration>

? ? ? ? ? ? ? ? ? ? <!--配置文件的位置-->

? ? ? ? ? ? ? ? ? ? <configurationFile>src/main/resources/generator/mybatis_generator_config.xml

? ? ? ? ? ? ? ? ? ? </configurationFile>

? ? ? ? ? ? ? ? ? ? <verbose>true</verbose>

? ? ? ? ? ? ? ? ? ? <overwrite>true</overwrite>

? ? ? ? ? ? ? ? </configuration>

? ? ? ? ? ? ? ? <executions>

? ? ? ? ? ? ? ? ? ? <execution>

? ? ? ? ? ? ? ? ? ? ? ? <id>Generate MyBatis Artifacts</id>

? ? ? ? ? ? ? ? ? ? ? ? <phase>deploy</phase>

? ? ? ? ? ? ? ? ? ? ? ? <goals>

? ? ? ? ? ? ? ? ? ? ? ? ? ? <goal>generate</goal>

? ? ? ? ? ? ? ? ? ? ? ? </goals>

? ? ? ? ? ? ? ? ? ? </execution>

? ? ? ? ? ? ? ? </executions>

? ? ? ? ? ? ? ? <dependencies>

? ? ? ? ? ? ? ? ? ? <!--防止找不到驅(qū)動 報出如下異常:Exception getting JDBC Driver: com.mysql.jdbc.Driver-->

? ? ? ? ? ? ? ? ? ? <dependency>

? ? ? ? ? ? ? ? ? ? ? ? <groupId>mysql</groupId>

? ? ? ? ? ? ? ? ? ? ? ? <artifactId>mysql-connector-java</artifactId>

? ? ? ? ? ? ? ? ? ? ? ? <version>5.1.43</version>

? ? ? ? ? ? ? ? ? ? </dependency>

? ? ? ? ? ? ? ? ? ? <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

? ? ? ? ? ? ? ? ? ? <dependency>

? ? ? ? ? ? ? ? ? ? ? ? <groupId>org.mybatis</groupId>

? ? ? ? ? ? ? ? ? ? ? ? <artifactId>mybatis</artifactId>

? ? ? ? ? ? ? ? ? ? ? ? <version>3.4.4</version>

? ? ? ? ? ? ? ? ? ? </dependency>

? ? ? ? ? ? ? ? ? ? <!-- mybatis-generator-core 反向生成java代碼-->

? ? ? ? ? ? ? ? ? ? <dependency>

? ? ? ? ? ? ? ? ? ? ? ? <groupId>org.mybatis.generator</groupId>

? ? ? ? ? ? ? ? ? ? ? ? <artifactId>mybatis-generator-core</artifactId>

? ? ? ? ? ? ? ? ? ? ? ? <version>1.3.5</version>

? ? ? ? ? ? ? ? ? ? </dependency>

? ? ? ? ? ? ? ? </dependencies>

? ? ? ? ? ? </plugin>

? ? ? ? ? ? <!--mybatis generator end-->

? ? ? ? </plugins>

? ? </build>

</project>


2.application.properties 配置數(shù)據(jù)庫連接、 activiti、 靜態(tài)資源路徑等屬性

server.port=8083

#訪問的靜態(tài)資源

spring.mvc.view.prefix=classpath:/static/

#數(shù)據(jù)庫連接

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/act?serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false

spring.datasource.username=root

spring.datasource.password=111111

# 下面為連接池的補充設(shè)置,應(yīng)用到上面所有數(shù)據(jù)源中

# 初始化大小,最小,最大

spring.datasource.druid.initial-size=5

spring.datasource.druid.min-idle=5

spring.datasource.druid.max-active=20

# 配置獲取連接等待超時的時間

spring.datasource.druid.max-wait=60000

# 配置間隔多久才進行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒

spring.datasource.druid.time-between-eviction-runs-millis=60000

# 配置一個連接在池中最小生存的時間,單位是毫秒

spring.datasource.druid.min-evictable-idle-time-millis=300000

spring.datasource.druid.validation-query=SELECT 1 FROM DUAL

spring.datasource.druid.test-while-idle=true

spring.datasource.druid.test-on-borrow=false

spring.datasource.druid.test-on-return=false

# 打開PSCache,并且指定每個連接上PSCache的大小

spring.datasource.druid.pool-prepared-statements=true

spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20

# 配置監(jiān)控統(tǒng)計攔截的filters,去掉后監(jiān)控界面sql無法統(tǒng)計,'wall'用于防火墻

spring.datasource.druid.filter.commons-log.connection-logger-name=stat,wall,log4j

spring.datasource.druid.filter.stat.log-slow-sql=true

spring.datasource.druid.filter.stat.slow-sql-millis=2000

# 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄

spring.datasource.druid.connect-properties.=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

# 合并多個DruidDataSource的監(jiān)控數(shù)據(jù)

spring.datasource.druid.use-global-data-source-stat=true

#druid 登陸配置

spring.datasource.druid.web-stat-filter.enabled=false

spring.datasource.druid.stat-view-servlet.login-username=admin

spring.datasource.druid.stat-view-servlet.login-password=admin

#mybatis 配置

mybatis.mapper-locations=classpath:mappers/*Mapper.xml

mybatis.type-aliases-package=com.example.activititest.po

mybatis.check-config-location=true

mybatis.config-location=classpath:mybatis-config.xml

# activiti 自動部署驗證設(shè)置:true-開啟(默認(rèn))、false-關(guān)閉

spring.activiti.check-process-definitions=false

# activiti 當(dāng)自動檢查 并更新數(shù)據(jù)庫接表不存在則進行創(chuàng)建

spring.activiti.database-schema-update=true

#監(jiān)控地址端口

management.server.port=7000

#springboot2.0之后,在Http環(huán)境下將默認(rèn)的endpoint只設(shè)置為info和health,要想開啟其他的監(jiān)控功能,需要手動配置

management.endpoints.web.exposure.include=*

#請求連接前綴 默認(rèn)是/actuator

management.endpoints.web.base-path=/actuator


3.ActivitiTestApplication 啟動類 需要去除org.activiti.spring.boot.SecurityAutoConfiguration

import org.activiti.spring.boot.SecurityAutoConfiguration;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

* 配置mybatis掃描包 去除exclude = SecurityAutoConfiguration.class ,

* org.activiti.spring.boot.SecurityAutoConfiguration會導(dǎo)致

* Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

*/

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

@MapperScan(basePackages = "com.example.activititest.dao")

public class ActivitiTestApplication {

? ? public static void main(String[] args) {

? ? ? ? SpringApplication.run(ActivitiTestApplication.class, args);

? ? }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

4.將流程在線設(shè)計器放置再static目錄下

此步驟 請從源碼中拷貝。

需要注意的是

1.activiti-test\src\main\resources\static\editor-app\app-cfg.js 配置請求的根路徑

2.activiti-test\src\main\resources\static\editor-app\configuration\url-config.js 配置了 模型json,獲得模具集合,保存模型

其他代碼將不再贅述,如有問題,請再評論區(qū)寫在疑問。

二、接口演示

案例測試:

1.流程圖展示


注:此圖是使用Idea中的actiBPM插件

2.示例請假流程說明:員工發(fā)起流程,經(jīng)有人事(group:affair)進行審核: 如審核不通過,則結(jié)束流程,否則審核通過則判斷審核天數(shù) :如天數(shù)小于等于3天交予經(jīng)理(group:manager)審批 而后結(jié)束流程,超過三天 則交予總經(jīng)理(group:president)審核 而后結(jié)束流程。

注:角色后面跟的group是對應(yīng)每個角色的分組標(biāo)識。用于查看待簽任務(wù)時候,查看屬于自己組別的可簽收的任務(wù)

1.部署流程文件


測試ActivitiDefineController下的deploy方法 經(jīng)測試可以看到返回部署成功

2.部署成功了,當(dāng)然可以查看對應(yīng)的部署列表了


測試ActivitiDefineController下的list方法 經(jīng)測試可以看到返回列表數(shù)據(jù)

3.當(dāng)然了這樣可能不夠直觀 ,可以通過列表中的 部署id,查看流程圖

測試ActivitiDefineController下的viewProcessImage方法 經(jīng)測試可以看到返回定義的流程圖

4.查看該這個流程圖覺得沒有問題了,我們就準(zhǔn)備啟動該流程定義,創(chuàng)建流程實例(即員工張三發(fā)起請假)。

測試ActivitiDefineController下的startProcessInstanceById方法 經(jīng)測試可以看到返回成功(這里方便測試將assignee-‘當(dāng)前用戶’,由前臺傳入,后面將不再贅述。 讀者可將用戶id做為assignee,此文為了直觀使用名稱作為assignee)

注:流程圖人事不同意那條線 單詞是錯誤的。供后面在線流程編輯器進行修改使用。

5.人事審核過程:人事角色趙四(group:affair)登陸,可查看待簽任務(wù)

測試ActivitTaskController下的claimList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)

注:這里多說一句可以看到catalog這里是null,可以開始在流程部署文件中直接定義,這樣流程定義等就可以按照catelog進行查找了。

6.人事趙四看到有可簽收的任務(wù),進行簽收

測試ActivitTaskController下的claim方法 經(jīng)測試可以看到返回成功

注:這是簽收列表中就沒有這一條記錄,數(shù)據(jù)往待辦任務(wù)走

7.趙四簽收了任務(wù),現(xiàn)在就可以在待辦任務(wù)中 找到剛才簽收的任務(wù)了

測試ActivitTaskController下的todoList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)

8.趙四找到了待辦任務(wù),進行審批

測試ActivitTaskController下的complete方法 經(jīng)測試可以看到返回成功(需要注意這里人事需要進行審批,審批通過才會有后面的流程即需要傳參agree=‘yes’, agress=‘yes’, days=3)

注:這里是將 不同意那條線的判斷參數(shù)錯將agree寫成</font color=red>agress 此處留下一個伏筆將會用到模型轉(zhuǎn)換并使用流程設(shè)計器進行修改(此處暫不贅述),完成該任務(wù),待辦列表中就沒有了該條記錄,數(shù)據(jù)將往后一個流程經(jīng)理審批進行簽收,讀者也可以將days大于3,數(shù)據(jù)將往總經(jīng)理審批。

9.經(jīng)理審核流程:經(jīng)理角色王五(group:manager)登錄,可查看待簽任務(wù)

測試ActivitTaskController下的claimList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)

10.王五簽收了任務(wù),而后從待辦任務(wù)中 可查看該任務(wù)

測試ActivitTaskController下的claim方法 經(jīng)測試可以看到返回成功

11.王五找到待辦任務(wù)

測試ActivitTaskController下的todoList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)

12.王五完成任務(wù),即結(jié)束了流程

測試ActivitTaskController下的complete方法 經(jīng)測試可以看到返回成功


13.在上訴任務(wù)開始的時候,張三突然想看自己發(fā)起流程的進度情況了

測試ActivitTaskController下的sentList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)


注:可以看到流程開始時間 結(jié)束時間 流程全部時間等信息

14.或者某個人突然想查看自己參與過的辦結(jié)流程記錄

測試ActivitTaskController下的finishList方法 經(jīng)測試可以看到返回列表數(shù)據(jù)(這里以趙四為例)


15.或者查看流程所審批的流程過程

測試ActivitTaskController下的viewProgressPathImage方法 經(jīng)測試可以看到返回流程軌跡圖


16.在發(fā)現(xiàn)部署文件有問題時候,我們可以轉(zhuǎn)換成模型,用在線流程編輯器修改。


測試ActivitiDefineController下的convertToModel方法 經(jīng)測試可以看到返回成功

17.查看模型列表

測試ActivitModelController下的list方法 經(jīng)測試可以看到返回列表數(shù)據(jù)


18.使用線流程編輯器 將id傳入

打開瀏覽器http://localhost:8083/modeler.html?modelId=2503 (這里涉及到ActivitiVisualController的方法,請看源碼此處不再贅述)


注:修改后保存,而后進行部署。

19.流程編輯保存后進行部署生效,迭代版本

測試ActivitModelController下的deploy方法 經(jīng)測試可以看到返回成功


20.這時候再看流程定義,可以看到版本(version:2)迭代

測試ActivitiDefineController下的list方法 經(jīng)測試可以看到返回列表數(shù)據(jù)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容