本文重點介紹開源流程引擎camunda的核心概念,這些概念同樣适用于JBMP、Activiti、Flowable流程引擎,了解這些基本概念和原理,使用流程引擎API将更得心應手。
Process Definition即流程定義。Process Definition定義了流程的結構,或者說定義了業務活動的執行過程。Camunda bpm使用bpmn2.0作為其流程定義的主要模組化語言。在Camunda BPM中,提供了C/S流程模組化工具(Modeler)和B/S流程模組化工具(bpmn.io),使用者通過拖拉拽的方式設計流程圖,這個設計完的xml檔案就是流程定義。
Process Instance即流程執行個體。流程執行個體是流程定義的單獨執行,流程定義和流程執行個體是一對多關系。流程執行個體與流程定義的關系與面向對象程式設計中對象與類的關系相同(在這種類比中,流程執行個體扮演對象的角色,流程定義扮演類的角色)。
流程定義設計完成後,釋出到BPM,通過流程引擎解析流程定義,發起一次流程即建立了一個流程執行個體,比如:建立了一個“請假流程”,這是一個流程定義,張三發起了一次請假流程,即建立了一個流程執行個體,李四也發起了一次請假,就是建立了另一個流程執行個體,這兩個執行個體均基于流程定義建立生成。
Execution即流程執行執行個體,如果流程執行個體包含多個執行路徑(例如,在并行網關之後),則會同時産生多個執行執行個體,即execution, 通過excutionId能夠區分流程執行個體内的目前活動路徑。如下流程圖,“receive payment”和“ship order”節點同時運作,即有兩個execution在運作。

Execution(執行)是分層的,流程執行個體中的所有Execution(執行)組成一個樹,Process Instance(流程執行個體)是樹中的根節點,Process Instance(流程執行個體)本身就是一個Execution(執行)。
Activity Instance即活動執行個體,活動執行個體概念與執行概念類似,但采用了不同的視角。雖然可以将執行想象為在流程中移動的令牌,但活動執行個體表示活動(任務、子流程等)的單個執行個體。是以,活動執行個體的概念更面向狀态。
Process Variable即流程變量,流程變量在整個工作流中扮演很重要的作用,是業務和流程引擎之間互動資訊的載體,業務可以把資料放到流程變量裡傳遞給流程引擎,流程引擎也可以把資訊放到流程變量給傳遞給業務,流程變量最常見的用途有路由條件表達式、流程執行事件參數等。例如:請假流程中有請假天數、請假原因等一些參數都為流程變量的範圍。流程變量的作用域範圍是流程執行個體,也就是說各個流程執行個體的流程變量是不互相影響的。
Tasklist即任務清單,也就是待辦任務。當流程節點是人工任務類型時,才可産生任務清單。
Job and Job Definition即作業執行器,Camunda流程引擎包含一個名為Job Executor的元件。作業執行器是一個排程元件,負責執行異步背景工作。考慮一個計時器事件的例子:每當流程引擎到達計時器事件時,它将停止執行,将目前狀态儲存到資料庫,并建立一個作業以在将來繼續執行。部署流程時,流程引擎會為流程中的每個活動建立作業定義,這些活動将在運作時建立作業。
專注雲原生、低代碼、流程引擎研發和應用。免費體驗環境:http://www.yunchengxc.com