網(wǎng)站首頁只顯示域名seo關(guān)鍵詞優(yōu)化提高網(wǎng)站排名
目錄
一. 什么是 Activiti 工作流引擎
二. Activiti 流程創(chuàng)建步驟
三. Activiti 數(shù)據(jù)庫表含義
四. BPMN 建模語言
五. Activiti 使用步驟
六. 流程定義與流程實例
一. 什么是 Activiti 工作流引擎
????????Activiti 是一個開源的工作流引擎,用于業(yè)務(wù)流程管理(BPM)。它允許開發(fā)者以 BPMN 2.0 標(biāo)準(zhǔn)定義業(yè)務(wù)流程,通過 Activiti 的 API 將流程定義內(nèi)容存儲起來,并在 Activiti 執(zhí)行過程中可以查詢定義的內(nèi)容。Activiti 執(zhí)行把流程定義內(nèi)容存儲在數(shù)據(jù)庫中,使得業(yè)務(wù)系統(tǒng)中的復(fù)雜業(yè)務(wù)流程可以被 Activiti 管理,從而提高系統(tǒng)的健壯性和減少系統(tǒng)開發(fā)維護成本。
二. Activiti 流程創(chuàng)建步驟
- 流程定義:使用 Activiti 的流程建模工具(如 Activiti Designer)定義業(yè)務(wù)流程,并生成 BPMN 文件。
- 流程部署:將 BPMN 文件部署到 Activiti 引擎中,Activiti 會將流程定義內(nèi)容存儲在數(shù)據(jù)庫中。
- 流程實例:啟動一個流程實例表示開始一次業(yè)務(wù)流程的運行,每個流程實例的執(zhí)行互相不影響。
- 任務(wù)管理:用戶可以通過 Activiti 查詢待辦任務(wù)并辦理任務(wù)。
- 流程結(jié)束:當(dāng)任務(wù)辦理完成且沒有下一個任務(wù)節(jié)點時,流程實例完成。
三. Activiti 數(shù)據(jù)庫表含義
????????Activiti 支持多種數(shù)據(jù)庫,如 MySQL、Oracle、PostgreSQL 等。它通過創(chuàng)建多個表來存儲流程定義、流程實例、任務(wù)、歷史數(shù)據(jù)等信息。這些表通常以 ACT_
為前綴,并且分為幾個類別(25張表):
ACT_RE_*
:存儲流程定義和流程靜態(tài)資源ACT_RU_*
:存儲流程實例、任務(wù)、變量等運行時數(shù)據(jù)ACT_HI_*
:存儲歷史數(shù)據(jù)ACT_GE_*
:通用數(shù)據(jù)
四. BPMN 建模語言
????????BPMN(Business Process Model and Notation)是一種業(yè)務(wù)流程建模符號,它是一種圖形化的語言,用于設(shè)計、執(zhí)行、監(jiān)控、改進和討論業(yè)務(wù)流程。BPMN 2.0 是當(dāng)前的國際標(biāo)準(zhǔn),由 OMG(Object Management Group)組織維護。
????????整個BPMN是用一組符號來描述業(yè)務(wù)流程中發(fā)生的各種事件的。BPMN通過在這些符號事件之間連線來描述一個完整的務(wù)流程。
如圖所示
一個簡單的請假流程圖
五. Activiti 使用步驟
通常使用Activiti時包含以下幾個步驟:
- 定義流程:使用Activiti的建模工具定義業(yè)務(wù)流程.bpmn文件。
- 部署流程定義:使用Activiti提供的API把流程定義內(nèi)容存儲起來,在Acitivti執(zhí)行過程匯總可以査詢定義的內(nèi)容,Activit是通過數(shù)據(jù)庫來存儲業(yè)務(wù)流程的。
- 啟動流程實例:流程實例也叫Processinstance。啟動一個流程實例表示開始一次業(yè)務(wù)流程的運作。例如員工提交請假申請后,就可以開啟一個流程實例,從而推動后續(xù)的審批等操作。
- 用戶查詢待辦任務(wù)(task):因為現(xiàn)在系統(tǒng)的業(yè)務(wù)流程都交給了activiti管理,通過activiti就可以查詢當(dāng)前流程執(zhí)行到哪個步驟。當(dāng)前用戶需要辦理哪些任務(wù)也就同樣可以由activiti幫我們管理,開發(fā)人員不需要自己編寫sql語句進行査詢了。
- 用戶辦理任務(wù):用戶查詢到自己的待辦任務(wù)后,就可以辦理某個業(yè)務(wù),如果這個業(yè)務(wù)辦理完成還需要其他用戶辦理,就可以由activiti幫我們把工作流程往后面的步驟推動。
- 流程結(jié)束:當(dāng)任務(wù)辦理完成沒有下一個任務(wù)節(jié)點后,這個流程實例就執(zhí)行完成了。
六. 流程定義與流程實例
????????流程定義 ProcessDefinition 和流程實例 Processinstance是Activiti中非常重要的兩個概念,他們的關(guān)系其實類似于JAVA中類和對象的概埝。
????????流程定義ProcessDefinition是以BPMN文件定義的一個工作流程,是一組工作規(guī)范。例如我們之前定義的請假流程。流程實例Processinstance則是指一個具體的業(yè)務(wù)流程。例如某個員工發(fā)起一次請假,就會實例化一個請假的流程實例,并且每個不同的流程實例之間是互不影響的。
在后臺的表結(jié)構(gòu)中,有很多張表都包含了流程定義ProcessDefinetion和流程實例Processinstance的字段。流程定義的字段通常是PROC DEF ID,而流程實例的字段通常是PROC INST ID。