activity概述2-流程設計 、BPMN文件 和 一些擴展思路

目錄

一、安裝Activiti 的Eclipse Designer插件

二、設計流程

三、BPMN文件說明

四、總結


【原文地址:http://craft6.cn/detail/activiti_research_designer_element_bpmn.do

一、安裝Activiti 的Eclipse Designer插件

Activiti基於Eclipse的設計器插件地址:https://www.activiti.org/designer/update/

Activiti設計器Eclipse插件.jpg

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

二、設計流程

    在你的任意項目中,選擇一個位置專門放置設計文件,然後創建Activiti Diagram。我設計了一個流程如下圖:

流程圖實例.jpg

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

     (至於設計器右側的組件面板(Palette)我則不貼圖了,讀者在eclipse中打開bpmn文件後自然就會看到)

 

  • 採用了泳道,這樣方便區分那些任務是屬於那些角色的。
  1. 任務:可以是UserTask(人工任務)、ScriptTask(腳本任務,自動執行)、ServiceTask...等等。
  2. 角色:注意泳道對應的是角色。具體各個任務的執行人,一般在流程實例中根據業務情況來動態分配。
  • 有起始和結束節點
  1. 起始節點只有一個。
  2. 結束節點可以有多個。
  • 網關。常用的有三種,現在增加了事件網關。
  1. 排他網關exclusiveGateway:即上圖的第一個網關。即有多個分支,按條件選擇一個分支(必須有一個符合條件)。
  2. 並行網關parallelGateway :即上圖的第二和第三個網關,注意要配對出現。即無條件的將流程分爲多個分支。
  3. 包含網關inclusiveGateway :排他和並行網關的結合體。即流程存在N個分支,流程實例中根據條件選擇 1~N個分支來執行。
  4. 基於事件網關eventBasedGateway :即到該網關流程會暫停,等待外部事件的通知。一般會在其中一個分支中增加定時器,用於超時未接收到事件,流程從該定時器分支繼續往下執行。

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

三、BPMN文件說明

    設計好流程後,這些內容都會被保存到後綴爲bpmn的設計文件中,它其實就是一個xml文件。

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

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

    bpmn文件的xml內容.jpg

 

  1. process 的 id:即流程定義的 ID,通過這個來查詢、發佈流程等。
  2. startEvent 開始節點,關鍵是設置一個Listener,這樣我們就可以在流程啓動的時候插入自己的業務了。比如可以在設置一段腳本,在StartEventListener中執行該腳本(Groovy技術)
  3. userTask 有三個階段事件:create、assignment 和 complete。分別表示在節點任務創建、分配給執行人 和 執行完畢後所調用的Listener。
  4. 可以採用同樣的方式允許在系統管理後臺中,針對不同的階段事件設置相應的腳本,然後在Listener執行。系統也可以有一些默認的業務,比如記錄日誌、發送消息等,在不同的Listener中觸發執行。這三個Listener都是繼承Activiti的AbstractTaskListener。網關。如圖中的sequenceFlow sourceRef 表示 這個分支是來自哪個網關的。=500000]]> 這段代碼最爲重要,表示根據參數值判斷選擇哪個分支執行。total表示是流程變量,在該網關前面的節點設置,一般是從表單中獲取,比如對應本業務就是錄入一個認購資料的表單,在表單中有總價,將這個總價抽取出來作爲流程變量,然後根據該變量控制分支流轉。
  5. endEvent 結束節點,對應的是EndEventListener,該Listener自行開發,繼承Activiti的AbstractExecutionListener。

 

四、總結

  1. 整個流程的設計在bpmn文件中可以達到完全的體現。甚至可以將所有的設置內容全部持久化到該設計文件中,這樣設計、測試和運營的不同階段便容易進行分離。
  2. 通過在activiti提供的不同事件的Listener侵入方式,可以很方便的擴展我們自己的業務
  3. 可以通過在Listener中執行配置的腳本(不同流程、節點配置業務相關腳本),
  4. 使用Groovy技術執行來擴展業務。
  5. 網關執行的判斷條件是一個表達式,可以通過流程變量(或表單變量)來控制。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章