天天看點

python activiti bpmn_ACTIVITI 研究系列 —— 流程設計 、BPMN檔案 和 一些擴充思路

一、安裝Activiti 的Eclipse Designer插件

python activiti bpmn_ACTIVITI 研究系列 —— 流程設計 、BPMN檔案 和 一些擴充思路

安裝好後,就可以建立Activiti 設計圖了:

python activiti bpmn_ACTIVITI 研究系列 —— 流程設計 、BPMN檔案 和 一些擴充思路

二、設計流程

在你的任意項目中,選擇一個位置專門放置設計檔案,然後建立Activiti Diagram。

我設計了一個流程如下圖:

python activiti bpmn_ACTIVITI 研究系列 —— 流程設計 、BPMN檔案 和 一些擴充思路

流程比較簡單,我隻是用來講解Activit主要元素和BPMN檔案使用,該圖的業務簡單說明。

(至于設計器右側的元件面闆(Palette)我則不貼圖了,讀者在eclipse中打開bpmn檔案後自然就會看到)

采用了泳道,這樣友善區分那些任務是屬于那些角色的。任務:可以是UserTask(人工任務)、ScriptTask(腳本任務,自動執行)、ServiceTask...等等。

角色:注意泳道對應的是角色。具體各個任務的執行人,一般在流程執行個體中根據業務情況來動态配置設定。

有起始 和 結束節點起始節點隻有一個

結束節點可以有多個。

網關。常用的有三種,現在增加了事件網關。排他網關exclusiveGateway:即上圖的第一個網關。即有多個分支,按條件選擇一個分支(必須有一個符合條件)。

并行網關parallelGateway :即上圖的第二和第三個網關,注意要配對出現。即無條件的将流程分為多個分支。

包含網關inclusiveGateway :排他和并行網關的結合體。即流程存在N個分支,流程執行個體中根據條件選擇 1~N個分支來執行。

基于事件網關eventBasedGateway :即到該網關流程會暫停,等待外部事件的通知。一般會在其中一個分支中增加定時器,

用于逾時未接收到事件,流程從該定時器分支繼續往下執行。

其它具體元素和實際使用,在以後相應的文章中會探讨,本文隻是簡單說明一下。

三、BPMN檔案說明

設計好流程後,這些内容都會被儲存到字尾為bpmn的設計檔案中,它其實就是一個xml檔案。

用文本或者xml編輯器打開該檔案,主要看process下面的内容。

由于本流程設計用到了泳道,是以會有一段泳道的代碼,但是該段代碼不影響流程的業務流轉,是以我将其折疊起來。

python activiti bpmn_ACTIVITI 研究系列 —— 流程設計 、BPMN檔案 和 一些擴充思路

process 的 id:即流程定義的 ID,通過這個來查詢、釋出流程等。

startEvent 開始節點,關鍵是設定一個Listener,這樣我們就可以在流程啟動的時候插入自己的業務了。

比如可以在設定一段腳本,在StartEventListener中執行該腳本(Groovy技術)

userTask 有三個階段事件:create、assignment 和 complete。分别表示在節點任務建立、配置設定給執行人 和 執行完畢後所調用的Listener。

可以采用同樣的方式允許在系統管理背景中,針對不同的階段事件設定相應的腳本,然後在Listener執行。

系統也可以有一些預設的業務,比如記錄日志、發送消息等,在不同的Listener中觸發執行。

這三個Listener都是繼承Activiti的AbstractTaskListener。

網關。如圖中的sequenceFlow

sourceRef 表示 這個分支是來自哪個網關的。

=500000]]>

這段代碼最為重要,表示根據參數值判斷選擇哪個分支執行。total表示是流程變量,在該網關前面的節點設定,

一般是從表單中擷取,比如對應本業務就是錄入一個認購資料的表單,在表單中有總價,将這個總價抽取出來作為

流程變量,然後根據該變量控制分支流轉。

endEvent 結束節點,對應的是EndEventListener,該Listener自行開發,繼承Activiti的AbstractExecutionListener。

四、總結整個流程的設計在bpmn檔案中可以達到完全的展現。甚至可以将所有的設定内容

全部持久化到該設計檔案中,這樣設計、測試和營運的不同階段便容易進行分離。

通過在activiti提供的不同僚件的Listener侵入方式,可以很友善的擴充我們自己的業務

可以通過在Listener中執行配置的腳本(不同流程、節點配置業務相關腳本),

使用Groovy技術執行來擴充業務。

網關執行的判斷條件是一個表達式,可以通過流程變量(或表單變量)來控制。