日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springBoot集成Activiti6

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springBoot集成Activiti6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫:mysql

IDE:Spring Tool Suite

build工具:Maven

項目版本:springBoot1.5.10 + JDK1.8 + Maven3.0.5
(之前用的是2.0.0版本的springBoot,集成activiti6后啟動一直報錯,最后發現是版本問題,改為1.5.10就可以了,迷之崩潰o(╥﹏╥)o)

一.構建springBoot

1.創建項目

(1)使用idea創建springboot項目很快,可參考如下鏈接:
https://www.cnblogs.com/winner-0715/p/6666302.html

(2)使用eclipse安裝STS插件的方式,參考鏈接:
https://blog.csdn.net/clementad/article/details/51334064
(可能我的eclipse比較調皮,STS插件安裝一直沒配置成功,so我直接下載了STS

(3)STS下載地址:
http://spring.io/tools/sts/all

使用STS創建項目:

新建項目–選擇Spring Boot下的Spring Starter Project–Next



選擇SpringBoot的版本:

創建成功后的目錄結構:

給pom.xml添加以下依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> </dependency>

2.運行項目

找到整個項目的入口類:MiaoApplication

這個類有一個@SpringBootApplication注解,這是整個Spring Boot的核心注解,它的目的就是開啟Spring Boot的自動配置。需要在這個類上再添加一個@RestController注解,使之變為一個Controller,然后里邊提供一個地址轉換方法,如下:

@RestController @SpringBootApplication public class MiaoApplication { public static void main(String[] args){ SpringApplication.run(MiaoApplication.class, args); } @GetMapping(value = "/") String index(){ return "Hello Spring Boot!"; } }

然后運行項目,控制臺沒有報錯信息就說明成功了,在瀏覽器上可以直接訪問:

二.Activiti6安裝運行

1.下載和安裝Activiti6

鏈接: https://pan.baidu.com/s/1livSJdUm3doUzBZI5AKJWA
密碼: 2qza
解壓后發現一共有三個子目錄:database,libs,wars,各個目錄的作用描述如下:

2.使用tomcat配置與運行

wars目錄下的三個war包默認使用的是h2內存數據庫,重啟服務器數據就會消失。將3個war包復制到tomcat的webapps的目錄下,更改tomcat的server.xml文件的Context 為:

<Context docBase="F:\apache-tomcat-7.0.59\webapps\activiti-app.war" path="/" reloadable="true"/>

然后雙擊bin目錄下的startup.bat文件啟動tomcat,打開瀏覽器即可訪問:
(用戶名:admin;密碼:test)

**PS:**如果你的startup.bat雙擊后自動關閉了,有可能和我一樣是java.lang.OutOfMemoryError異常,需要在bin/catalina.bat文件中找到以下一行:

echo Using CATALINA_BASE: "%CATALINA_BASE%"

在這行的上面添加:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

重新運行startup.bat即可。

三.Activiti6的使用

Activiti官方發布的activiti-app可以說是一個較為完善的樣例,可以通過它來了解Activiti的大部分功能。
登錄成功后,可以看到有三個不同的模塊:


下面我們以請假為例,定義一個工作流程。我們知道,請假流程中涉及到的人員有員工和主管,那么首先需要新建這兩種類型的用戶,之后定義請假流程。

1.新建用戶

點擊Idennity management,進入Users模塊,點擊“Create user”按鈕新建需要請假的員工:

2.定義流程

點擊Kickstart app,進入Processes,點擊“Create Process”創建流程。
流程創建完畢會自動進入流程編輯界面,會有提示告訴你怎么用,超貼心~
通過鼠標拖拉,即可完成一個流程的定義:

我們定義了一個開始事件和一個結束事件以及兩個用戶任務,我們需要把用戶任務分配給對應的人員。
點擊第一個用戶任務“提出請假申請”,修改它的“Assignment”屬性,將當前任務分配給Employee:

同樣,需要把第二個用戶任務分配給manager。任務分配成功后,點擊左上角的保存按鈕保存當前流程。

3.發布流程

在activiti-app中,一個App可以包含多個流程模型,因此在發布流程前,需要新建一個App并設置它的流程模型。
點擊Apps菜單下的“Create App”按鈕,創建App:

創建完成后,將之前創建的流程綁定到該App上,之后發布該App:

發布成功后,使用Employee賬號登錄,可以看到發布成功的HR App,進入該App,點擊Processes菜單,可以看到“Start a process”按鈕,點擊后即可啟動一個請假流程。

啟動后就由employee用戶完成第一個請假申請:

之后可登錄manager用戶進行審核操作,同樣點擊HR App,進入后點擊Processes菜單,以同樣方式操作完成任務后,該流程結束。

四.Spring Tool Suite中使用Activiti6

1.修改配置文件application.properties,保存為application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring-boot-activiti?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password:
jpa:
show-sql: true
記得新建一個對應的數據庫:spring-boot-activiti~

2.在pom.xml中添加Activiti6的依賴

前端使用了thymeleaf模板進行展示,因此也需要引入它的依賴:

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

3.在資源目錄下創建processes目錄

用于保存.bpmn后綴的流程圖,這個目錄名千萬不要手抖打錯了,相信我,程序一定會報錯的~

4.安裝Activiti插件
https://blog.csdn.net/qq_33547950/article/details/54926435

5.在processes文件下新建bpmn文件

6.使用Activiti插件設計流程圖

需要在IDE里調出properties面板配置參數:

1).General配置Id和文字,注意Id不能重復;

