本文算法
第一部分介紹Petri網ide
第二部分將Petri網用於ERP工具
第三部分介紹FSM,有限狀態機及審批流。post
Petri網編碼
Petri網是1962年被Carl Adam Petri做爲一種過程建模和分析的工具提出,它是一種圖形化描述過程的強有力的工具。Petri網也有有嚴格的數學基礎和表述方式。spa
經典的Petri net是簡單的過程模型,由兩種節點:庫所(Place)和變遷(Transition),及有向弧,以及令牌(Token)組成的。設計
咱們用圓圈表示庫所,用矩形表示變遷,用黑點表示令牌。兩個庫所或兩個變遷之間不容許有弧,只能是庫所到變遷或者是變遷到庫所。庫所中能夠擁有任意數量的令牌(Token)。orm
Petri網實例:保險索賠流程案例對象
變遷是Petri網中的主動因素。經過實施變遷,過程從一個狀態轉變到另外一個狀態。所以變遷常常表示事件、操做、轉換或傳輸等。blog
庫所是Petri網中的被動因素,它們不能改變網的狀態。庫所常常表示媒介、緩衝器、地理位置、(子)狀態、階段或條件。
令牌一般表示對象,這些對象多是具體的事物,也多是抽象的信息。
Petri net不光抽象了經典的過程模型,並描述了完備的支撐過程調度的算法:若是一個變遷的每一個輸入庫所(input place)都擁有令牌,該變遷即爲被容許(enable)或就緒。一個變遷被容許時,變遷將發生(fire),輸入庫所(input place)的令牌被消耗,同時爲輸出庫所(output place)產生令牌。
record實施先後的狀態
pay實施後的狀態
加入控制的例子
若是想要限定任什麼時候候正在執行的案例個數不超過n,只須要在開始時往庫所free中放入n個令牌。
高級Petri網
顏色擴展:
傳統的Petri網沒法區別各個令牌有什麼不一樣。
一個令牌(token)一般表明具備各類屬性的對象,顏色擴展是使令牌擁有值(顏色)表明由令牌建模的對象的具體特徵。每一個令牌都有一個值,經過他能對令牌進行區分。
變遷實施所產生的令牌,取決於實施時被消耗的令牌的值,生產出的令牌的值也能夠依賴於那些消耗的令牌的值。與傳統Petri網不一樣,生產的令牌數目也是變化的,即生產的令牌數目由被消耗的令牌的值決定。
在通過顏色擴展的Petri網中,咱們能夠爲每一個要被變遷所消耗的令牌設置前置條件。單純的顏色擴展使得圖形沒法表示網的所有信息。
所以對每一個變遷,須要指出一下因素:是否有前置條件,若是有,則必須準肯定義。包括每一個輸出庫所送出的令牌個數,以及被消耗的標記的值,生產出來的令牌的值,可能依賴於被消耗的令牌的值。
時間擴展:略
層次擴展:略
路由
順序路由:
並行路由:
選擇路由:
基本結構表示方法
循環路由:
觸發
Petri網中的變遷是「飢餓的」。它們一旦就緒,就會馬上實施,每一個就緒的變遷都對應一個工做項。
三種類型的觸發:
1資源主導(例如僱員從他的「工做籃」中取出一個工做項)
2外部事件(例如一個EDI消息的到來)
3時間信號(例如再六點中生成一個訂單列表)
一般用一個向下的寬箭頭表示被資源觸發的任務
用一個信封符號表示被外部事件觸發的任務
用一個時鐘符號表示被時間出發的任務
Petri 網與 ERP
假設單據爲一單多物,單據關係爲多對多。
咱們以單據集合爲庫所,以物料需求爲令牌,以物料數量爲令牌數量,以各類處理爲變遷。
譬如銷售給發貨的令牌爲:
以物料編碼+單據類別+銷售訂單號+銷售行號爲令牌的ID,以銷售數量爲令牌數量,以客戶,發貨時間,發貨地址等爲令牌的屬性。
描述爲:須要爲XX客戶在XX時間往XX地址發送XX物料,數量爲XX。
只有提交到工做流的銷售訂單纔會發出此令牌。
對變遷處理者設立角色,在發送令牌時按工做流設計只發送給特有角色。這樣,令牌就替代了之前針對單據設計的用戶權限,部門權限,數據權限等等。每一個處理者只能處理本身擁有的令牌。
客戶A要求:10日供應300個物料B。
則P1獲得300個令牌。T1的處理人員執行T1,消耗100個令牌,則P2 P3各獲得100個令牌。
假設T2的處理人員消耗50個P2的令牌,則P4獲得50個令牌。
如今T4擁有100個P3,50個P4,則T3只能處理50個令牌。
這樣,每一個角色只能經過工做流獲得令牌,處理本身能處理的任務。
FSM(finite state machine,有限狀態機)理論
最基本的FSM包含三部分:States,Start State,Transtion/Actions
以下圖所示
一個state到另外一個state就稱爲Transtion。
FSM模型適合於創建複雜的公文審批流程。