摘要:簡述了有限狀態機的基本概念和傳統理論,提出了利用有限狀態機進行工作流引擎設計的基本思想,并結合實際應用給出了一種實現方法。
關鍵詞:工作流引擎;有限狀態機;對象
工作流技術正越來越廣泛地應用在各種領域,而工作流引擎又是工作流模型設計中的核心。采用工作流支持其經營過程的企業,工作流引擎可以看作其經營過程的任務調度器和資源分配器,是企業的業務操作系統,因此工作流引擎的性能和可靠性是企業經營過程的運行效率和安全性保障。本文將有限狀態機(Finite-State Machine,FSM)的理念應用于工作流引擎設計中,并結合Oracle,Java,Hibernate闡述了該工作流引擎的設計和實現方案。
一、相關概念
1.有限狀態機,又叫有限狀態自動機,是表示有限狀態(state)及在這些狀態間的轉移(transition)和動作(action)等行為的數學模型。定義:有限狀態自動機是五元組(■,S,S0,δ,F),這里的:■是輸入字母表(符號的非空有限集合)。表示該系統能接收的所有事件的集合。S是狀態的非空有限集合。S0是初始狀態,它是S的元素。在非確定有限狀態自動機中,S0是初始狀態的集合。δ是狀態轉移函數:δ:S×■→S。F是最終狀態的集合,S的(可能為空)子集。
2.有限狀態自動機可以表示為一個有向圖。有限狀態機是在自動機理論和計算理論中研究的一類自動機。其作用主要是描述對象在它的生命周期內所經歷的狀態序列,以及如何響應來自外界的各種事件(event)。有限狀態機的另一個特點離散性,它在任何時刻,都處于一個特定狀態。當在某一狀態下有事發生時,根據當前狀態和輸入事件的不同,選擇如何處理該事件及是否需要轉換到下一個狀態。
二、有限狀態機在工作流引擎中的應用
1.在工作流引擎設計中,有兩個重要對象:工作流過程和活動。它們都繼承于WfExecu是teOject對象,需要在各自的實現類中實現start(),suspend(),terminate(),abort(),resume(),complete()。一個過程包括若干活動,過程和活動的狀態是相互影響的。圖1為工作流引擎結構。
2.對工作流引擎來說,狀態是有限的,分別是NotStart(就緒態),Running(運行態),Suspended(掛起態),Abort(終斷態),Complete(完成態),Terminate(終止態)。各個狀態之間在一定條件下能進行轉換(如圖2)。
①過程初始化時,執行initProcess(),把數據從模型庫-->運行庫,完畢后設置過程實例的狀態為notStart,此時該過程下的起始活動實例狀態也設置為notStart。②過程實例狀態變遷為Running,起始活動狀態設置為Running,在找到后續實例后,設置本狀態為Completed,后續活動狀態為Running。③過程實例在notStart態,活動實例只能在1態和notStart態。④過程實例在Running態,所屬活動實例已經完成的,為completed態;有等待系統分配資源的notStart,有已運行過,但被剝奪了資源的suspended。⑤如果有活動實例變成了terminated或abort,歸屬過程也會被設置相應態。⑥當結束活動實例設置為Completed,過程實例設置為Completed,表明該過程順利完成。⑦活動處于Suspended態的,過程仍然可以為Running。
利用有限狀態機模型,可以把復雜的問題簡單化,還原事物的本質,極大地提高程序的可讀性及未來的可維護性。
參考文獻:
[1]李紅臣,史美林,陳信祥.工作流系統中的業務流程描述及分析[J].計算機研究與發展,2001,38(7).
[2]范玉順.工作流管理技術基礎[M].北京:清華大學出版社,2001.
[3]The Workflow reference model.Workflow Management Coalition[S].WfMC-TC-1003,1994.
基金項目:湖南省教育廳基金項目(09C645)