前言
-
什么是工作流?
工作流指通過計算機對業(yè)務流程進行自動化管理,實現(xiàn)多個參與者按照預定義的流程去自動執(zhí)行業(yè)務流程。
-
文章源碼托管:https://github.com/OUYANGSIHAI/Activiti-learninig
一、activiti介紹
Activiti5是由Alfresco軟件在2010年5月17日發(fā)布的業(yè)務流程管理(BPM)框架,它是覆蓋了業(yè)務流程管理、工作流、服務協(xié)作等領域的一個開源的、靈活的、易擴展的可執(zhí)行流程語言框架。Activiti基于Apache許可的開源BPM平臺,創(chuàng)始人Tom Baeyens是JBoss jBPM的項目架構師,它特色是提供了eclipse插件,開發(fā)人員可以通過插件直接繪畫出業(yè)務流程圖。
-
官網(wǎng):http://www.activiti.org/
-
下載:http://www.activiti.org/download.html
目前,Activiti5中的5.22版本是用的最多的一個版本,本次教程也是使用這個版本進行講解,最新版本到了7.0版本。
在開始教程之前,我們需要先明確下面的一些概念和知識,可以幫助我們更好的理解工作流的開發(fā)。
二、工作流引擎
ProcessEngine對象,這是Activiti工作的核心。負責生成流程運行時的各種實例及數(shù)據(jù)、監(jiān)控和管理流程的運行。
用百度更為通俗的話來說就是:就是一輛汽車的發(fā)動機,就好比一輛汽車,外表做得再漂亮,如果發(fā)動機有問題就只是一個擺設。應用系統(tǒng)的彈性就好比引擎轉速方面的性能,加速到100 公里需要1 個小時(業(yè)務流程發(fā)生變動需要進行半年的程序修改)還能叫好車嗎?引擎動不動就熄火(程序因為邏輯的問題陷入死循環(huán))的車還敢開嗎?
三、BPMN
在Activiti工作流中用到了一個BPMN的文件,主要是用來描述業(yè)務流程的基本的符號,利用各個組件能夠組成一個業(yè)務流程圖,整個業(yè)務也是根據(jù)這個圖來走的,其實用xml格式打開,就是一個xml文件。
下面就是bpmn組件的示意圖
四、數(shù)據(jù)庫
在我們進行業(yè)務流程開發(fā)的時候,是會產(chǎn)生很多的數(shù)據(jù)的,那么這些數(shù)據(jù)都是放在哪里呢?
是的,其實就是存放在數(shù)據(jù)庫的。
在Activiti工作流的后臺是有數(shù)據(jù)庫的支持的,所有的表都以ACT_開頭,利用這些數(shù)據(jù)庫的表,就能夠把整個業(yè)務流程的數(shù)據(jù)保存下來,然后利用這些數(shù)據(jù)進行不同的業(yè)務的開發(fā)。
數(shù)據(jù)庫表示意圖
下面對這些表做一些基本的解釋,這些可以先不看,等看完后面的教程后再回過頭來看,你會發(fā)現(xiàn)其實很簡單的。
-
資源庫流程規(guī)則表
- act_re_deployment 部署信息表
- act_re_model 流程設計模型部署表
- act_re_procdef 流程定義數(shù)據(jù)表
-
運行時數(shù)據(jù)庫表
- act_ru_execution 運行時流程執(zhí)行實例表
- act_ru_identitylink 運行時流程人員表,主要存儲任務節(jié)點與參與者的相關信息
- act_ru_task 運行時任務節(jié)點表
- act_ru_variable 運行時流程變量數(shù)據(jù)表
-
歷史數(shù)據(jù)庫表
- act_hi_actinst 歷史節(jié)點表
- act_hi_attachment 歷史附件表
- act_hi_comment 歷史意見表
- act_hi_identitylink 歷史流程人員表
- act_hi_detail 歷史詳情表,提供歷史變量的查詢
- act_hi_procinst 歷史流程實例表
- act_hi_taskinst 歷史任務實例表
- act_hi_varinst 歷史變量表
-
組織機構表
- act_id_group 用戶組信息表
- act_id_info 用戶擴展信息表
- act_id_membership 用戶與用戶組對應信息表
- act_id_user 用戶信息表
這些表用的很少,因為我們一般會自己做一個權限管理,所以不會用activiti自身所帶的表。
- 通用數(shù)據(jù)表
- act_ge_bytearray 二進制數(shù)據(jù)表
- act_ge_property 屬性數(shù)據(jù)表存儲整個流程引擎級別的數(shù)據(jù),初始化表結構時,會默認插入三條記錄。
這兩張表的數(shù)據(jù)是不能夠隨意刪除的,刪除可能會出問題。
五、Spring Boot 集成 Activiti7
安裝插件
File
->
Settings->
Plugins->
Activiti BPMN visualizer文章來源:http://www.zghlxwxcb.cn/news/detail-473609.html
引入依賴
<dependencies>
<!-- 引入Activiti7 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M4</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M4</version>
<type>pom</type>
</dependency>
<!-- 生成流程圖 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-image-generator</artifactId>
<version>7.1.0.M4</version>
</dependency>
</dependencies>
配置文件
spring:
# 數(shù)據(jù)源配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&useSSL=false&serverTimezone=UTC&characterEncoding=UTF8&nullCatalogMeansCurrent=true
username: "root"
password: "88888888"
type: com.zaxxer.hikari.HikariDataSource
hikari:
# 等待連接池分配連接的最大時間(毫秒),超過這個時長還沒有可用的連接,則會拋出SQLException
connection-timeout: 30000
# 最小連接數(shù)
minimum-idle: 5
# 最大連接數(shù)
maximum-pool-size: 20
# 自動提交
auto-commit: true
# 連接超時的最大時長(毫秒),超時則會被釋放(retired)
idle-timeout: 600000
# 連接池的名字
pool-name: DataSourceHikariCP
# 連接池的最大生命時長(毫秒),超時則會被釋放(retired)
max-lifetime: 18000000
# activiti7配置
activiti:
# 自動部署驗證設置:true-開啟(默認)、false-關閉
check-process-definitions: false
# 保存歷史數(shù)據(jù)
history-level: full
# 檢測歷史表是否存在
db-history-used: true
# 關閉自動部署
deployment-mode: never-fail
# 對數(shù)據(jù)庫中所有表進行更新操作,如果表不存在,則自動創(chuàng)建
# create_drop:啟動時創(chuàng)建表,在關閉時刪除表(必須手動關閉引擎,才能刪除表)
# drop-create:啟動時刪除原來的舊表,然后在創(chuàng)建新表(不需要手動關閉引擎)
database-schema-update: true
# 解決頻繁查詢SQL問題
async-executor-activate: false
總結
工作流的概念就先介紹這么多了,更多的去官網(wǎng)查看。文章來源地址http://www.zghlxwxcb.cn/news/detail-473609.html
到了這里,關于【工作流】Activiti工作流簡介以及Spring Boot 集成 Activiti7的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!