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