web工作流管理系統開發之二 工作流引擎

工作流引擎,主要是實現業務流程的規則抽象,模型的建立,解釋,以及爲流程實例提供運行環境,並解釋執行流程實例。
      工作流引擎必須要包含一個工作流模型的設計,工作流模型就是對業務流程抽象的一個模型,是整個工作流引擎的基礎。所以模型設計的好壞決定引擎的功能是否靈活,也決定了工作流管理系統從設計實現到運行實施等諸多環節。
 
  在信息管理自動化的環境下,工作流模型必須採用簡單、直觀、又具有較強描述能力的模型。我們公司的自定義工作流系統採用了有限狀態機的數學模型來實現工作流模型,有限狀態機(FSM)又稱爲有限狀態自動機或簡稱狀態機,是表示有限個狀態以及這些狀態之間的轉移和動作等行爲的數學模型。
狀態轉換圖:

狀態轉換圖

 

  上圖左數第一個圖:爲初始狀態,用粗線圈表示;
                             SX,S0,S01,S011,S0110 爲狀態名稱
                             U=0表示處於該狀態的輸入
                             連線箭頭上的0或1表示導入狀態轉換時的輸入

 

      工作流模型正是利用這種狀態和動作,動作的結果導致狀態的轉移來達到流程的流轉。

 

      工作流引擎的每一種狀態(state)被描述成爲一個步驟(step)和步驟的狀態(status)。工作流實例從一種狀態(state)升遷到另外一種狀態是通過執行動作(action)來達到的,動作的結果(result)導向另外一種狀態(state),這樣達到流程的流轉。在一個工作流實例的生命週期內通常有一個或者多個活動的狀態(state)。這些簡單的思想表現在工作流引擎的核心包裏面,並且通過一個簡單的XML文件來描述業務工作流程。

 

 一個簡單的流程描述xml文件是這樣的:

上圖xml流程的圖解狀態過程如下:


開始節點-》初始化動作--》步驟節點-》動作節點--》結束


工作流引擎的基本元素:
步驟(step)
    一個step描述的是工作流所處的位置。可能從一個step transtion到另外一個step,或者也可以在同一個step內流轉(因爲step可以通Status來細分,形成多個state)。一個流程裏面可以有多個step。


狀態(status)
    狀態status 是用來描述工作流程中具體step(步驟)狀態的字符串。eWorkFlow中預置了三種步驟的狀態 Underway(進行中)、Queued(等候處理中)、Finished(完成),用戶可以任意擴展自己的狀態。而工作流的狀態state則是由step(步驟)+status(步驟的狀態)組成的。工作流狀態state的升遷來達到工作流實例的推進。


流轉(transtion)
    一個工作流實例狀態state到另一個狀態state的轉移。


動作(action)
    action 觸發了發生在 step 內或 step 間的流轉,或者說是基於 state 的流轉。一個 step 裏面可以有多個action。action 和step 之間的關係是,step 說明“在哪裏”,action 說明“去哪裏”。 一個 action 典型地由兩部分組成:可以執行此action(動作)的condition(條件),以及執行此動作後的 result(結果)。   


任務(task)
  任務是當工作流狀態發生轉移的時候,產生的任務。任務可以指定爲一個具體的角色,人,或者羣組。任務具體,待辦,已辦,競爭辦理,代理待辦等多種功能。


條件(condition)
類似於邏輯判斷,可包含“AND”和“OR”邏輯。比如一個請假流程中的“本部門審批階段”,該階段利用“AND”邏輯,判斷流程狀態是否爲等候處理中,以及審批者是否爲本部門主管。


結果(result)
Result 代表執行action(動作)後的結果,指向新的 step 及其 step status,也可能進入 split 或者 join。result 分爲兩種, contidional-result (有條件結果),只有條件爲真時才使用該結果,和 unconditional-result(無條件結果),當條件不滿足或沒有條件時使用該結果。


分支/合併(split/join)
流程的分支和合並。分支是指流程下一步可以同時分發給多個步驟,分支split 提供多個unconditional-result(無條件結果);join 則判斷多個current step 的狀態提供一個 result(結果)。


子流程(subflow)
子流程,動作的結果可以指向一個子流程,子流程是一個獨立的流程,可以單獨啓動也可以嵌套在另外的流程中啓動,和主流程有同步或異步銜接的屬性。


自由流 (free transtion)
自由流是指當一個步驟的動作執行完成後,需要跳轉到任務的步驟。任意步驟,是指整個流程範圍內的任意步驟,包含執行過的或未執行過的。

 

回退流(return transtion)
 回退指當流程實例運行到某個步驟的時候,由於某些特殊原因需要回退到已經執行過的某個步驟上。回退是一種特殊的過程,只有在運行過程中才會明確指導要回退到那個步驟,回退往往需要執行業務補償。回退和自由流不一樣,會退會摸掉當前步驟到回退步驟之間的運行軌跡,就像初次運行到回退的步驟一樣,同時需要輔助業務補償來到達業務數據的回退。
   


      工作流引擎核心包內,對這些基本元素做解釋,並提供流程實例啓動,動作執行,任務完成等等API,達到對業務流程的抽象。業務系統集成工作流後,做好業務流程建模,然後利用自定義表單做好相應業務數據的處理,將表單掛接到流程上。啓動工作流系統,就可以實現業務系統了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章