以有限狀態機為原理的工作流引擎,就是通過工作流狀態的改變來達到流程的流轉,因此工作流系統中的各種狀態概念顯然很重要。
首先我們來看,工作流引擎在給業務流程建模的時候,將乙個業務處理的場所定義成乙個步驟節點,然後通過處理業務的時候,"提交業務處理結果"這樣的動作來達到流程的流轉。流程流轉到哪個下一步驟,通過動作結果連線來導向。
工作流系統發生一次流轉,工作流狀態就會發生一次改變,即有限狀態機中的狀態公升遷,流程例項從一種狀態公升遷到另一種狀態是通過執行動作來完成的。
通常我們會理解發生一次流轉,是從a步驟--》x步驟,但如果一次流轉是 a步驟--》a步驟,原地踏步,好象沒有發生流轉,究竟發生沒有發生流轉呢?從工作流的狀態概念來理解,一定是發生了流轉。
工作流狀態 = 當前步驟 +當前步驟的狀態
工作流發生一次流轉,使得流程狀態發生一次公升遷,當a步驟--》x步驟,步驟發生了變化,狀態肯定公升遷了。當a步驟--》a步驟,a步驟的狀態一定是改變了,否則就沒有意義了。a步驟--》a步驟也需要通過執行乙個動作來完成,如果執行後,a步驟的狀態也未發生改變,哪就不需要設計這個動作,可以通過只儲存業務模組的業務資料來完成。
在乙個工作流例項的生命週期內通常有乙個或者多個活動的狀態,單線執行的,就乙個當前步驟+當前步驟的狀態。當有並行節點的時候,就會有多個當前步驟+當步驟的狀態。
步驟的狀態,我們可以預設幾種狀態,步驟在進行中,等候處理中,完成,返回處理。 這幾種狀態和業務無關,純粹只描述步驟的狀態。
當a步驟--》a步驟 步驟的狀態可以在這幾個狀態中改變。如當開始進入a步驟的時候,是進行中,當需要處理的事情太多,公升遷到等候處理,當離開a步驟時,步驟的狀態是完成,下乙個步驟為進行中。因此我們在流程定義的時候,進入步驟的狀態定義為進行中,離開定義為完成,便於我們更容易理解流程的流轉,以實際的業務處理無關。
流程例項狀態:建立,啟用,掛起,終止,完成,這是工作流引擎中另外乙個重要的概念,是描述流程例項的狀態。
建立:流程例項剛建立的時候。
啟用:流程正常流轉時候的例項狀態
掛起:當業務需要,暫停此業務的辦理時,由管理員或者有許可權的管理使用者來執行掛起流程。當其它問題處理完畢,需要繼續執行此流程的流轉時候,可以恢復到啟用,也可以直接就終止掉。
終止:當業務發生問題,或者異常的時候,有管理員或有許可權的使用者來直接終止掉此流程。終止後的流程不能再恢復成正常的繼續流轉。
完成:業務流程辦理完畢,走到盡頭了流程例項的狀態。
當流程例項狀態為掛起,流程例項就不能再發生流轉了,同時,任務也不能繼續執行,任務的狀態也為掛起。等流程例項狀態恢復後,任務才能繼續執行。要知道在工作流系統中任務的完成,是由執行流程的動作來完成的,也即提交動作上掛接的業務模組來完成任務的。因此,工作流例項狀態為掛起,任務也為掛起,工作流例項恢復後,任務也恢復到待執行,工作流例項終止後,任務也異常終止,工作流例項正常完成,例項關聯的所有任務也正常完成了。
於細微之處體現成敗,嚴謹這些工作流的狀態管理彰顯工作流軟體產品的品質。
精雕細琢工作流的狀態管理
以有限狀態機為原理的工作流引擎,就是通過工作流狀態的改變來達到流程的流轉,因此工作流系統中的各種狀態概念顯然很重要。首先我們來看,工作流引擎在給業務流程建模的時候,將乙個業務處理的場所定義成乙個步驟節點,然後通過處理業務的時候,提交業務處理結果 這樣的動作來達到流程的流轉。流程流轉到哪個下一步驟,通...
創業公司精雕細琢的17個優秀網頁設計
創業公司常常能給我們帶來程式設計客棧驚喜,不拘一格的工作方式,別開生面的商業模式,獨樹一幟的產品和服務,個性十足的工作控制項,集設計 野心 創意於一體,它們就是這麼令人著迷。但是對於網頁設計 師而言,最值得關心的還是他們呈現產品 表達自我 輸出獨有文化的官方 走在科技與時代前沿的創業公司們對於設計的...
狀態機工作流
狀態機工作流通常用於模擬不能被 人類行為時的事件流的一種替代方案,例如,在乙個審批流程中,當事件驅動流程執行的過程,通常作為外部事件和導向轉換,通常作為外部事件和引導其他可能的狀態之間的轉換。狀態機工作流的必須包括initial狀態和 final 狀態,用以表示該程序的啟動和完成狀態。這是乙個靈活的...