2)Main config里面配置當前任務的代理人Assignee;

3)Candidate users可以配置當前任務的候選人組,具體應用場景:
當審核者有兩個或多個以上,請假申請提交到他們手上后,有一個人認領了該任務,即代表申請被審批通過,這種情況下就需要使用候選人組配置。

對于有兩個出口連線的任務,我們通過設置連線flow的流程變量的方式來自動控制流程的流轉:

7.編寫流程代碼

說明:

  • com.example.MiaoApplication包含了當前demo的主要功能:
    登錄;退出;添加請假單;放棄請假;申請請假;審核請假;獲取請假狀態;獲取請假流程。

  • com.example.controller.MiaoController包含了三個頁面請求,分別為:
    申請人主頁面,審核人主頁面,請假單填寫頁面;

  • com.example.entity包含了兩個表:
    User表:用于存放當前用戶,登錄驗證之前,需要手動在該表內加入信息,示例如下(type為1代表申請人,2代表審核人):

    VacationForm表:用于存放請假信息;

  • com.example.service包含了三個service:
    MiaoService:業務流程操作接口;
    UserService:用戶表操作接口,繼承了JpaRepository;
    VacationFormService:請假表操作接口,繼承了JpaRepository;

  • com.example.serviceImpl中的MiaoServiceImpl是對MiaoService接口的實現。具體細節都標注在了代碼注釋里,代碼已上傳git:
    https://github.com/jichunyang19931023/ActivitiWithSpringBoot

  • 補充:
    1.本demo的用戶登錄信息存儲在cookie里,實際場景下可以考慮存放在Redis里;
    2.數據庫操作使用了SpringData的JpaRepository,實現的時候只需寫一個繼承JpaRepository的類,需要給出實體類名和主鍵類型。

    3.啟動Spring Boot工程,默認會自動部署相應路徑下流程定義文件;自動創建Activiti ProcessEngine Bean;自動注冊Activiti Service;創建Job Executor。所以我們不用像網上的大多數教程那樣配置引擎,直接使用對應的服務即可:

    以上配置教程個人原創,有理解不對的地方歡迎提出建議~??ヽ(°▽°)ノ?


    歡迎關注我的公眾號,用講故事的方式學技術。

    這里有腦洞大開的奇葩故事,也有溫暖文藝的心靈感悟。

    技術知識,也可以很有趣。

    總結

    以上是生活随笔為你收集整理的springBoot集成Activiti6的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。