基於petri網的工作流筆記(一)

----工作流模型如何和petri網聯繫起來呢?
petri網的幾個擴展:着色petri網、時間petri網、層次petri網
着色petri網給令牌“着色”賦值,增加了屬性特徵,使得流程中的各個令牌可以明確的區分。

一個例子:
十字路口,兩組交通信號燈控制四個方向的車輛。每組燈包含紅、黃、綠三種顏色。同時是綠燈或者同時是黃燈這兩種情況都不能出現(黃燈的時候車輛如果已經越過停止線,可以繼續行駛)

----幾個概念
流程是什麼?流程是一組任務、條件、子流程以及它們之間關係的集合。
特定的流程處理一類特定的案例,也即可以處理許多單獨的案例。
一個工作項是一個實例和一個就緒任務的結合。正在執行的工作項稱爲活動。當工作項真正執行的那一刻,它就轉變爲活動。 可見前者是靜態 後者是動態的 。但是工作項和活動都是和實例相聯繫的。

工作流系統的目標是竟可能快的完成所有的任務。需要考慮兩點:工作項以哪種順序轉變成活動?活動被哪個資源執行?這兩者是相互影響的。

轉變順序有如下幾個原則:
先進先出  :工作項依據他們被創建的順序被處理
後進先出:
最短流程時間:
最短剩餘流程時間“
最早底線時間:每個活動都有一個底線時間,最接近底線時間的那個最先被觸發。


把工作項目分配給資源有兩種辦法:
工作流引擎自動分配,通過前置條件
資源自動適配

工作流的瓶頸:
實例運行太多
運行時間太長
服務級別過低。


流程設計指南

1, 建立流程目標
2, 定義一個流程的時候忽略資源的存在
3, 儘可能爲每個實例流程配置一個管理者
4, 檢查每個任務的必要性
5, 考慮任務範圍i
6, 嘗試最簡單的流程
7, 搞一個通用流程 還是一個流程多個版本
8, 比較特殊化合普遍化
9, 儘可能達到任務平行運行

 

工作流的定義幾種常規的錯誤:
沒有輸入或者輸出的任務。沒有輸入,則不確定何時會執行。沒有輸出,則對流程的完成毫無作用。
無法抵達的任務
死鎖
死循環
End已經抵達了  但是活動還在進行
流程已經結束了 還有token在。


要想工作流系統不發生死鎖或者無法終止的情況,需要滿足下面的條件
對於每個放在開始裏面的token,有且僅有一個在結束裏面  首尾呼應
令牌出現在結束庫所的時候,其他地方要沒有令牌
Petri網必須是活性並且有界的
活性意味着每個狀態和變遷都都能通過初始狀態到達
有界說明不存在某個庫所含有無限多令牌的情況。


工作流系統的幾個接口:
接口1  流程定義工具  創建 修改 保存流程定義 打開和關閉連接
接口2  工作流客戶端應用程序  打開關閉連接 案例 開始 完成的創建==
接口3 管理和監視工具  工作流管理api和工作流跟蹤api

 


待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章