1. 程式人生 > >基於Petri網的工作流如何執行

基於Petri網的工作流如何執行

  1. A transition may only fire if it is enabled. This occurs when there is at least one token at each of its input places. The transitions are then, as it were, "loaded": ready to fire. In figure 2.2, the transition record is enabled. The other two are not.定義了什麼樣的transition是enabled狀態,即每個輸入都至少有一個token。
  2.  As it fires, one token is removed from each input place and one token added to each output place.這句話用來理解fire的最本質的過程,即對於enabled的transition來說,會從每一個輸入的place中取出一個token,並在每一個output的place中輸出一個token,這個過程並非是守恆的。
  3. 理解以上兩句話的含義即可以讀懂這樣一個稍微複雜的Petri網:

    

    這樣一個Petri網的功能為保證place-under_consideration只有一個token,具體實現過程模擬如下:

    1. 初始狀態只有record可以fire。
    2. record fire
    3. 此時place-claim、place-free中各被record取走一個token,place-under_consideration中有一個token
    4. 此時pay或者send_letter符合enabled的規則
    5. 因為pay或者send_letter有一個輸入兩個輸出,所以任何一個transition fire之後place-free都會多一個token
    6. 由此進行迴圈,保證place-under_consideration裡只有一個token

總結:對於Petri網這類形式化的知識應該緊抓本質,即定義,方得要領。

注:摘自《WorkFlow Management》一書,作者Wil van der Aalst and Kees van Hee。