接觸activiti已經(jīng)1年多了,最近因為項目需要,把activiti又重新整合了下,把碰到的一些問題以及心得記下來,僅做參考。
在我們生活工作中,到處都是流程式的操作,比如上班過程中請假的審批,網(wǎng)購過程中的整個訂單過程,從下單起,我們就可以跟蹤整個訂單的狀態(tài)。工作流總是以任務(wù)(Task)的形式驅(qū)動人處理業(yè)務(wù)或者驅(qū)動業(yè)務(wù)系統(tǒng)自動完成作業(yè)。有了工作流引擎后,我們不必一直等待其他人的工作進度,只需要關(guān)注我們自己的待辦任務(wù)即可。activiti是一個針對企業(yè)用戶,開發(fā)人員,系統(tǒng)管理員的輕量級工作流業(yè)務(wù)管理平臺,其核心是使用Java開發(fā)的快速,穩(wěn)定的BPMN2.0流程引擎。
Activiti 中每一個不同版本的業(yè)務(wù)流程的定義都需要使用一些定義文件,部署文件和支持數(shù)據(jù) ( 例如 BPMN2.0 XML 文件,表單定義文件,流程定義圖像文件等 ),這些文件都存儲在 Activiti 內(nèi)建的 Repository 中。Repository Service 提供了對 repository 的存取服務(wù),流程倉庫service,用于管理流程倉庫,例如部署,刪除,讀取流程資源
在Activiti中,每個流程定義被啟動一次之后,都會生成相應(yīng)的流程對象實例。RunTimeService提供啟動流程,查詢流程實例,設(shè)置獲取流程實例變量等功能。此外還提供對流程部署,流程定義和流程實例存取的服務(wù)。
在activiti業(yè)務(wù)流程定義的每一個執(zhí)行節(jié)點被稱為一個task,對流程中的數(shù)據(jù)存取,狀態(tài)變更等操作都需要在task中完成。TaskService提供了對用戶task和form的相關(guān)操作。提供了運行時任務(wù)的查詢、領(lǐng)取、完成、刪除以及變量設(shè)置等功能。
Activiti內(nèi)置了用戶以及用戶組的概念以及功能,必須使用用戶或者用戶組才能獲取到相應(yīng)的task。IdentityService提供了對用戶和用戶組的管理功能。
主要用于獲取正在運行或者已經(jīng)運行結(jié)束的流程實例信息,與RunTimeService獲取的流程信息不同,歷史信息包含已經(jīng)持久儲存化的信息,并已經(jīng)針對查詢做出優(yōu)化。
Activiti中的流程和狀態(tài)Task均可關(guān)聯(lián)相關(guān)的業(yè)務(wù)數(shù)據(jù),通過FormService可以存取啟動和完成任務(wù)所需的表單數(shù)據(jù)并根據(jù)需要來渲染表單。
ManagementService提供對流程引擎的管理和維護的功能,這些功能不在工作流驅(qū)動的應(yīng)用程序中使用,主要運用activiti的日常維護。