----工作流模型如何和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
待續